Skip to main content
POST
Execute a transaction (send)

Authorizations

Authorization
string
header
required

Token from POST /auth/token

Headers

Idempotency-Key
string
required

Required on POST and PUT requests. Use a unique value per logical mutation attempt, for example a UUID.

Body

application/json

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.

quoteId
string
required

The quote to accept (qt_ prefix). Must be open with non-expired pricing.

deviceFingerprint
string

Device fingerprint of the end user, used for risk screening.

webSessionId
string

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.

metadata
object

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.

id
string
required

Transaction ID (txn_ prefix).

Pattern: ^[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})$
status
enum<string>
required

Current lifecycle status. See subStatus for finer granularity.

Available options:
processing,
awaitingAction,
completed,
failed
subStatus
enum<string>
required

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.

Available options:
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
customer
object
required

The customer that owns this record — the sender on a transaction.

source
OMS wallet · object
required

The funding side, as an instrument. A bank account carries no rail: how the money moved is on the transaction's transfers.

destination
OMS wallet · object
required

The receiving side, as an instrument. The rail and the ACH options are on the transaction's payout transfer.

pricing
object
required

Consolidated economics.

precursor
object

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.

payoutOrigin
object

Whose name the payout goes out under. Left out when nothing is paid out to a bank account, a card or a wallet.

transfers
object[]

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}.

failure
object

Why the transaction failed. Present only when status is failed.

hold
object

What the partner must do while status is awaitingAction. Left out in every other status.

metadata
object

Free-form key-value pairs supplied at creation or update.

createdAt
string<date-time>

When the transaction was created.

updatedAt
string<date-time>

When the transaction was last updated.