Execute a transaction (send)
Executes a transfer by accepting an open quote. Reference the quote by its ID; OMS pulls funds from the quote’s source and delivers them to its destination. Pass an Idempotency-Key header to safely retry without sending twice.
Authorizations
Token from POST /auth/token
Headers
Required on POST and PUT requests. Use a unique value per logical mutation attempt, for example a UUID.
Body
Request body for executing a transaction. References the quote to accept; the card and source wallet are taken from that quote. An external buy delivers to the quote's destination address when the destination is walletExternal, and otherwise to the customer's custody wallet on the destination chain; with no such address it is rejected with 422 ExternalDeliveryWalletRequired.
The quote to accept (qt_ prefix). Must be open with non-expired pricing.
Device fingerprint of the end user, used for risk screening.
Risk-session identifier generated client-side by the Sardine SDK (initialized with the customer's riskId). Required when the precursor quote's source or destination funding instrument is a card; ignored otherwise. Missing when required is rejected with 422 RiskSessionRequired.
Free-form key-value pairs stored on the resource and echoed back on reads.
Response
The request has succeeded and a new resource has been created as a result.
A single movement of money from a source to a destination. Created by accepting a quote, or generated automatically by a deposit address, virtual account, or cash-in. Track its progress with status.
Transaction ID (txn_ prefix).
^[a-z]+_([0-9a-hjkmnp-tv-z]{26}|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$Current lifecycle status. See subStatus for finer granularity.
processing, awaitingAction, completed, failed Status-scoped sub-state (e.g. processing.fundsPulled). Always present: each status carries a default member (e.g. processing.initiated) when no more specific value applies.
processing.fundsPulled, processing.cashPickupReady, processing.underReview, processing.payoutRetrying, processing.payoutUnconfirmed, processing.returningToSender, completed.cashPickupCollected, completed.cashPickupExpired, awaitingAction.informationRequested, awaitingAction.awaitingSenderAttribution, awaitingAction.payoutDestinationMissing, awaitingAction.depositAddressFrozen, failed.attributionTimeout, failed.depositAddressFrozenTimeout, failed.depositAddressInactiveTimeout, failed.depositAddressClosed, processing.awaitingCryptoOut, processing.cryptoOut, processing.awaitingFiatOut, processing.fiatOut, processing.inboundPending, processing.inboundProcessing, failed.inboundFailed, failed.returnedToSender, processing.initiated, completed.settled, failed.unspecified, failed.expired, failed.providerDeclined, failed.outboundFailed The customer that owns this record — the sender on a transaction.
The funding side, as an instrument. A bank account carries no rail: how the money moved is on the transaction's transfers.
- OMS wallet
- External wallet
- Fiat wallet
- US bank account
- IBAN bank account
- Canadian bank account
- Card
- Cash
- Deposit address
- Virtual account
The receiving side, as an instrument. The rail and the ACH options are on the transaction's payout transfer.
- OMS wallet
- External wallet
- Fiat wallet
- US bank account
- IBAN bank account
- Canadian bank account
- Card
- Cash
Consolidated economics.
What created this transaction, as a uniform {type, id} reference — dereference the resource by id for its full record. A custodial-wallet deposit renders {type: walletDeposit}. Left out for a genuine out-of-band arrival with no recognised origin at all; the manual arm is reserved for a future operator-initiated transaction, distinct from either.
Whose name the payout goes out under. Left out when nothing is paid out to a bank account, a card or a wallet.
The transaction's transfers, in creation order: each movement of its money on one rail. Left out until the first transfer exists; fetch one with GET /transfers/{transferId}.
Why the transaction failed. Present only when status is failed.
What the partner must do while status is awaitingAction. Left out in every other status.
Free-form key-value pairs supplied at creation or update.
When the transaction was created.
When the transaction was last updated.