📄 Guide
Settlement is the second stage of the card funding lifecycle: after authorization has frozen the funds, the merchant submits the final amount to the card network, the network and the issuer post the actual amount, and the corresponding hold is released. Settlement is the mechanism; statements are the queryable view it produces. In the DeCard-Managed model, the whole settlement process happens inside DCS: on receiving the settlement message from the card network, DCS moves the corresponding statement from not posted (NOT_POSTED) to posted (POSTED), draws down the user’s frozen balance, performs the actual deduction and applies the matching asset movement on the user’s own account. You never have to track holds yourself or post entries manually after a settlement webhook, which is exactly the convenience the DeCard-Managed model buys you.
The core semantics of settlement is the transition from outstanding to posted, expressed by two sets of fields:
- At statement level: the statement
typemoves betweenNOT_POSTED(statement not yet issued) andPOSTED(statement issued). - At line item level:
postIndicator(1posted,0outstanding) tells you whether each line item has landed in an issued statement.
The complete definition of the balance model (free/freeze/totaland the custody strategies) is in Account and Asset Model (Ledgering).
Five settlement shapes and refunds
Settlement can take several shapes. Each one below explains how it arises and how DCS internally releases the hold and posts the amount, so you never have to write your own logic per shape.Standard settlement
The most common shape: the merchant settles the full authorized amount. On receiving the settlement message, DCS releases the entire authorization hold and posts the authorized amount.Partial settlement
The merchant settles less than the authorized amount (a restaurant bill settled without the tip, for example). DCS releases the full authorization hold, posts only the actual amount, and the excess hold returns to the available balance automatically.Overage settlement
Certain merchant categories, such as dining and hotels where tips or surcharges apply, may settle slightly above the authorized amount. Once the checks pass, DCS releases the original hold and posts the actual amount.Overage settlement only takes effect within the limits allowed by card network rules and the relevant Merchant Category Codes (MCC); requests above the permitted ceiling are rejected.
Multiple settlement
One authorization settled in several batches, as with staged e-commerce shipments. DCS keeps the authorization hold through the early batches and only releases it and posts once every batch has settled.Force settlement
Settlement with no prior authorization, as in offline or disconnected scenarios such as in-flight shopping. DCS has no hold to release and posts directly against the available balance.Force settlement only applies to certain merchant categories; offline scenarios normally allow a tolerance of up to 15% to absorb adjustments such as shipping and tax.
Refund
A refund is a negative transaction that credits the amount back to the cardholder’s account and may not reference an original transaction. DCS validates the refund request and posts it directly, increasing the available balance.
A refund can be initiated at any time after the original transaction has completed. In the statement detail, debitCreditIndcator=C marks a refund credit.
The reconciliation webhook after settlement
Once settlement completes, DCS pushes theCARD_TRANSACTION_SETTLEMENT webhook event carrying the settled amount (settledAmount), the settlement currency (settledCurrencyCode), the original transaction amount and currency (transactionAmount / transactionCurrencyCode), the direction (direction), the external transaction ID (externalTranId), the last 4 digits of the card number (cardNumber), the transaction type (transactionType, the single-letter code R/C/Q/P), the local transaction date and time (localTransactionDate / localTransactionTime), the merchant information (cardAcceptorNameLocation, mcc, merchantCountryCode) and the remaining fields. For every webhook field, the signature verification and a sample JSON payload, see Webhook & WebSocket.
Authorization webhook versus settlement webhook
What you need to do
- Query statements: use
statementsandstatements/detail(see the next section) to confirm the settled amount and its line items. - Reconcile against the webhook: use the
CARD_TRANSACTION_SETTLEMENTevent to compare DCS settlement records with your own books asynchronously. Do not use it to post entries manually. - Resolve state by ID (optional): when you hold a set of transaction IDs and are unsure whether they have posted, call
POST /card/v1/transaction/id/resolve(see below).
In the DeCard-Managed model, posting and the balance deduction are already completed inside DCS, so the partner never needs to act on this webhook to change balances on the DCS side.
How to query settlement results
Once settlement completes, the endpoints below return statements and their line items. Both identify the card withcardId.
See also/card/v1/fiat/transactions(GET, the fiat transaction records). ItspostingTransTypefield classifies the transaction after settlement; it is semantically related totransactionTypein the statement detail but is a different field name, so do not confuse the two. For details, see Managing Transactions.
Statement list
Returns a user’s card statements, including posted (POSTED) and not yet posted (NOT_POSTED) ones, with pagination and filtering.
Prerequisite: the user is registered, holds a card and has transacted.
Request (v2, GET /card/v2/statements):
Statement detail
Returns the line items of a givenstatementId, including merchant, amount, currency, posting state and asset movement records.
Request (v2, GET /card/v2/statements/detail):
For the field definitions, see Managing Transactions › Reporting Field Descriptions.
Asset movement detail: assetMovements
assetMovements is the field that makes the DeCard-Managed model distinctive, because it connects card settlement to the on-chain asset movements on the user’s own account and ledger. While querying a card purchase, you can see directly which of the user’s crypto assets (USDT, USDC and so on) were deducted or returned, which keeps the flow of funds transparent end to end.
The outer
assetMovementStatus tells you whether the funds behind this settlement have finished processing (1 complete, 0 incomplete).
This field arrived with the response format update in August 2025 and is returned by the statement detail endpoint. It reflects the transparency of DCS’s own ledger (Crypto-Ledger) mode, where card spending draws down stablecoins directly.
Resolving posting state by ID: transaction/id/resolve
When you only hold a set of transaction IDs and need to know quickly whether each is outstanding or posted, use the resolution endpoint POST/card/v1/transaction/id/resolve. It is the by-ID entry point into the outstanding-to-posted semantics described above.
Request (POST /card/v1/transaction/id/resolve):
How to read it:posted=falsewith anoutstandingTransactionIdmeans the transaction is still before posting;posted=truewith apostedTransactionIdmeans settlement and posting are complete.
Response envelope and error handling
Every endpoint on this page uses the site-wide response envelope{code, message, messageDetail, data} (there is no success boolean). The success code literal is SYS_SUCCESS. messageDetail is usually null; when it is not, the structured object contains the following sub-fields:
On failure,
code and message explain the cause, such as a card or user that does not exist. The example below is redacted and its error code is a placeholder; in simple failure cases messageDetail is usually null:
Next steps
- For the hold decision that precedes settlement (the authorization stage), read Authorizing Transactions.
- For the mental model of the transaction flow (the two stages, the Outstanding bridge, the invariants), read Transaction Lifecycle · Overview.
- For the
free/freeze/totalbalance model and the custody strategies, read Account and Asset Model (Ledgering). - To integrate webhook notifications and verify their signatures, read Webhook & WebSocket.

