6

Virtual Account

Accept payment from customers with a virtual dynamic or static account

Charles

Last Update 1 ปีที่แล้ว

Virtual Account

Belema Gateway provides merchants with the capability to generate both static and dynamic virtual accounts, enabling their customers to make seamless payments through bank transfers. With static accounts, customers can make repeated payments to the same merchant account, while dynamic accounts are typically generated for one-time or time-bound transactions, providing enhanced tracking and reconciliation. This virtual account functionality is particularly useful for automating payment collections and reducing manual entry errors. At present, this feature is exclusively available for transactions conducted in Nigerian Naira (NGN), allowing businesses operating within Nigeria to leverage efficient and localized payment solutions. 

Types of Virtual Account

Static Account

A static virtual account is a permanent, non-expiring account that is created by a merchant and uniquely assigned to a single customer. Unlike dynamic accounts, which are typically used for one-time transactions, static virtual accounts are intended for ongoing use. Once assigned, the customer can initiate bank transfers to the same account repeatedly without the need for generating a new one each time. This makes it ideal for subscriptions, recurring payments, or customer-specific payment tracking. The account remains active and usable for as long as the merchant chooses to keep it enabled. If necessary, the merchant has full control to deactivate the account, after which it will no longer accept payments. This setup simplifies reconciliation, enhances customer experience, and offers a consistent payment destination for trusted clients.

To create a static virtual account, call the create static account endpoint with this request body: 


With a static virtual account, the amount is not required during the transfer process. This is because the merchant has no prior knowledge of how much the customer—who has been assigned the static account—intends to send. You can think of a static account like sharing your regular bank account number with someone: they can transfer funds to it at any time, in any amount, as long as the account remains active.

Merchant may also need to provide customer bvn for verification purposes.

After the request is successfully sent to the server, it responds with a newly generated virtual account for that customer. The customer can then use this account to initiate a transfer at any time, providing a convenient and flexible way to make payments.

Dynamic Account

A dynamic virtual account is a temporary, single-use account generated by a merchant as part of the payment process on Belema Gateway. It can also be generated during the checkout stage on the Payment Gateway as a payment option. By default, each dynamic virtual account is configured to expire within 45 minutes of its creation. This time-bound nature ensures that the account is only valid for a short duration, enhancing security and reducing the risk of misuse. Once the 45-minute window elapses, the dynamic account becomes inactive and can no longer be used to receive payments. As such, customers are advised to complete their bank transfers promptly—within the valid time frame—to avoid failed transactions. If the dynamic virtual account expires before payment is made, a new one must be generated by restarting the checkout process. This mechanism is especially useful for one-time or time-sensitive payments, offering merchants a secure and efficient way to collect funds while keeping account usage tightly controlled

To create a dynamic virtual account, call the create dynamic account endpoint with this request body:

If a transaction reference is not explicitly provided, the system will automatically generate a random one. This reference typically consists of 12 characters and must be unique, ensuring it hasn't been used in any previous transaction. Additionally, the amount field is mandatory and must be greater than zero. While the customer's email address is required for processing, the mobile phone number is optional and can be left null.

After the request is sent to the server, the merchant receives a response with the generated account information.

Note: The customer must transfer the exact amount, otherwise the transaction will fail. 

Confirm virtual transfers

The merchant can confirm the status of the transfer by calling the Transaction Reference endpoint which expects a reference param. If the transaction was successful, a status = “SUCCESS” will be returned. If the transaction status is PENDING OR INITIALIZED, it simply means it is still in process, or the customer has not transferred the money yet.

If merchant relies on this approach by polling the endpoint at regular intervals, this can be inefficient and slow, as it relies on repeatedly checking the transaction status to determine when it changes before providing value or rendering a service to the customer.

A more efficient and real-time method is to use webhooks. Once a transfer is completed, a webhook is triggered and sent to the merchant's specified URL. This notification can be retried in case of failures, ensuring reliability. Upon receiving the webhook, the merchant should check if the transaction StatusCode is marked as "000" before crediting the customer or fulfilling the service.


Merchants are expected to configure and provide their webhook URL directly from the dashboard.

Below is an example of the webhook data

Activate/Deactivate Virtual Account

A merchant can also decide to deactivate a static virtual account after it has been created for a customer. Once a virtual account is deactivated it can no longer be used to initiate transfers and even resolve bank account. 

Was this article helpful?

2 out of 2 liked this article

Still need help? Message Us