How it works
Step-by-step
- Onboard the sender — Create a customer with identity documents for KYC verification.
- Create a Virtual Bank Account — Call POST /virtual-bank-account with your business
wallet_idand thecustomer_id. For NGN, the account activates instantly. For USD, GBP, and EUR, wait for thevirtual_account.readywebhook before sharing the account details. See the Virtual Bank Accounts guide for currency-specific prerequisites. - Collect funds — The sender deposits money into the Virtual Bank Account. The collection method depends on the source currency:
- CAD: Sender pays via Interac — no API call needed, you receive a
collection.completedwebhook when funds arrive. - NGN, USD, GBP, EUR: Sender transfers to your Virtual Bank Account — you receive a
collection.completedwebhook when funds settle. - Card: You initiate a card charge via POST /collection (card collections only, must be enabled for your business).
- CAD: Sender pays via Interac — no API call needed, you receive a
- Preview the cost — Call the Fee breakdown endpoint to calculate the exchange rate, fees, and the exact amount the recipient will receive.
- Payout to recipient — Create a payout specifying the destination currency, bank account, and amount. Use
to_amountto guarantee the recipient receives an exact amount, orfrom_amountto send from a fixed debit. - Track status — Listen for
payout.completedorpayout.failedwebhooks to update your user in real time.
Supported corridors
| Collect in | Pay out to | Collection method | Payout method |
|---|---|---|---|
| CAD | NGN | Interac | Bank transfer |
| USD | NGN | Virtual Bank Account (ACH) | Bank transfer |
| GBP | NGN | Virtual Bank Account (BACS) | Bank transfer |
| EUR | NGN | Virtual Bank Account (SEPA) | Bank transfer |
| CAD | GBP | Interac | Bank transfer (BACS) |
| USD | EUR | Virtual Bank Account (ACH) | Bank transfer (SEPA) |
Cross-currency payouts apply an exchange rate at transaction time. Always call Fee breakdown to preview the total cost before initiating.

