Skip to main content

Authorization: DCS decides for you, in real time, inside the system

In the DeCard-Managed model, DCS makes every authorization decision for you in real time: it checks the card status, the available balance and the limits, then approves or declines on the spot, with no per-transaction response from you. As a licensed issuer running its own BINs, DCS connects directly to the card networks and holds the cardholder’s own balance in custody, which takes the most latency-sensitive and reconciliation-sensitive question in the whole flow, whether to let a payment through at the moment the card is presented, off your integration list entirely. Precisely because the decision happens inside DCS, the authorization decision needs no integration work on your side: there is no auth_url, no per-transaction response and no authorization decision webhook to register. This page explains how the mechanism works and the few things you actually need to do; for the mental model of the transaction flow (the two stages of authorization and settlement, the Outstanding bridge, the invariants), see the concept page Transaction Lifecycle · Overview.

How DeCard-Managed differs from Partner-Managed

In the DeCard-Managed model, therefore, do not try to configure default authorization settings or register an authorization webhook to approve and decline: there is no authorization forwarding endpoint, decision callback or auth_url configuration here. If you genuinely need to own the authorization decision, that is the Partner-Managed model and is out of scope for this documentation set.

How an authorization is handled in the DeCard-Managed model

The moment the cardholder swipes, taps or inserts the card, the merchant requests authorization from the card network and DCS decides internally:
  1. System checks (any failure results in a decline):
    • the card status must allow transactions (not FROZEN, not CANCELLED);
    • the user’s transaction status, since card transactions are blocked for that user when forbidCardTransaction = true in GET /account/v1/user-status;
    • the user’s available balance (free) must fully cover the authorization amount;
    • card-level and user-level limits and risk rules.
  2. Funds are frozen (no actual deduction takes place): on approval the corresponding amount moves from available to frozen, so free decreases, freeze increases and total is unchanged.
  3. Result notification: DCS notifies the authorization result through the CARD_TRANSACTION webhook (response = A for approved, D for declined) and the balance change through the BALANCE_CHANGE webhook (freeDelta < 0, freezeDelta > 0).
  4. Settlement follows: once the merchant submits the final amount, settlement releases the hold and performs the actual deduction.
Both steps that really change a user’s balance, the freeze at authorization and the deduction at settlement, land on that user’s own account held in custody by DCS. That is what fundamentally separates this model from Partner-Managed, where the reserve sits with the partner. For details, see Account and Asset Model (Ledgering).

The journey of one authorization

DeCard-Managed authorization decision flowDeCard-Managed authorization decision flow

The two notifications you receive (key fields)

Authorization results reach you as two kinds of webhook or WebSocket event. The fields below are the ones most used for reconciliation; the full detail lives in Webhook & WebSocket and on the concept page: The full field tables for both webhooks are in the “Authorization webhook field definitions” section below; the step-by-step sequences for the three authType values are in “The three scenarios by authType”.

What you need to do

In other words, whether an authorization succeeds depends mainly on whether the user’s own balance is sufficient and whether card transactions are blocked for that user, not on any response from you.

Verifying an authorization in the sandbox (no card network needed)

Without connecting to a card network, you can trigger an authorization through the sandbox simulation endpoints and verify your webhook handling and balance logic: POST /simulation/v2/fund-auth
These are sandbox simulation endpoints, not production authorization decision endpoints. The DeCard-Managed model has no production authorization API for a partner to decide on.
The response envelope is the site-wide {code, message, messageDetail, data}, with the success code literal SYS_SUCCESS:
  • data.approved (boolean): whether the authorization was approved.
  • data.errorCode (string): the error code when it was not.
  • messageDetail: an optional display object whose fields are usually empty strings on success.
For more fund-auth sandbox scenarios, see Simulating Transactions.

Authorization webhook field definitions

Authorization results and balance changes reach the partner through two webhooks. Authorization transaction fields always come from CARD_TRANSACTION; balance changes always come from BALANCE_CHANGE.

CARD_TRANSACTION (authorization transaction, all fields)

The fields are as follows:
Direction is expressed by direction (DEBIT/CREDIT); the nature of the transaction is expressed by transactionType (R/C/Q/P).

BALANCE_CHANGE (balance change, all fields)

An approved authorization freezes funds: the money never leaves the account, it only moves between the available and frozen columns, and the real deduction happens later at settlement (see Settlement). That movement is notified through BALANCE_CHANGE: An example (redacted; the semantics are a hold of 2.92, available -2.92 and frozen +2.92):
For the overall model behind available and frozen balances (free / freeze / total) and the custody strategies, see Account and Asset Model (Ledgering).

Authorization types (authType)

authType states the nature of an authorization. The DeCard-Managed model uses only the following three:

The three scenarios by authType

The three authType values differ in how they affect the account and which webhooks you receive.

EXPEND, a purchase

Sandbox purchase authorization simulationSandbox purchase authorization simulation
  • Approved: the available balance decreases and the frozen balance increases, with response=A and direction=DEBIT.
  • Declined: insufficient balance, a card that cannot transact, forbidCardTransaction=true and similar cases give response=D and create no hold.

REFUND, a return

Sandbox refund authorization simulationSandbox refund authorization simulation
  • A return credits the card, so direction=CREDIT and transactionType=P, and originalExternalTranId is returned to link back to the original transaction.
  • The credited amount only reaches the user’s available balance once settlement completes (see Settlement).

REVERSAL, a purchase reversal

Sandbox reversal simulationSandbox reversal simulation
  • A reversal of the original purchase authorization returns direction=CREDIT and originalExternalTranId, and releases the amount frozen by the earlier EXPEND (frozen back to available).
  • The exact values of direction and transactionType are whatever the CARD_TRANSACTION webhook actually returns.

About 3DS

3DS strong authentication is part of the authorization path and is completed by DCS on the issuing side; see 3DS strong authentication.

Next steps