Skip to main content
A bank payout sends funds from one of your Ralio accounts to an external bank account, using one of three routing types: SEPA, SWIFT or WIRE.
This page explains every field of the request and — more importantly — which fields are required in each scenario, since the requirements change depending on the routing type, the destination bank’s country and the beneficiary type.

Integration flow

1

Simulate the payout

Call Simulate bank payout with the amounts, routingData and bankCountry to preview the fees, the exchange rate and the exact amount the recipient will receive — without moving funds.
2

Create the payout

Call Create bank payout with the full recipient details. The order is created in CREATED state.
3

Complete OTP validation (if required)

The creation response includes isOTPRequired. When true, complete the OTP flow before the payout is dispatched.
4

Track the result

Subscribe to the payout webhooks (payout_processing, payout_completed, payout_failed, payout_canceled) or poll Get bank payout order details.

Choosing the routing type

recipient.routingData selects how the destination bank account is identified: Not every currency is available on every routing type — it depends on what is enabled for your account. If a combination is not available, the API responds recipient currency X is not supported for rail Y.

Amounts

All amounts are integers in minor units (25000 = 250.00 EUR).
Provide exactly one of amounts.debitedAmount.amount or amounts.receivedAmount.amount, and set the other to 0:
  • Debited amount: “send exactly this from my account” — fees and FX are deducted from it.
  • Received amount: “the recipient must get exactly this” — your account is debited whatever is needed to cover it. Not every route supports this mode; the API returns an explicit error when it doesn’t.
Two more rules:
  • amounts.debitedAmount.currency must always be your account’s currency, even when you only provide the received amount.
  • amounts.receivedAmount.currency is the currency the recipient gets, and must be a fiat currency. When it differs from the account currency, the payout includes a currency conversion (the simulation shows the applied rate).

Field reference

description
string
required
Human-readable description of the payout (minimum 3 characters). Shown in the order details.
ownReference
string
required
Your own identifier for this payout (e.g. an invoice or batch number). Returned in order details and webhooks so you can correlate it with your systems.
amounts
object
required
recipient
object
required

Required fields by scenario

Fields always required, on every payout: description · ownReference · amounts (with exactly one non-zero amount) · recipient.routingData · recipient.accountNumber · recipient.bankCountry · recipient.beneficiaryType · recipient.document · recipient.address (all subfields)

By routing type

By beneficiary type


Complete examples


After you create it

A successful creation returns 201 with the order and the isOTPRequired flag:
  • isOTPRequired: true — the payout stays in CREATED until you complete the OTP flow.
  • isOTPRequired: false — the payout continues automatically.
From there the order moves through the standard lifecycle (CREATEDPENDINGSETTLED, or FAILED / CANCELED), and each transition fires the corresponding payout webhook.

Common validation errors