Skip to main content
Virtual Accounts are Nigerian bank account numbers generated by Strails through licensed payment providers. When a user or fintech makes a bank transfer to one of these accounts, Strails automatically validates the deposit, mints the equivalent cNGN, and delivers the tokens to the appropriate wallet - no manual conversion step required. Use virtual accounts to power NGN onramp flows for your users, fund your own fintech wallet, or build precise one-time collection flows with optional auto-swap to USDC or USDT.

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 a fintech.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.
Temporary virtual accounts expire 30 minutes after creation. If the user does not pay within this window, any funds received are refunded and you must create a new account.

Create a Temporary Account

Call POST /cngnonramp to generate the account and receive the payment details:

Retrieve Account Details

Use POST /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:
  1. User initiates a bank transfer - the user sends NGN to the virtual account number from their bank app.
  2. Payment gateway receives the deposit - the licensed payment provider confirms receipt and notifies Strails.
  3. BVN validation runs - Strails checks that the depositor’s account name matches the BVN on file. Mismatches trigger an automatic refund.
  4. cNGN is disbursed - on a successful validation, Strails mints the equivalent cNGN amount to the destination wallet.
  5. Auto-swap executes (if configured) - if autoSwap is set, the disbursed cNGN is immediately swapped to USDC or USDT.
  6. Sweep executes (if configured) - if sweepToOfframp is 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.
  7. Webhook is delivered - Strails sends the appropriate funding.completed or refunded webhook 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

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