Skip to main content

Authorization and settlement: every scenario

Whether your cardholder is paying an online merchant, withdrawing cash at an ATM or returning goods for a refund, DCS splits every movement of funds into two clean stages for you: the authorization stage places or releases a hold, and the settlement stage performs the real debit or refund. This page lists every combination of the two so that you can map each business situation to your own books during integration. DCS is a licensed issuer and its own BIN sponsor: holds and debits are executed by DCS on the card network side, while the authorization decision stays with the partner.
Before reading on, it helps to know how three entities relate to each other. An authorization records the decision to hold or release funds, an Outstanding tracks how much is currently held as amounts accumulate and are drawn down, and a transaction records the debit or refund that actually happened. See Authorization and Transaction records.

Mental model: Auth, Outstanding, Transaction

Auth, Outstanding and TransactionAuth, Outstanding and Transaction
  • Once an authorization is approved, DCS places the hold and creates (or reuses) an Outstanding, whose amount carries the total currently held.
  • Later authorizations such as incremental authorizations and reversals use originalAuthId to find the outsId of the first authorization, then add to or subtract from the same Outstanding.
  • When settlement arrives, DCS draws the Outstanding down to zero and creates a transaction record. If the settled amount differs from the amount held, DCS automatically back-fills a FORCE_AUTH authorization to top up or release the difference.
Key fields: authId (authorization ID), outsId (bill or Outstanding ID, the link between authorization and settlement), originalAuthId (the authorization being referenced), direction (OUTGOING holds, INCOMING releases) and authType (authorization type). The full field list is in the authorization data structure.

Authorization type (authType)


Scenario overview

The 13 scenarios below cover every combination of authorization and settlement. The “Outstanding, final” column is 0 throughout, which is what tells you the fund lifecycle has closed.
Reading convention: each action sequence is annotated as direction / authType / outsId(change in amount). A means approved (approveFlag=A) and D means declined.

Scenario detail

Scenario 1: normal authorization, normal settlement

The base case: one hold, one settlement debit, amounts matching exactly.
  1. Authorization: OUTGOING, hold 100 USD, authId1 (NORMAL, A), outsId1 (amount=100)
  2. Settlement: OUTGOING, debit 100 USD, transactionId1, outsId1 (amount=100→0)

Scenario 2: normal authorization, incremental authorization, normal settlement

The merchant holds an additional amount, as a hotel does when adding a gratuity. Several authorizations share one Outstanding.
  1. Authorization: OUTGOING, hold 100 USD, authId1 (NORMAL), outsId1 (amount=100)
  2. Authorization: OUTGOING, hold 20 USD, authId2 (NORMAL), outsId1 (amount=100→120)
  3. Settlement: OUTGOING, debit 120 USD, transactionId1, outsId1 (amount=120→0)
The incremental authorization uses originalAuthId to find the outsId of the first authorization and adds to the same Outstanding.

Scenario 3: normal authorization, partial reversal, normal settlement

The cardholder returns part of the purchase, the merchant sends a partial reversal, and settlement follows for the remainder.
  1. Authorization: OUTGOING, hold 100 USD, authId1 (NORMAL), outsId1 (amount=100)
  2. Authorization: INCOMING, release 30 USD, authId2 (NORMAL), outsId1 (amount=100→70)
  3. Settlement: OUTGOING, debit 70 USD, transactionId1, outsId1 (amount=70→0)

Scenario 4: normal authorization, full reversal

The cardholder cancels, the merchant sends a full reversal, and no settlement follows.
  1. Authorization: OUTGOING, hold 100 USD, authId1 (NORMAL), outsId1 (amount=100)
  2. Authorization: INCOMING, release 100 USD, authId2 (NORMAL), outsId1 (amount=100→0)
Once the Outstanding is back to zero, there is nothing left to settle.

Scenario 5: normal authorization, excess capture

The settled amount is larger than the amount held, because of an exchange-rate move or an added fee. Within the same database transaction, DCS back-fills an OUTGOING FORCE_AUTH for the difference.
  1. Authorization: OUTGOING, hold 100 USD, authId1 (NORMAL), outsId1 (amount=100)
  2. Settlement processing, in one transaction:
    1. Authorization: OUTGOING, hold 50 USD, authId2 (FORCE_AUTH), outsId1 (amount=100→150)
    2. Settlement: OUTGOING, debit 150 USD, transactionId1, outsId1 (amount=150→0)

Scenario 6: normal authorization, under capture

The settled amount is smaller than the amount held. Within the same database transaction, DCS back-fills an INCOMING FORCE_AUTH to release the surplus.
  1. Authorization: OUTGOING, hold 100 USD, authId1 (NORMAL), outsId1 (amount=100)
  2. Settlement processing, in one transaction:
    1. Authorization: INCOMING, release 20 USD, authId2 (FORCE_AUTH), outsId1 (amount=100→80)
    2. Settlement: OUTGOING, debit 80 USD, transactionId1, outsId1 (amount=80→0)

Scenario 7: normal authorization, partial capture, final capture

Multiple captures, identified by the multiClearInd field on the transaction record: every capture but the last one only draws the Outstanding down, and the difference is checked on the final one.
  1. Authorization: OUTGOING, hold 100 USD, authId1 (NORMAL), outsId1 (amount=100)
  2. Settlement: OUTGOING, debit 60 USD, transactionId1 (multiClearInd=P), outsId1 (amount=100→40)
  3. Settlement: OUTGOING, debit 40 USD, transactionId2 (multiClearInd=F), outsId1 (amount=40→0)
If a difference remains after the final capture, DCS back-fills a FORCE_AUTH following the logic of scenarios 5 and 6.
multiClearInd values: O for an ordinary single capture, P for a capture that is not the last one, F for the capture that completes the set. See Capture scenarios.

