Supported Corridors
meCash static accounts currently support:- Nigeria (NGN) π³π¬
- Malawi (MWK) π²πΌ
- United States (USD) πΊπΈ
How it Works: The Transaction Flow
This flow shows how a static account is created once and reused for every subsequent payment.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.
Standard Currency-specific Request Examples
Standard currency-specific Response Examples
Error responses
| Status | Message | Cause | How to fix |
|---|---|---|---|
| 400 | Invalid country or currency ISO code | Country or currency combination is not supported. | Pass a valid ISO 3166 country + ISO 4217 currency pair. |
| 400 | Phone number must include valid country code | phoneNumber is not in international format. | Send E.164 numbers such as +2348XXXXXXX. |
| 400 | Request JSON malformed or missing required fields | Payload is missing mandatory properties or contains invalid JSON. | Validate required keys (currency, country, reference, etc.) before sending. |
| 400 | BVN is required | bvn was omitted for a corridor where it is mandatory (e.g., NGN). | Provide an 11-digit BVN when creating Nigerian virtual accounts. |
| 401 | API key missing or incorrect | x-api-key header is absent, expired, or wrong environment. | Include the correct workspace API key for the target environment. |
| 409 | Reference must be unique | The reference has already been used in a previous request. | Reuse the original response or send a fresh unique reference. |
| 500 | Service temporarily unavailable | Temporary backend/database failure. | Retry with exponential backoff or contact support if it persists. |
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.

