Skip to main content

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 has type: 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 a relatedTransactionId 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):
A single transaction:
Available query filters for GET /transactions:

Reconciliation Pattern

To reconcile what your cardholders have spent:
Use CLEARING transactions (not AUTHORIZATION) for financial reconciliation. Authorizations represent intent; clearings represent actual settled spend.

Endpoints