Bank Account → Fiat
Use your Yugo balance to send an exact fiat amount to a Recipient's bank account.
Payment method: bank_account | Amount currency: fiat currency code (e.g. EUR)
Prerequisites
Before using this flow, you must be onboarded as a Merchant with Yugo and have a merchant account opened.
This payout is available with either of the two balance types managed by Yugo — Crypto or Fiat. If your balance is held in crypto, Yugo performs the necessary exchange before transferring fiat to the Recipient's bank account.
During onboarding, Yugo configures:
- Supported fiat currencies
- The balance type managed on your behalf (Crypto or Fiat)
- An account with access to the Yugo Business Portal, where you retrieve your API Key and Webhook secret
Some of these settings are configured during onboarding and are not passed dynamically in each API request — check the API Reference for the exact request fields.
1. Create the Payout Intent
API Reference: POST /payouts View Create Payout API →
Provide the Recipient's bank account in one of two ways:
- By IBAN
- By IBAN on Record
The Merchant supplies the Recipient's IBAN directly.
{
"amount": {
"value": "100.00",
"currency": "EUR"
},
"recipient": {
"email": "recipient@example.com",
"first_name": "John",
"last_name": "Doe",
"country": "DE"
},
"reference": "withdrawal_123",
"return_url": "https://merchant.com/withdrawal/123",
"webhook_url": "https://merchant.com/api/webhooks/payouts",
"payment": {
"method": "bank_account",
"iban": "DE89370400440532013000"
}
}
The Merchant references an Instrument on Record of type bank_account (a bank account the
Payer has used before), obtained via the List Payers API.
{
"amount": {
"value": "100.00",
"currency": "EUR"
},
"recipient": {
"email": "recipient@example.com",
"first_name": "John",
"last_name": "Doe",
"country": "DE"
},
"reference": "withdrawal_123",
"return_url": "https://merchant.com/withdrawal/123",
"webhook_url": "https://merchant.com/api/webhooks/payouts",
"payment": {
"method": "bank_account",
"instrument_id": "123e4567-e89b-12d3-a456-426614174000"
}
}
Key fields:
amount.currency— a fiat currency code (e.g.EUR);amount.valueis the exact amount the Recipient receivespayment.method=bank_accountpayment.iban— the Recipient's IBAN (when sending by IBAN)payment.instrument_id— id of the Recipient's Instrument on Record (when sending by Instrument on Record)return_url— required by the API; reserved for the future hosted flow (see note below)
bank_accountBefore the payout, you can retrieve the Instruments on Record a Payer previously used to deposit via
API Reference: List Payers API →
. Present the ones of typebank_account to the Recipient so they can pick a previously used account and
pass its instrument_id, or let them enter a new IBAN in your own UI and pass iban.2. Yugo processes the Payout
If your balance is held in crypto, Yugo performs the necessary exchange first. Yugo then transfers the exact fiat amount to the Recipient's bank account.
See Bank Account for supported currencies, exchange behavior, and processing details.
3. Track Payout status
Option A: Webhooks
Yugo sends a webhook every time the Payout status changes.
When you receive a webhook, we recommend verifying the updated status via the API (Option B).
API Reference: View Webhook Reference →
Option B: Polling
You can retrieve the current Payout status at any time.
API Reference: GET /payouts/{id} View Get Payout API →
Status Lifecycle
See the Payout Status Lifecycle for the full state diagram and status definitions per payout flow.
| Status | Meaning |
|---|---|
CREATED | Payout Intent created by Merchant |
INITIATED | Payout accepted and queued for processing |
PROCESSING | Yugo is exchanging funds (if your balance is crypto) and transferring fiat to the Recipient's bank account |
COMPLETED | Funds delivered to the Recipient's bank account. Transaction finalized. |
FAILED | Payout failed or was rejected |
EXPIRED | Payout expired before completion |
At the moment, only the server-to-server flow is supported: the Merchant supplies all payout details when creating the Payout Intent.
The Create Payout request has a required return_url, and the response may include a
redirect_url. These are not yet implemented and should be ignored for now. They are
reserved for a future hosted flow, where the Merchant will be able to delegate collecting
some Recipient details (such as the destination bank account or wallet) to Yugo.
Deep dive
- Bank Account — supported currencies, exchange behavior, transfer timing
- Status Lifecycle — full state diagram and status definitions
- List Payers API — retrieve a Payer's previously used IBANs
- Create Payout API — request/response schemas and all fields