Multi-currency Payouts

Breeze payout pages support multi-currency payouts: you fund a payout in a single stablecoin, and your customer receives their local fiat currency, with Breeze handling the foreign-exchange (FX) conversion. This lets one integration pay out in USD, EUR, JPY, TWD, HKD, or KRW without you holding or managing any of those balances.

📘

Multi-currency / FX payouts are enabled per account. Contact [email protected] to turn it on. Without it, payout pages behave as single-currency (the customer receives the same currency you fund).

Note: Multi-currency payouts only apply to the hosted payout page flow.

Two currencies, one payout

A payout now involves two distinct currencies:

ConceptFieldWhat it is
Funding currencyfundingCurrencyThe stablecoin you fund the payout with — USDC (≈ USD) or EURC (≈ EUR).
Destination currencydestinationCurrencyThe fiat currency the customer receives, determined by the payout rail they choose.

When the funding currency's fiat equivalent differs from the destination currency, Breeze performs an FX conversion. For example, a USDC-funded payout to a SEPA (EUR) bank account converts USD → EUR; an EURC-funded payout to a US bank account (ACH) converts EUR → USD.

Supported payout rails and currencies

The customer's chosen rail determines the currency they receive:

Rail (payoutDestinationRail)Customer receivesMethodFX
achUSDUS bank transfer
sepaEUREU / SEPA bank transfer
zenginJPYJapan (Zengin) bank transfer
twd_fiscTWDTaiwan (FISC) bank transfer
hkd_fpsHKDHong Kong (FPS) bank transfer
krw_kftcKRWKorea (KFTC) bank transfer
card_usdUSDPush-to-card❌ (USD only)

Note: Push-to-card payouts are USD-only and do not support FX. Crypto wallet payouts are same-currency only — the customer receives the same stablecoin you funded (no conversion). FX applies to the bank rails above.

By default, Breeze offers the rails available for your funding currency. To restrict which rails a customer can choose on a given page, pass enabledPayoutRails when you create the payout page.

How the FX rate is set

  1. When the customer selects a fiat rail on the hosted payout page, Breeze generates an FX quote — a locked exchange rate valid for a short window.
  2. The customer sees the destination amount and rate before confirming.
  3. On confirmation, Breeze locks the quote and guarantees the destination amount; Breeze absorbs any market movement (slippage) after the lock.

The locked values are denormalized onto the payout page and surfaced in the payout page response and webhooks:

  • destinationCurrency — the fiat the customer receives
  • destinationAmount — the amount in the destination currency (minor units)
  • exchangeRate — the customer-facing rate applied (major units, e.g. 1 EUR ≈ 184 JPY)

What changes in your integration

  • Create: keep sending amount and fundingCurrency (USDC or EURC). Optionally pass enabledPayoutRails to limit the offered rails.
  • You do not choose the destination currency — the customer does, by selecting a rail on the hosted page.
  • Reconcile against destinationCurrency / destinationAmount / exchangeRate from the payout page response and webhooks, in addition to your funding amount.

Did this page help you?