Global Payouts
Pay people and businesses in their local currency, anywhere, from a single balance — without holding a bank in every country.
This guide shows you how to build a global payout flow on Fuze from start to finish: onboard a business, fund it, convert, pay out, and track. It reads top to bottom, and when you're ready to build, each step links to the exact request and response in the API Reference.
What Fuze gives you
One integration that handles the whole chain. You bring money in, hold it, and pay it out locally — Fuze takes care of the rails underneath.
- Take money in — a local collection account (a vIBAN), or a crypto / stablecoin deposit.
- Hold one multi-currency balance instead of many bank accounts.
- Convert when you need to, at a rate you lock in advance.
- Pay out in local currency to banks and wallets across India, Pakistan, the Philippines and Nigeria.
- Compliance and FX are handled for you, and settlement runs over stablecoins, which makes payouts faster and rates more competitive.
How a payout works
At a high level, four parties are involved: you, Fuze, the local payout partner, and the person being paid.
sequenceDiagram participant You as Your platform participant Fuze participant Partner as Local payout partner participant Ben as Beneficiary You->>Fuze: Onboard the business (KYB) Fuze-->>You: Business is active (webhook) You->>Fuze: Add funds and buy local currency You->>Fuze: Create a payout with beneficiary details Fuze->>Partner: Send funds (settled over stablecoins) Partner->>Ben: Pay out in local currency Fuze-->>You: Payout completed (webhook)
The same flow, as five steps:
flowchart LR O["1 · Onboard"] --> C["2 · Collect"] --> X["3 · Convert"] --> P["4 · Pay out"] --> T["5 · Track"]
The five steps
Each step below says what you send and what you get back, in plain terms. The exact fields and payloads live in the API Reference.
1 · Onboard the business
You register the business as a user and take it through verification (KYB). This runs in the background — Fuze tells you the outcome through webhooks as it happens.
| You provide | You get back |
|---|---|
| The business's identity and verification details (or a hosted link its team can fill in) | A user record, then updates as verification moves from pending to complete |
Verification doesn't always go in a straight line, which is the main reason this lives in a guide and not a one-shot recipe:
flowchart TD Create["Create the business"] --> Pending["Verifying"] Pending -->|more info needed| RFI["Needs information · show the link"] RFI -->|resubmitted| Pending Pending -->|passes| Done["Verified"] RFI -->|passes| Done Pending -->|can't verify| Rej["Rejected · start over with a new ID"] Done -->|terms accepted| Active["Active · can transact"]
2 · Collect funds
Give the business a way to receive money, then watch the balance.
| You provide | You get back |
|---|---|
| The business's ID and the currency you want to collect in | Bank details (IBAN, account number, bank name) to share so others can pay in; the balance updates as money arrives |
3 · Convert to the payout currency
Lock a rate, then convert. This moves money into the currency you're about to pay out in.
| You provide | You get back |
|---|---|
| How much to convert, and the from/to currencies | A quote with a rate and a short expiry; once you accept, the local currency lands in your balance |
4 · Create the payout
One request carries everything: who's sending, who's being paid, how much, and why. For India and Pakistan you can check the beneficiary's account first; for the Philippines and Nigeria the details are checked when the payout is made.
| You provide | You get back |
|---|---|
| Sender details, beneficiary details and their local account, the amount, and the purpose | The payout, accepted and marked pending; the final result comes by webhook |
The beneficiary details differ by country — see what each country needs below.
5 · Track to the finish
The payout starts as pending and settles to a final state. You can wait for the webhook, or check the status yourself with your order ID.
| You provide | You get back |
|---|---|
| Your order ID (to check status), or nothing — just listen for the webhook | The current status, and a payment reference once it's paid |
flowchart TD New["Create payout"] --> Pending["Pending"] New -->|rejected at creation| Failed["Failed · told immediately"] Pending --> Completed["Completed · paid"] Pending --> Canceled["Canceled · rejected by the partner"] Pending --> Reversed["Reversed · paid, then returned"] Pending --> Expired["Expired · pending too long"]
A quick guide to the endings:
| Status | What it means | What you do |
|---|---|---|
| Completed | The money reached the beneficiary | Nothing — you're done |
| Pending | Still in progress | Wait for the next webhook |
| Failed | Rejected at creation (bad data) | Fix the request and retry |
| Canceled | The local partner rejected it | Refund or retry, per your process |
| Reversed | Paid, then returned | Treat as failed; refund |
| Expired | Sat pending too long | Retry |
What each country needs in the payout API
This is the part worth reading closely. The payout call takes the same shape everywhere, but the required beneficiary details change by country — and those differences are the easiest thing to get wrong. This is the quick map; the full field list is in the API Reference.
| Detail | India | Pakistan | Philippines | Nigeria |
|---|---|---|---|---|
| Account type | Bank or UPI | Bank or wallet | Bank or wallet | Bank |
| Bank / wallet name | not needed | required | required (e.g. GCASH) | not needed |
| Bank routing detail | IFSC code | — | payment channel (InstaPay / PESONET) | bank code |
| UPI ID | for UPI payouts | — | — | — |
| Sender contact | phone | phone | ||
| Can verify beneficiary first? | yes | yes | checked at payout | checked at payout |
A few things that catch people out:
- India — the sender's contact is
email. A bank payout needs theifscCode; a UPI payout needs theupiIdinstead. - Pakistan — the sender's contact is
phone.bankNameis required, and you can pass the beneficiary'srelationto the sender. - Philippines —
channelName(InstaPay or PESONET) sits at the top level of the request, not inside the account.bankName(e.g. GCASH) is required. - Nigeria — the beneficiary needs a
bankCode, which you look up in the banking directory.
To fill in bank and wallet names for a country, use the banking directory (GET /api/v1/payment/remittance/bank-details/:country). Per-country purpose codes and relationship options are provided separately.
Updated 3 days ago