Skip to main content
Dynamic accounts are short-lived, one-time-use bank account numbers. They are designed to streamline payments by ensuring the funds received match a specific, expected amount. They automatically expire after a time limit you define. This is ideal for invoicing, one-time checkouts, or any scenario where you need to tie a payment directly to a specific transaction.

Supported Corridors

meCash Dynamic accounts currently support:
  • Nigeria (NGN)
  • Malawi (MWK)

How it Works: The Transaction Flow

This diagram shows the complete lifecycle of a dynamic virtual account, from creation to successful payment.

Common Use Cases

Dynamic accounts are highly effective for managing one-to-one payments.
  • E-commerce Checkouts: Generate a unique account for every customerโ€™s cart. This provides a secure, one-time payment channel and simplifies reconciliation, as each successful payment maps directly to an order.
  • Invoice Payments: When issuing an invoice to a client, attach a dynamic account for the exact invoice amount. Youโ€™ll get an instant webhook when itโ€™s paid, automating your accounts receivable.
  • Event Ticketing: Create a unique account for each ticket reservation. The account can expire after 15 minutes, automatically releasing the ticket back into the pool if not paid.
  • Top-ups & Credits: Assign a dynamic account for a userโ€™s wallet top-up request. Once paid, you can be certain the funds are for that specific user and credit their wallet automatically.

API Reference: Create Dynamic Virtual Account

Explore the API Reference for POST /v1/virtual-account/dynamic, including schema definitions and testing tools.

Request examples

Custom naming behavior

If you provide a accountName, the same string is applied to the newly created dynamic account. When the field is not supplied, we automatically use the workspaceโ€™s registered business name. The accountName must be alphabetical.
When expiry time elapses, data.status changes to INACTIVE

Standard currency-specific examples

Successful response

copy

Response fields

Error responses

Webhooks

Payments to the dynamic account trigger webhooks:
  • virtualaccount.completed โ€” deposit succeeded and the wallet was credited.
  • virtualaccount.failed โ€” payment attempt failed or expired.
Check webhooks-event for payload schemas and signature verification instructions.

Best practices

  • Pass accountName when you need customer-facing labeling (campaigns, store fronts). Skip it to fall back to your registered business name automatically.
  • Use a unique reference per transaction to keep your ledger idempotent.
  • Expire accounts as soon as the invoice is paid by deleting or ignoring them once you receive the webhook.
  • Display a countdown timer in your UI using the expiryTime so payers know when the account will close.