Use this file to discover all available pages before exploring further.
This guide walks through a complete off-ramp payout: onboarding a recipient, setting up their virtual account, getting a quote, and executing a payment that settles to their bank.
Your workspace activated with the Payout module enabled
KYB completed for your workspace (handled through the Relayer dashboard — one-time setup)
export RELAYER_API_KEY="rk_client_key_v1_your_key_here"export RELAYER_BASE_URL="https://testnet.relayer.fi/v1" # sandbox; use https://api.relayer.fi/v1 for production
Business onboarding (KYB) is completed through the dashboard before you can use the Payout API. Once approved, every endpoint below becomes available.
Generate an invite link. The recipient visits this URL to submit their bank details securely. The token is valid for 7 days.
curl -X POST $RELAYER_BASE_URL/v1/payout/recipients/$BENEFICIARY_ID/invite \ -H "Authorization: ApiKey $RELAYER_API_KEY"
Once the recipient submits their bank details, the account is registered with the regulated fiat rails partner. You can list bank accounts at any time via GET /v1/payout/recipients/{id}/accounts.
If you already have the recipient’s bank details on file, you can skip the invite and call POST /v1/payout/recipients/{id}/accounts directly.
3
Create a withdrawal address (Step 1 of account setup)
Link the recipient’s bank account to a crypto chain. Stablecoins sent to this address trigger the off-ramp transfer. This call is idempotent.
If instead of off-ramp you want to receive stablecoins from a fiat deposit, use the on-ramp endpoints:
POST /v1/payout/onramp/quote — Get fiat → stablecoin ratePOST /v1/payout/onramp/deposit-accounts — Create or get a deposit account (idempotent)GET /v1/payout/onramp/deposit-accounts/{id}/events — Track lifecycle events
The deposit account is a permanent fiat account (e.g. a CLABE in Mexico) tied to a stablecoin wallet. When the client deposits fiat, the stablecoin lands at the wallet.
An order in awaiting status can be cancelled before settlement:
POST /v1/orders/{id}/cancel
The call is idempotent — calling it twice on the same awaiting order is safe. Once the order has moved past awaiting, cancellation is no longer possible.