Skip to main content

📄 Guide

Unlike issuing or transfers, the transaction leg needs no synchronous action from you — authorization completes on the DCS side in real time, and your job is to consume the events well: record authorization results, take your configured part in 3DS challenges, and update your books when settlement and debt events arrive. The life-cycle concepts are in The transaction life cycle.

Real-time authorization

When the cardholder pays, DCS checks the entity’s status, the velocity rules and the available balance in real time, and pushes the webhook CARD_TRANSACTION (status=APPROVED / DECLINED). Key payload fields:

Handling 3DS challenges

When an online purchase triggers 3DS, DCS pushes the webhook AUTHORISATION_3DS_CHALLENGE; handle it per the mode configured at onboarding (the mode is set per card BIN range on the issuing side; the division of work is detailed in Handling 3DS challenges): Key challenge fields: challengeId, status, cardId / organizationId, expiryTime, the amount and currency, merchant details (merchantName / merchantCountryCode / mcc) and challengeFlowType (the mode); OTP_DELEGATE additionally carries encryptedOtpPasscode / phoneNumber / email (ciphertexts) and iv. The OOB callback: POST /open-api-corp/card3ds/v1/authenticate — send challengeId (from the challenge event) + action (APPROVE / REJECT) + optional operateTime. Repeating the same result is idempotent; calling it against an OTP_DELEGATE challenge returns CARD_3DS_CHALLENGE_NOT_FOUND.
Challenges are valid for about 300 seconds and time out as rejected; the result-confirmation endpoint applies to OOB mode only.

Settlement and debt

  • Settlement: card settlement pushes CARD_TRANSACTION_SETTLEMENT; the transaction moves from an authorization hold (UNPOSTED) to posted (POSTED) and lands on the cycle’s statement — records and statement queries are in Funding and reconciliation.
  • Debt: delayed settlement or merchant over-capture can drive the available balance negative; the account enters a debt state and CARD_TRANSACTION_DEBT is pushed — remind the customer to repay on schedule (repayment state in the statement’s paymentStatus).

Next steps