Payments
The platform payment resource represents a normalized instruction and lifecycle across all supported routes.
This page describes the normalized, business-facing model. For the exact
request/response shapes available today, see the Payments API
— money movement is created with POST /v1/transfers and read back as
transactions (GET /v1/transactions) and payments (GET /v1/payments).
Payment object (normalized model)
A normalized payment record includes, depending on route:
id: CashXChain payment ID.source_account_id: account that owns the payment.source_wallet_id: balance container to debit.beneficiary_id: recipient.quote_id: FX quote, if conversion is involved.amount: amount to debit or send.currency: source currency.target_amount: expected beneficiary amount, if known.target_currency: beneficiary currency.status: normalized lifecycle status.purpose: business reason.reference: customer-visible reference.metadata: customer-defined key-value pairs.timeline: status history.fees: fee breakdown.
Create payment flow
- Confirm the account is active.
- Confirm the recipient/contact is usable.
- Request and (if needed) lock an FX quote.
- Create the transfer (
POST /v1/transfers). - Track the resulting transaction status.
- Handle
executing,failed,rolled_back, andcompletedstates. - Reconcile with transactions and statements.
Metadata
Use metadata to attach internal references:
{
"metadata": {
"invoice_id": "INV-2026-1042",
"erp_vendor_id": "VEN-4481",
"department": "supply_chain",
"created_by": "treasury-bot"
}
}
Metadata is not a substitute for required compliance fields. Do not store sensitive secrets in metadata.
Cancellation
Cancellation is only possible while a payment is still cancellable. Once a partner or rail has executed a step, cancellation may no longer be available and a return or reversal process may be required.
Returns
A completed payment may later be returned by a beneficiary bank or downstream rail. Your system should handle payment.returned events and reconcile the corresponding balance movement.