Skip to main content

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:

The Merchant supplies the Recipient's IBAN directly.

Minimal Payout Intent Request
{
"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"
}
}

Key fields:

  • amount.currency — a fiat currency code (e.g. EUR); amount.value is the exact amount the Recipient receives
  • payment.method = bank_account
  • payment.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)
Reuse an Instrument on Record of type bank_account

Before 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 type bank_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.

StatusMeaning
CREATEDPayout Intent created by Merchant
INITIATEDPayout accepted and queued for processing
PROCESSINGYugo is exchanging funds (if your balance is crypto) and transferring fiat to the Recipient's bank account
COMPLETEDFunds delivered to the Recipient's bank account. Transaction finalized.
FAILEDPayout failed or was rejected
EXPIREDPayout expired before completion
Server-to-server only

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