Reserved Accounts

Anchor Reserved Accounts is a feature that lets you create permanent virtual account numbers for each of your customers, making it easy to receive payments via bank transfers. Every customer gets their own unique 10-digits account number in their name, so payments are automatically linked to them—no need for manual reconciliation or payment references.

Why Use Reserved Accounts?
✔ Instant Payment Matching – Every transfer is tied to a customer, so no mix-ups.
✔ Faster Settlements – Receive payments in real-time.
✔ Better Customer Experience – Customers pay as they would to any regular bank account.
✔ Simpler Reconciliation – No more searching for who sent what.

📘

Supported banks

We currently support 9 Payment Service Bank and Providus Bank.

How to Create a Reserve Account

You can integrate Reserved Accounts using one of two approaches.

Single Request

With single request, you send a request to create a Reserved Account, and we take care of setting up both the customer and the account in one go. You need to pass the customer data and the preferred provider:

MethodEndpoint
POST{{baseUrl}}/pay/reserved-account

Sample request payload and response payloads.

curl --location 'https://payment.getanchor.co/pay/reserved-account' \
--header 'Content-Type: application/json' \
--header 'x-anchor-key: .' \
--data '{
    "data": {
        "type": "ReservedAccount",
        "attributes": {
            "provider": "ninepsb",
            "customer": {
                "individualCustomer": {
                    "fullName": {
                        "firstName": "Bright",
                        "lastName": "John-Olorunoje"
                    },
                    "email": "[email protected]",
                    "bvn": "22222222226"
                }
            }
        }
    }
}'
{
    "data": {
        "id": "17292389118727809633-anc_ra",
        "type": "ReservedAccount",
        "attributes": {
            "bank": {
                "provider": "ninepsb",
                "name": "9 Payment Service Bank"
            },
            "accountName": "John Doe",
            "accountNumber": "5031000017"
        },
        "relationships": {
            "merchant": {
                "data": {
                    "id": "17218985830710-anc_og",
                    "type": "Merchant"
                }
            },
            "customer": {
                "data": {
                    "id": "17256183549438442741-anc_ind_cst",
                    "type": "Customer"
                }
            }
        }
    }
}

Multi Request

  1. Please visit Onboarding on how to send a POST request to Create a Customer.
  2. To create a reserved virtual account for a customer, send a POST request to our Create Reserved Account endpoint. You only need to pass the preferred provider and customerid as relationship object
MethodEndpoint
POST{{baseUrl}}/pay/reserved-account

Sample request payload and response payloads.

curl --location 'https://payment.getanchor.co/pay/reserved-account' \
--header 'Content-Type: application/json' \
--header 'x-anchor-key: .' \
--data '{
    "data": {
        "type": "ReservedAccount",
        "attributes": {
            "provider": "ninepsb"
        },
        "relationships": {
            "customer": {
                "data": {
                    "id": "17256183549ew438442741-anc_ind_cst",
                    "type": "IndividualCustomer"
                }
            }
        }
    }
'
{
    "data": {
        "id": "17292389118727809633-anc_ra",
        "type": "ReservedAccount",
        "attributes": {
            "bank": {
                "provider": "ninepsb",
                "name": "9 Payment Service Bank"
            },
            "accountName": "John Doe",
            "accountNumber": "5031000017"
        },
        "relationships": {
            "merchant": {
                "data": {
                    "id": "17218985830710-anc_og",
                    "type": "Merchant"
                }
            },
            "customer": {
                "data": {
                    "id": "17256183549438442741-anc_ind_cst",
                    "type": "Customer"
                }
            }
        }
    }
}

When the customer attempts to make a transfer to the created account number, the account name will follow the format, Merchant Name / Customer Name.

📘

Account Limit

By default, you can generate up to 1000 reserved accounts for your customers. This limit can be increased upon review of your business and use-case. To increase the limit for your business, please send an email to [email protected]


Handling events

The reservedAccount.created event is sent on the successful creation of a Reserved Account, while the reservedAccount.failed event is sent when the account couldn't be created.

EventsDescription
reservedAccount.createdThis event is delivered to you when a reserved account is created.
reservedAccount.failedThis event is sent when a request to create deposit account fails.

Split Payout to a Sub Account from your Reserved Account

For customer that use our sub-ledger account solution, Payout to SubAccount allows you to automatically send the payins received into a Reserved Account to your sub account instead of the main Payout/Settlement account you set on your dashboard.

Add a Subaccount when creating a Reserved account

You can add a subaccount ID as a relationship to the payload when you're creating a reserved account

curl --location 'https://payment.getanchor.co/pay/reserved-account' \
--header 'Content-Type: application/json' \
--header 'x-anchor-key: .' \
--data '{
    "data": {
        "type": "ReservedAccount",
        "attributes": {
            "provider": "ninepsb",
            "customer": {
                "individualCustomer": {
                    "fullName": {
                        "firstName": "Bright",
                        "lastName": "John-Olorunoje"
                    },
                    "email": "[email protected]",
                    "bvn": "22222222226"
                }
            }
        },
        "relationships": {
            "payoutAccount":{
                "data":{
                    "id": "17266513044500-anc_subacc",
                    "type": "SubAccount"
                }
            }
        }
    }
}