Account Types
Fintech Permanent Account
Your fintech receives a dedicated virtual bank account during onboarding. This is your primary channel for receiving NGN and converting it into cNGN for platform operations. The account never expires, accepts any deposit amount, and automatically mints cNGN to your configured default wallet - either your Strails-controlled HSM wallet or a whitelisted external wallet.Retrieve Your Account Details
Webhook Event
When a deposit lands on your fintech virtual account, Strails sends afintech.virtual_account.deposit.received webhook to your configured endpoint. Listen for this event to credit your internal ledger or trigger downstream flows.
Use Case
Fund your Strails wallet balance to cover user withdrawals, FX liquidity, or fee settlements without requiring individual user deposits.User Permanent Account
Each user automatically receives a permanent virtual account after BVN verification is completed during the/onboarduser flow. Users can deposit NGN into this account at any time - deposits are validated against BVN records and converted to cNGN in the user’s Strails-controlled HSM wallet, or in their registered external default wallet.
User permanent accounts are BVN-linked. Deposits must originate from the user’s own bank account. Third-party and corporate account transfers are automatically refunded.
Disbursed cNGN goes to the user’s Strails-managed wallet unless you have registered an external default wallet for that user, in which case it is delivered there instead. Deposit webhooks fire either way.
Retrieve a User’s Account
User permanent account details are included in the/getuserdetails response:
Webhook Events
Wait for
fintech.user.deposit.funding.completed before crediting the user’s in-app balance.
Transaction Temporary Account
Create a temporary virtual account on demand for a specific payment amount. These accounts are ideal when you need to collect an exact amount from a user and optionally convert the proceeds directly to USDC or USDT.Create a Temporary Account
CallPOST /cngnonramp to generate the account and receive the payment details:
Retrieve Account Details
UsePOST /getvirtualaccount with the requestId to retrieve the bank account number and current status:
autoSwap and sweepToOfframp Options
The user’s default wallet is their Strails-managed smart wallet, unless an external default wallet has been registered for them.
Deposit Flow
The following steps describe the complete path from a user’s bank transfer to confirmed cNGN in a wallet:- User initiates a bank transfer - the user sends NGN to the virtual account number from their bank app.
- Payment gateway receives the deposit - the licensed payment provider confirms receipt and notifies Strails.
- BVN validation runs - Strails checks that the depositor’s account name matches the BVN on file. Mismatches trigger an automatic refund.
- cNGN is disbursed - on a successful validation, Strails mints the equivalent cNGN amount to the destination wallet.
- Auto-swap executes (if configured) - if
autoSwapis set, the disbursed cNGN is immediately swapped to USDC or USDT. - Sweep executes (if configured) - if
sweepToOfframpis set, the resulting tokens are transferred to the user’s default wallet - their Strails-managed smart wallet, or their external default wallet if one is registered. - Webhook is delivered - Strails sends the appropriate
funding.completedorrefundedwebhook to your endpoint.
Fee Structure
All deposits include the following fee components. The total displayed to the user covers the requested amount plus all applicable fees.
The
feeBreakdown field in the /cngnonramp response shows an itemised breakdown before the user pays.
Webhook Events
Related
Virtual Accounts API
Full reference for virtual account endpoints and response schemas
Transactions API
Onramp, offramp, and swap operations
Webhook Events
Payload schemas for all deposit and funding webhooks
Smart Wallet
Where temporary account deposits are disbursed