sourceToDestination. There is no settable transaction “type”.
Standard sends and payouts follow a two-step flow: create a quote to lock pricing, then create a transaction to execute it. Cash-in and auto-created transactions (virtual accounts, deposit addresses) skip the quote step.
Direction (sourceToDestination)
The sourceToDestination field is a composite of the source and destination instrument categories, inferred from each side:
Two-step flow
POST /transactions with a body of { "quoteId": "qt_..." }. If the quote expires before you create the transaction, create a new quote.
Quote object
pricing.fixedAmountSide to "source" when the user specifies how much to send, or "destination" when the user specifies how much to receive.
The source and destination are typed instruments discriminated by type: an OMS wallet (walletOms), an externally-custodied wallet (walletExternal), a bank account (bankUs, bankIban, bankCanada), a debit card (card), or cash pickup (cash).
Transaction statuses
OMS fires
transaction.statusChanged on every status change, so your handler branches on the transaction’s status field rather than parsing an event-name string. Subscribe with the Webhooks endpoints (POST /webhooks with a body of { url, subscriptions }; pass ["*"] for all partner-visible events) or in the OMS Dashboard. See the transaction lifecycle for the delivery model.
Developer fees
Developer fees are configurable per integration and are never shown to the end user. Set them on your OMS account or pass them in the quote request. They appear in thefeesDeducted.developer field on both the source and destination sides of the pricing object.
Key operations
GET /transactions returns results newest-first and filters by status, sourceToDestination, customerId, the originating instrument (walletId, virtualAccountId, depositAddressId, cashInId), and inclusive createdAfter/createdBefore date bounds. Pagination uses limit, startingAfter, and endingBefore.
All
POST endpoints accept an Idempotency-Key header. Use a stable key tied to your internal order ID to safely retry on network failure without risk of double-execution.Related
- Fiat to crypto guide: cash-in and virtual-account funding
- Send from a wallet guide: crypto sends and bank payouts
- Bank transfers guide: ACH and wire transfer details