Channels & Currencies
Tulu Switch organises payment rails into three distinct channels. Each channel represents a different category of money movement and is backed by one or more providers. When initiating a deposit, transfer, or checkout, you must specify both the channel and currency.
WALLET Channel
The WALLET channel is the traditional fiat wallet rail. It supports deposits (via checkout links), outbound bank transfers, and balance queries. Routing across providers is automatic — the platform selects the best available provider based on availability, reliability, and liquidity.
Supported currencies by provider
| Provider | Currencies |
|---|---|
| Paystack | NGN |
| Seerbit | NGN |
| Flutterwave | NGN, KES, GHS, ZAR, USD, EUR, GBP |
Example request body
{
"customerId": "cus_xxx",
"channel": "WALLET",
"currency": "NGN",
"amount": 10000,
"callbackUrl": "https://your-app.com/callback"
}ACCOUNT Channel
The ACCOUNT channel issues virtual bank account numbers (NUBANs in Nigeria) that customers can fund via regular bank transfers. When funds arrive, a bank_account.deposit.success or checkout.paid webhook is fired.
- Paystack DVA — Dedicated Virtual Accounts via Wema Bank
- Flutterwave — Virtual accounts via Flutterwave
- Seerbit Pocket — Sub-pocket accounts via Seerbit
- PayRep MFB — Microfinance bank NUBANs via PayRep
Use the checkout endpoint (POST /v2/checkout) to create a one-time virtual account. One-time accounts expire after a configurable period (default 120 minutes, max 7 days). For persistent accounts, use the customer wallet provisioning endpoints.
STABLECOIN Channel
The STABLECOIN channel enables on-chain stablecoin wallets. Customers receive a wallet address on the requested chain; deposits and withdrawals settle on-chain.
Supported assets
USDC — USD Coin
USDT — Tether
Supported chains — LIVE (via Crossmint)
baseethereumpolygonarbitrumoptimismavalanchebscscrollworld-chainSupported chains — TEST (via Crossmint testnets)
base-sepoliaethereum-sepoliapolygon-amoyarbitrum-sepoliaoptimism-sepoliaavalanche-fujibsc-testnetscroll-sepoliaworld-chain-sepoliaHedera chain
hedera — LIVE
hedera-testnet — TEST
Country → Currency Map
When a customer is created, their wallet is auto-initialised with the default currency for their country. The key mappings are:
| Country | Default currency |
|---|---|
| Nigeria (NG) | NGN |
| Ghana (GH) | GHS |
| Kenya (KE) | KES |
| South Africa (ZA) | ZAR |
| United Kingdom (GB) | GBP |
| United States (US) | USD |
| Eurozone (DE, FR, …) | EUR |
| Uganda (UG) | UGX |
| Tanzania (TZ) | TZS |
Availability & Access
Channel and currency availability per builder account is configured by Tulu Admin via the platform configuration (ChannelCountryConfig). Not every channel is available to every account by default.
Refer to the Supported Countries page for the full list of countries and their applicable channels.
Important Notes
- Channel values in the API are uppercase:
WALLET,ACCOUNT,STABLECOIN - Currency codes follow ISO 4217 for fiat (e.g.
NGN,GHS) and asset ticker for stablecoins (USDC,USDT) - Bank transfers (outbound payouts) on the WALLET channel are blocked in the TEST environment
- Subscription recurring charges support DAILY, WEEKLY, MONTHLY, QUARTERLY, and ANNUALLY intervals (Paystack does not support QUARTERLY)