Who can have an account
An account is for one person who lives in Nigeria and is Nigerian. We send every application to the broker as an individual’s, with Nigeria as the country of residence and the nationality: the only value the broker publishes for each. The API doesn’t open joint accounts or accounts for companies. The broker specifies no minimum age and decides each application: a refusal comes back as one of the application reject reasons, or asuncertain if the broker gives a reason it doesn’t publish.
Your customer’s identity
Know your customer (KYC) checks are yours: you check your customer’s identity before you apply, as your own obligations require. The API takes no documents, only the fields of the application. The broker checks the BVN, and refuses one it can’t accept withinvalid_field.
1. Look up the codes
Four fields take a code from the broker’s lists, not free text:2. Send the application
SendPOST /v1/applications with a new Idempotency-Key. In the sandbox, change bvn and email first: see In the sandbox.
Response
Then the broker checks the application. It publishes these formats:
Where the broker publishes no format, we send the field as you write it, trimmed of spaces at each end, so check it before you send,
phone included. The sandbox takes any phone number. Send mothers_maiden_name whenever you have it.
When the broker refuses one field, you get 422 application_rejected with reject_reason invalid_field and param naming the field. When it refuses the application as a whole, reject_reason is rejected_by_broker and there’s no param. An error never repeats a field’s value.
If the broker refuses an application with a reason it doesn’t publish, we record it as uncertain, and our operations team reconciles it with the broker. An uncertain application the broker does not hold ends unplaced: contact us with its id before you send it again.
3. Read the answer
Every other refusal, and whether each one stored your key, is in Idempotency.
If a corrected application comes back
already_at_broker, don’t send it again: contact us with the id of each application. The broker doesn’t specify whether it keeps an application it refused. The sandbox’s broker doesn’t, so there a corrected application with the same BVN is accepted.
4. Wait for the account to open
The broker decides how long its review takes. While we can reach the broker, we check on submitted applications about every 30 seconds. Each check asks about up to 20 applications, across all partners, the ones asked about longest ago first. We keep asking about each application for 30 days after you send it. When the broker opens the account, we record the application asopened, with the account code in account, and you receive an application.opened event carrying it:
Opened application
GET /v1/accounts, with application set to the application’s id.
From the broker’s answer about an application we read only its account number: the broker doesn’t publish the statuses its answer can carry, so a decline cannot be read from it. When the broker declines an application, our operations team records it as rejected, with reject_reason declined_by_broker.
If an application is still submitted 30 days after you sent it, we stop asking. Contact us with its id.
Application states
Each move to a state after
sending sends an application.<state> event.
A customer the broker already knows
The broker refuses an application when its BVN or its email address already belongs to one of the broker’s customers, or when its BVN matches an application the broker already holds. All three come back as422 application_rejected with reject_reason already_at_broker. The answer tells you the broker already knows that BVN or email address. It doesn’t say which, or whether the person is a customer or an applicant.
Don’t send the same application again. If your customer already has an account with the broker, we can link it to you. Contact us with the application’s id, and we tell you how to send the customer’s written consent. Once the broker confirms the account is theirs, we link it to you, and you use its account code as you would any other.
What the API doesn’t do yet
Once an account is open, the API can’t yet change a customer’s details, close the account, or move its shares to another broker. For any of these, send us the account code and what you need, without the customer’s personal details, and we take it to the broker.In the sandbox
A submitted application opens automatically at our next check, so you can follow it toopened and receive the event. One test value makes the broker reject an application at once instead: see Test values. In the sandbox you can send that application again. In live, contact us before you send a rejected_by_broker application again.
The sandbox’s broker also refuses an email without an @, and a code that isn’t in its lists, so you can rehearse invalid_field and a corrected resend. It takes any phone number, postcode, name or bank account number.
The sandbox’s broker keeps the BVN and email address of every application it accepts, from every partner, until the sandbox restarts. It refuses a second application with either as 422 application_rejected with reject_reason already_at_broker. Before you send the example above, change its bvn to another valid BVN that isn’t all zeros (a test value), and its email to an address of your own. The Postman collection does this on each run.