Skip to main content
Static accounts provide a permanent bank account number that routes funds into your meCash wallet. They are ideal for customers who pay you multiple times, high-value partners that need a fixed destination, or payout streams you want to reconcile to a single account. Unlike dynamic accounts, static accounts never expire. Once issued, the same account number can be shared across invoices, embedded in your CRM, or stored by customers for repeat transfers.

Supported Corridors

meCash static accounts currently support:

How it Works: The Transaction Flow

This flow shows how a static account is created once and reused for every subsequent payment.
Asynchronous Processing: For certain currencies like USD, the virtual account creation is asynchronous. The API will initially return a PROCESSING status, and the final account details (Account Number, SWIFT Code) will be sent to your webhook URL via the virtualaccount.creation.completed event.

Common Use Cases

  • Recurring Customers: Assign one static account per enterprise buyer so every top-up, milestone payment, or retainer routes to the same reference, simplifying ledger reconciliation.
  • Corporate Collections: Provide each branch or franchise with a dedicated account and observe inflows per unit without opening new bank accounts manually.
  • Agency & Field Operations: Issue static accounts to agents in the field so they can collect deposits locally while you maintain centralized visibility.
  • Offline Channels: Publish the account number on invoices, websites, or signage. Customers can re-use it without requesting a fresh account each time.

API Reference: Create Static Virtual Account

Jump to the OpenAPI entry for POST /v1/virtual-account to review schema details, example requests, and live playground access.

Standard Currency-specific Request Examples

For USD Virtual Accounts, see the dedicated USD Virtual Account documentation.

Standard currency-specific Response Examples

Error responses

Best practices

  • Store the reference and response payload so you can reuse the virtual account without additional API calls.
  • Mask the BVN and other PII when logging requests to comply with data-protection policies.
  • Pair this endpoint with Get Virtual Account to confirm account details before displaying them to a customer.
  • Subscribe to virtualaccount.completed webhooks so you reconcile deposits the moment they land.