Authorization: the decision comes back to you
Whether you want to own cardholder limits outright or apply your own risk rules transaction by transaction, authorization forwarding lets you decide, at the moment of every card payment, whether to approve or decline. DCS is a licensed issuer with its own BIN: we forward each real-time network authorization request to you securely and place or release the fund hold on your behalf. The limits belong to the partner, and so does the authorization decision. An authorization happens the instant a cardholder pays. It is a real-time decision and moves no money. Funds actually leave the account later, at settlement (see Transaction records and Authorization and settlement).Mental model: the life of one authorization
Under Partner-Managed, the decision always stays with the partner. The forwarding channel adds two-way RSA encryption and signing, so no business field ever travels in clear text.
Transaction direction (direction)
INCOMINGauthorizations — refunds with an original authorization, reversals — are forwarded throughauthUrlas well. DCS recommends that the partner simply return00(approve) for theseINCOMINGauthorizations; the partner may still decline in abnormal cases, such as when anINCOMINGrelease exceeds the amount currently held.
Authorization type (authType)
authType tells you how an authorization record came into being, so you can separate a live authorization from a system back-fill or release.
Only
NORMAL authorizations are forwarded through authUrl for the partner’s real-time decision; FORCE_AUTH / EXPIRED_RELEASE / STATUS_DIFF_RELEASE are system-side authorizations that never go through authUrl and are only pushed as receipts through the AUTHORISATION_RESULT webhook.
The field appears both in the authorization webhook request and in the daily authorization report (see Authorization report).
the
authType of an authorization forwarding notification and the sandbox field APISimulationAuthRequest.authType (EXPEND / REFUND / REVERSAL) are two independent enumerations, one for real authorization callbacks and one for sandbox triggers. Do not mix them.Authorization transaction type (transactionType)
transactionType describes the nature of the cardholder’s transaction, which helps both your authorization decision and your reconciliation breakdown.
Authorization result (responseCode): your reply
Once the partner has decided, it returns the outcome to DCS inresponseCode:
How it is stored: the authorization forwarding notification is answered withresponseCode, and the persisted mapping is fixed at00 → approveFlag=A, with01/11/21and any other non-00value mapping toapproveFlag=D.approveFlagappears in the authorization result webhook and the daily authorization report. In production the synchronous response window is 2.5 seconds; the partner must reply within it. A timeout is treated asresponseCode=21/DAPI_AUTH_ENTERPRISE_TIMEOUT_REJECT, and a real-time authorization is never retried.
The forwarding notification: who does what on the secure channel
An authorization request is not an ordinary webhook. It travels over a channel protected by two-way RSA encryption and signing, with every business field wrapped insideencryptedData rather than sent in clear text.
Prerequisites (partner)
- Your enterprise has been created and both
authUrlandexternalPublicKey(your RSA public key) are configured. See First steps. - The IP allowlist for the authorization forwarding notification is in place.
- You have issued a card successfully.
The sandbox DCS RSA public key can be copied straight from the Authentication guide; for the production key, contact the DCS team.
The round trip
Signature algorithm: RSA-SHA256 (
SHA256withRSA), 2048-bit keys, with chunked encryption and decryption (245-byte encryption blocks, 256-byte decryption blocks). Full Java sample code is on the Authentication guide page.
Notification URL template:https://{domain}/xxx/v1/auth-notification(the POST that DCS sends to yourauthUrl).
Request and response structure
Request header
Request body
Business fields inside encryptedData
cardAcceptorNameLocation
A fixed 40-character text; each segment is left-justified and right-padded with spaces.
Visa
Mastercard
Response body
Structure inside
encryptData:
the encrypted field on the request side is
data.encryptedData (nested inside data), while on the response side it is encryptData (top level, spelled differently). The names do not match, so read each one from its own structure and never treat them as interchangeable.Minimal authorization request example
This forwarding notification is a dedicated secure channel from DCS to yourauthUrl. It does not use the common response envelope{code, message, messageDetail, data}of the/open-api/endpoints, which applies only to the calls you initiate (see Authentication and request conventions).
A walkthrough of one authorization
Let’s tie the fields and the flow together with one realistic purchase: your cardholder carries a USD card and spends 3,000 JPY at a supermarket in Tokyo.
Three details worth noting:
- The two amount pairs are not duplicates:
acquirerAmount/acquirerCurrency(3,000 JPY) is what the cardholder spent at the merchant;amount/currency(20.45 USD) is the settlement view converted at the network rate — freezing, settlement and reconciliation all follow the settlement view. - You only decide; you never move funds: after you return
00, DCS performs the freeze on the network side. If you return01(insufficient funds) or11(transaction not allowed), the flow ends at row three: the purchase fails at the till and no funds move. - The decision window is 2.5 seconds: a timeout is treated as
21(no response) and real-time authorizations are never retried, so keep your whole chain — verify, decrypt, check limits — inside the window.
What authorization touches
- Enterprise: the partner makes the decision, and the hold or release is booked against the enterprise security deposit or against the cardholder limits the partner maintains.
- Card: every authorization request carries a
cardId, and the card’s activated, frozen or canceled state determines whether the authorization can succeed. Freezing a card triggers the release of its holds. - Outstanding: the bridge between authorization and settlement. The authorization stage accumulates the held amount, and settlement draws it back down to zero. See Authorization and settlement.
- Transaction: authorization comes first; a single transaction record can reference several
authIdvalues, and only approved authorizations ever produce a movement of funds.
Next steps
- Want to run an authorization end to end in the sandbox without a card network? Use
POST /open-api/simulation/v1/fund-authfrom Sandbox: simulating transactions (inputcardId/authType/amount/currency, returnsapprovedpluserrorCode). - Want to know how the money settles afterwards? See Authorization and settlement.
- Want to configure webhooks and their events? See Webhooks: configuration.
- For decline reasons and error codes, see Authorization declines and error codes.

