v1
latestOpenAPI 3.0.32026-07-2650226215.9 KBExecute 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.
Headers
Required on POST and PUT requests. Use a unique value per logical mutation attempt, for example a UUID.
Request body
The quote to accept (qt_ prefix). Must be open with non-expired pricing.
Device fingerprint of the end user, used for risk screening.
The external-account id of the debit card funding (buy) or receiving (sell) this transaction. OMS resolves it to the underlying card provider identifier.
Deprecated for cards: raw card provider payment method id. Use externalAccountId instead.
Your own transaction reference, for reconciliation.
Expected sending address for crypto-funded transactions.
Free-form labels attached to the transaction.
Risk/session identifier from the client SDK.
Free-form key-value pairs stored on the resource and echoed back on reads.
Example request
{
"quoteId": "qt_0gq9aesz4wb5etdv88z1j61qcm",
"metadata": {
"orderId": "order_12345"
}
}Response
The request has succeeded and a new resource has been created as a result.
Public TypeID, e.g. txn_01h455vb4pex5vsknk084sn02q; legacy UUID suffixes are accepted until non-v7 rows are retired.
Resource type discriminator. Always "transaction".
Composite of source and destination instrument categories, inferred from each side. The cash corridors (cryptoToCash, cashToCrypto) are derived from a cash-pickup destination / cash-in source respectively; the rest map straight from the internal corridor type.
Lifecycle of a transaction. processing: funds in motion. awaitingAction: non-terminal, blocked on developer/upstream/compliance (see hold); returns to processing once cleared. completed: delivered. failed: terminal failure.
Finer-grained, status-scoped sub-state of a transaction (v0.10). Each member is namespaced by its parent status (e.g. processing.cashPickupReady). Largely a closed set aligned to the v0.11 spec; the inbound-leg lifecycle values (processing.inboundPending, processing.inboundProcessing, failed.inboundFailed) are deliberate extensions mirroring the already-exposed outbound states, while the failed.return* family conforms to the spec. Absent when there is no meaningful sub-state.
(2026-07-17, product-agreed vocabulary): failed.returned is RETIRED - its meaning is absorbed by failed.returnComplete, which now covers both the OPS-triggered crypto send-back lane and the vendor-side ACH/WIRE bounce + clawback lane (isReturnedProviderStatus) under one wire value. failed.refundPending is DELIBERATELY NOT added - product agreed to collapse the OMS-wallet-refund and crypto-return status families into one (this failed.return* set); a committed OMS spec snapshot still lists failed.refundPending separately, which is a documented divergence pending that spec's revision.
Public TypeID, e.g. txn_01h455vb4pex5vsknk084sn02q; legacy UUID suffixes are accepted until non-v7 rows are retired.
Estimated completion time. Present when the destination rail has a predictable settlement time (e.g. bank payouts and some crypto legs); null otherwise.
Free-form key-value pairs supplied at creation or update.
When the transaction was created.
When the transaction was last updated.
Expiry of the transaction's actionable window: present on auto-created transactions and on cash payouts (the pickup-code expiry), and retained after completion for audit. Null for other quote-initiated transactions.
Opaque OMSX project ID, e.g. prj_01kpxxa7esk9a.