Transactions
A transaction is a card spend event recorded from the card network. Every swipe, tap, or online purchase generates one or more transaction records in the CaaS API. Transactions are append-only — they are never edited or deleted. A reversal creates a new record, not a modification of the original.Transaction Types
Transaction Statuses
The Authorization → Clearing Lifecycle
Understanding how authorizations and clearings relate is critical for reconciling card spend.What “available balance” means
When an authorization is placed, the card’s available balance drops immediately. The funds are not debited until clearing. Between authorization and clearing:- Available balance = Total balance − sum of pending authorization holds
- If you call
GET /cards/{id}the balance reflects this
Declined Authorizations
A declined authorization hastype: AUTHORIZATION and status: DECLINED. The declineReason field contains a brief reason code from the card network (e.g. INSUFFICIENT_FUNDS, CARD_FROZEN, INVALID_CARD).
A declined authorization does not affect balance — no hold is placed.
Reversals
A reversal always has arelatedTransactionId pointing to the original transaction it reverses. Reversals are generated by:
- The merchant cancelling an authorization before it clears
- A post-clearing refund processed by the merchant
- FYATU reversing a fee on dispute
Amount Fields
Each transaction exposes two amount blocks:
For domestic transactions,
amount and billingAmount are the same currency and exchangeRate is null. For cross-border (e.g. a USD card used at a EUR merchant), billingAmount reflects the EUR amount and exchangeRate shows the conversion rate applied.
Merchant Data
Transactions include structured merchant information when available from the card network:
MCC codes are useful for categorizing spend (e.g. detecting travel, entertainment, or utility payments in your dashboard).
Transaction Webhook Events
You receive real-time webhook notifications for every significant transaction event:
A card charge is delivered as a single
TRANSACTION_PROCESSED event — there is no
separate authorization-then-settlement pair. Use the status field to tell apart a
completed charge (COMPLETED), a reversal/refund (REVERSED), and an FX settlement
adjustment (ADJUSTED).
TRANSACTION_AUTHORIZED, TRANSACTION_CLEARED, and TRANSACTION_REVERSED are
deprecated in favor of TRANSACTION_PROCESSED. They remain fully supported for
existing integrations — no migration is required. New integrations should use
TRANSACTION_PROCESSED.Example: TRANSACTION_PROCESSED webhook
Querying Transactions
Transactions can be queried at two levels: All transactions across your program (scoped by API key environment):GET /transactions:
Reconciliation Pattern
To reconcile what your cardholders have spent:Endpoints
GET /transactions— List transactionsGET /transactions/{id}— Get transaction