Scenario 8: forced capture with no authorization

For an offline transaction, settlement arrives with no matching authorization, so DCS back-fills a complete Auth plus Outstanding within the same database transaction.
  1. Settlement processing, in one transaction:
    1. Authorization: OUTGOING, hold 100 USD, authId1 (FORCE_AUTH, A), outsId1 (amount=0)
    2. Settlement: OUTGOING, debit 100 USD, transactionId1, outsId1 (amount=0)
The Outstanding amount is set straight to 0, the FORCE_AUTH is auto-approved, and all three records are created in the same transaction.

Scenario 9: forced refund with no authorization

A refund settles with no matching authorization, so DCS creates a new Outstanding purely to keep the records linked.
  1. Settlement processing, in one transaction:
    1. Settlement: INCOMING, refund 50 USD, transactionId1, outsId1 (amount=0)
Unlike a forced capture, the INCOMING direction does not back-fill an Auth; only the Outstanding is created, for linkage.

Scenario 10: enquiry authorization

A zero-amount enquiry authorization that only checks whether the card is valid. Nothing is held.
  1. Authorization: OUTGOING, hold 0 USD, authId1 (NORMAL), outsId1 (amount=0)
An Outstanding is still created (amount=0), but no funds are held. The partner still receives the authorization webhook, with transactionType=Q.

Scenario 11: authorization expiry release

The authorization passed its validity period without settling, and the network instructs the release of the held funds through a settlement file.
  1. Authorization: OUTGOING, hold 100 USD, authId1 (NORMAL), outsId1 (amount=100)
  2. (Validity period passes, no settlement received)
  3. Authorization: INCOMING, release 100 USD, authId2 (EXPIRED_RELEASE), outsId1 (amount=100→0)
The release is applied only if the amount matches the Outstanding exactly and in the same currency. A mismatch raises an internal DCS alert and is not processed.

Scenario 12: authorization timeout mismatch

The network declined the authorization on timeout while DCS may already have approved it, so reconciliation has to correct the difference.
  1. Authorization: OUTGOING, hold 100 USD, authId1 (NORMAL), outsId1 (amount=100)
  2. (Network declined on timeout, DCS had approved, states disagree)
  3. Authorization: INCOMING, roll back 100 USD, authId2 (STATUS_DIFF_RELEASE), outsId1 (amount rolled back)
How it is handled:
  • DCS approved (approveFlag=A) and the network declined on timeout: a reverse authorization is created (STATUS_DIFF_RELEASE, INCOMING) and the Outstanding is rolled back.
  • DCS declined (approveFlag=D): the states agree, nothing to do.
  • No related authorization found: a record is created (STATUS_DIFF_RELEASE, approveFlag=D) for audit only, with no effect on funds.

Scenario 13: cash withdrawal (normal settlement plus withdrawal fee)

The authorization stage holds the total of principal and fee. At settlement the fee portion is released first, following the under-capture logic, and the principal is debited; the fee is then debited through its own FORCE_AUTH and settlement pair.
  1. Authorization: OUTGOING, hold 110 USD, authId1 (NORMAL), outsId1 (amount=110)
  2. Principal settlement processing, in one transaction:
    1. Authorization: INCOMING, release 10 USD, authId2 (FORCE_AUTH), outsId1 (amount=110→100)
    2. Settlement: OUTGOING, debit 100 USD, transactionId1 (category=CASH), outsId1 (amount=100→0)
  3. Fee forced-posting settlement processing, in one transaction:
    1. Authorization: OUTGOING, hold 10 USD, authId3 (FORCE_AUTH), outsId2 (amount=10)
    2. Settlement: OUTGOING, debit 10 USD, transactionId2 (category=CASH_FEES), outsId2 (amount=10→0)
How it is handled:
  • The authorization holds 110 USD (100 principal plus 10 fee), and outsId1 carries the total held.
  • Settling the principal, DCS sees that the settled amount (100) is below the Outstanding (110), so under-capture logic back-fills an INCOMING FORCE_AUTH releasing the 10 difference before debiting 100.
  • The fee goes through forced posting on its own: a new outsId2 is created, a FORCE_AUTH holds 10, and 10 is settled and debited immediately.
How do you tell withdrawal principal from fee? By the category field on the transaction record. The authoritative category values are in the transaction category dictionary: withdrawal principal is CASH and the withdrawal fee is CASH_FEES.

A walkthrough: hotel pre-authorization to posting

Here is scenario 3 (partial reversal) on a real timeline — what you receive at each touchpoint, what you do, and how the books tie out. The case: your cardholder books three hotel nights with a 100 USD pre-authorization, cancels one night after check-in (the hotel reverses 30 USD), and the hotel captures 70 USD after checkout. Three reconciliation take-aways:
  • outsId1 is the primary key of this timeline: both authorizations and the settlement hang off the same Outstanding, so grouping by outsId matches authorizations to settlements — no guesswork needed.
  • Reversals also ask for your decision: INCOMING releases are forwarded through authUrl too. DCS recommends simply returning 00 to approve; the only business reason to decline is an abnormal case such as a release larger than the amount currently frozen.
  • Settlement appears only in the daily files: the capture on Day 4 produces no real-time callback, so your view of settled money comes entirely from the daily transaction report — which is exactly why end-of-day reconciliation is the source of truth for funds.
If the hotel had captured 75 or 60 instead of 70 on Day 4, DCS would automatically create a FORCE_AUTH to top up or release the difference, following scenarios 5/6 above; you would see that system-created record in the authorization report, with no real-time action needed on your side.

What the partner does

The request and response structures of the authorization webhook, the two-way RSA signing and the responseCode values (00 approve, 01 insufficient funds, 11 transaction not allowed, 21 no response) are in Webhook events and schema.

Next steps