

payment_ identifier from the first call to the last webhook. There is no separate transfers, payouts, withdrawals or conversion API: you state who pays whom and how much, and Stableyard selects the rail and reports one outcome.
Every integration runs four steps
1
Preview a send
POST /v2/payments/preview resolves the sender, the destination, the fees and the funding options without creating anything. Proceed only when the source you intend to use reports available: true. Receive payments do not need a preview.2
Create the payment
POST /v2/payments, with an Idempotency-Key. The terms below are frozen together at this moment.3
Fund or execute
A receive payment waits for the payer to select an option and fund it. A send payment draws on the account’s payment source and is confirmed with
POST /v2/payments/{paymentId}/confirm. nextAction on the create response names which applies.4
Read the payment
Value is credited on independently verified receipt, never because a provider or a payer reported success. A webhook says something changed;
GET /v2/payments/{paymentId} says what is true.Creation freezes the terms
Pick the route
Conversion is not a route: where the payer holds one asset and the recipient is owed another, it is selected inside the payment and settles there. Stablecoin movement is broadly available. Fiat collection and payout are enabled per market, per app and per credential, and
GET /v2/partners/config is the only accurate runtime answer. View supported regions and currencies →
Reconcile from the payment and its ledger rows
Every leg of a payment is written as aTransaction against an account, readable at GET /v2/accounts/{accountId}/transactions. Each row carries paymentId and a financialLegKind of collection, send_execution, settlement, fee_payout, refund or adjustment, which ties a settlement and its fee payout back to the payment that produced them.
Reconciliation is one loop: verify the signature, discard a duplicate delivery, then read the payment. On a send, sourceAmount is the total debit, with fees added on top of what the recipient receives. Store your own reference alongside the payment_ id on the record you create, because that pairing cannot be added later.
Quickstart
One account and one funded payment, end to end.
Status codes
Payment status, operational state, and which values are terminal.
Webhooks
The
payment.* events and how to verify a delivery.Idempotency
Why a timed-out create is safe to retry.