This feature allows you to generate a virtual account for your customers. The account number generated is dedicated to a customer and every payment to that virtual account is associated with the customer for which the account was reserved.
These accounts are very useful for merchants whose;
{"accountReference": "abc123","accountName": "Test Reserved Account","currencyCode": "NGN","contractCode": "8389328412","bvn": "21212121212","customerName": "John Doe","getAllAvailableBanks": true}
{"requestSuccessful": true,"responseMessage": "success","responseCode": "0","responseBody": {"contractCode": "8389328412","accountReference": "abc1234","accountName": "Tes","currencyCode": "NGN","customerName": "John Doe","accounts": [{"bankCode": "50515","bankName": "Moniepoint Microfinance Bank","accountNumber": "6254727989","accountName": "Tes"}],"collectionChannel": "RESERVED_ACCOUNT","reservationReference": "NWA7DMJ0W2UDK1KN5SLF","reservedAccountType": "GENERAL","status": "ACTIVE","createdOn": "2023-04-14 12:04:39.034","incomeSplitConfig": [],"bvn": "21212121212","restrictPaymentSource": false}}
Monnify invoice reserved account allows you to reserve an account for your customers to whom you send invoices to regularly. This account can be attached to invoices being generated for a customer so that the same account number is received for every invoice peculiar to that customer.
These accounts are slightly different from regular customer reserved accounts as customers cannot pay into these accounts until they are attached to an invoice. Basically, the account number is inactive until when attached to an invoice and returns to it's inactive state when the invoice is paid.
See Invoice Reserved-Account API for details on how to implement one.
To create reserved account via the Monnify dashboard, kindly navigate to the reserved account section, click on the “create new” button and populate the fields shown in the image below;
The incomeSplitConfig field allows you to use split payments with your reserved accounts by specifying one or more sub-account(s) and a specific percentage of each payment to be credited into each sub-account. IncomeSplitConfig is an array of objects so you can split into multiple sub-accounts per transaction.
{"accountReference": "abc123","accountName": "Test Reserved Account","currencyCode": "NGN","contractCode": "8389328412","customerName": "John Doe","bvn": "21212121212","nin": "12034875601","getAllAvailableBanks": true"incomeSplitConfig": [{"subAccountCode": "MFY_SUB_319452883228","feePercentage": 10.5,"splitPercentage": 20,"feeBearer": true}]}
You can establish a limit on a customer's account using the Transaction Limit APIs. This means that on a customer's account, you can specify the maximum amount per transaction, the maximum number of transactions per day, and the total amount per day.
To do so, you will need to create a Limit Profile and use the Limit Profile code to assign customers to the limit profile.
In managing Transaction Limits, you can do the following
Merchants are able to restrict source accounts that can fund a reserved account using either BVNs or Account Name or Account Number. This is mandatory if the restrictPaymentSource request parameter is set to true.
This feature is useful for merchants in a regulated business category, where only the authorized user(s) of a reserved account should fund the reserved account, to allow more payment sources, only BVNs will be used to allow more payment sources other than the default customerBvn already on a reserve account.
The rule application is as follows:
{"accountReference": "abc123","accountName": "Test Reserved Account","currencyCode": "NGN","contractCode": "8389328412","customerName": "John Doe","bvn": "21212121212","restrictPaymentSource": true,"allowedPaymentSources": {"bvns": ["21212121212", "20202020202"],"bankAccounts": [{"accountNumber": "0068687503","bankCode": "232"},{"accountNumber": "2048714015","bankCode": "057"}],"accountNames": ["SAMUEL DAMILARE OGUNNAIKE"]}}
{"requestSuccessful": true,"responseMessage": "success","responseCode": "0","responseBody": {"contractCode": "8389328412","accountReference": "abc123","accountName": "Tes","currencyCode": "NGN","customerName": "John Doe","accounts": [{"bankCode": "50515","bankName": "Moniepoint Microfinance Bank","accountNumber": "6254727989","accountName": "Tes"}],"collectionChannel": "RESERVED_ACCOUNT","reservationReference": "NWA7DMJ0W2UDK1KN5SLF","reservedAccountType": "GENERAL","status": "ACTIVE","createdOn": "2023-04-14 12:04:39.034","incomeSplitConfig": [],"bvn": "21212121212","restrictPaymentSource": true,"allowedPaymentSources": {"bvns": ["21212121212", "20202020202"],"bankAccounts": [{"accountNumber": "0068687503","bankCode": "232"},{"accountNumber": "2048714015","bankCode": "057"}],"accountNames": ["SAMUEL DAMILARE OGUNNAIKE"]}}}
The Update Kyc Info API allows merchants to link a customer's BVN and/or NIN to their respective static reserved account.
The API accepts either the customer’s BVN or NIN or both, subject to the following merchant requirements:
Error Message | Meaning | Action |
---|---|---|
You can not reserve two accounts with the same reference. | The accountReference parameter in the request payload has already been used by you. | Retry with a unique accountReference |
You cannot reserve more than 1 account(s) for a customer. Please contact support for assistance. | There is an exisiting active reserved account generated with this customerEmail. | Kindly share exsting account details with your customer. |
Invalid contract code supplied. | The contractCode in the request parameter is not correct or it doesn’t belong to the merchant. | Navigate to the "Settings > Contract Setup", section of your Monnify dashboard to get your contact code |
Is invalid. Must be 11 digits | This most times implies that the BVN provided is invalid | If BVN/NIN is supplied, confirm that it has the required length |
BVN or NIN is required. | BVN and NIN were not supplied in the request payload. | Retry with the BVN and/or NIN details of the customer. |
Unknown currency code supplied. | The currency code supplied is not valid or supported | Reconfirm the currency code supplied |
We do not support virtual accounts from banks with code XXX. | This implies that we do not create virtual account for some of the bank codes passed in the preferredBanks array | Retry with any of the supported bank codes |
Unknown sub account code XXXXXXX. | The happen when using the incomeSplitConfig and the sub account doesn’t belong to the merchant. | Kindly confirm from the SubAccount section of your Monnify dashboard if the subAccount being used exists there |
R42 | You cannot reserve more than 1 account(s) for a customer. Please contact support for assistance. | Kindly use unique customer email when generating reserved account |