Supported Corridors
meCash static accounts currently support:- Nigeria (NGN) π³π¬
- Malawi (MWK) π²πΌ
- United States (USD) πΊπΈ β View USD Virtual Account documentation
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
referenceand 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 Accountto confirm account details before displaying them to a customer. - Subscribe to
virtualaccount.completedwebhooks so you reconcile deposits the moment they land.

