Prerequisites
Before you begin, ensure you have:- A Busha Business Account and Secret API Key (from the Quick Start Tutorial).
- An understanding of API Environments (Sandbox vs. Production) and their base URLs (from the Make Your First Request Guide).
Creating an Individual Customer Account
1
Understand Customer Creation Parameters
The essential parameters for creating an individual customer type are:
For the
Know Your Customer (KYC)Optionally, you can choose to upload your customer’s KYC documents at the point of creation in the KYC Document Requirements:For individual customers, you must provide ONE of the following combinations in the Option 2: National ID + Selfie
For a full list of acceptable documents, please refer to the Compliance Guide.Adding a BVNYou can optionally include a customer’s Bank Verification Number (BVN) as an additional entry in A BVN is not required for standard KYC verification, but it is required if you want to generate a virtual NGN bank account for the customer via
| Parameter | Type | Description |
|---|---|---|
email | string | The individual customer’s email address. |
has_accepted_terms | boolean | A flag indicating whether the individual has accepted your platform’s (or Busha’s) terms and conditions. |
type | string | The type of customer. Must be individual for this customer
type. |
country_id | string | The ISO 3166-1 alpha-2 country code representing the individual’s primary country of residence. |
phone | string | The individual’s phone number, including the international country code (e.g., +234 8012345678). |
birth_date | string | The individual’s date of birth, typically required for identity verification. Format: DD-MM-YYYY. |
first_name | string | The individual customer’s first name. |
middle_name | string | The individual customer’s middle name (optional). |
last_name | string | The individual customer’s last name. |
address | object | The individual’s physical address details. See the Address Object Parameters table below for nested fields. |
identifying_information | array | An array of objects describing the individual’s identification documents and selfie image (e.g., passport + selfie, national ID + selfie). |
address field in the customer creation object, the fields required are:| Parameter | Type | Description |
|---|---|---|
city | string | The city component of the address. |
state | string | The state or region component of the address. |
county | string | The county or district component of the address (optional). |
country_id | string | The ISO 3166-1 alpha-2 country code of the address. |
address_line_1 | string | The first line of the street address. |
address_line_2 | string | The second line of the street address (optional). |
province | string | The province component of the address (optional). |
postal_code | string | The postal or ZIP code of the address. |
identifying_information array field.Files uploaded for KYC must be in Base64 format and have a file size less than
4MB.
identifying_information array:Option 1: Passport + Selfie| Country | Documents Required |
|---|---|
| Nigeria |
|
| Kenya |
|
identifying_information:GET /v1/virtual_bank_accounts/{code}. Attempting to request a virtual bank account for a customer without a BVN on file returns an err_bvn_verification_required error. You can add a BVN at creation time using the payload above, or afterward using PUT /v1/customers/{customer_id}.2
Create a Customer (Without KYC Documents)
Individual customers refer to persons who engage with your services. Start with basic information and add KYC documents later.To create an individual customer without KYC documents:Expected Response:A successful response will return a Customer object with
- Open your terminal or command prompt.
- Use the
POSTrequest below to the/v1/customersendpoint. - Replace
YOUR_BASE_URLwith your chosen environment’s URL and{YOUR_SECRET_KEY}with your actual key.
status: "inactive" until KYC is completed.The default status of a customer is
inactive until they complete their Know-Your-Customer (KYC) process.3
Create a Customer (With KYC Documents)
Create a verified customer by including KYC documents at creation.To create a customer with supporting KYC documents:Example with National ID + Selfie:Expected Response:
- Open your terminal or command prompt.
- Use the
POSTrequest below to the/v1/customersendpoint. - Replace
YOUR_BASE_URLwith your chosen environment’s URL and{YOUR_SECRET_KEY}with your actual key.
The status remains
inactive until the documents are verified. Call the verify endpoint to submit for verification.4
Verify the Customer
After creating a customer with KYC documents, verify them to activate their account.To verify a customer:Expected Response:A successful verification will return:Common Errors:
- Open your terminal or command prompt.
- Use the
POSTrequest below to the/v1/customers/{customer_id}/verifyendpoint. - Replace
{customer_id}with the customer ID from the previous response. - Replace
YOUR_BASE_URLwith your chosen environment’s URL and{YOUR_SECRET_KEY}with your actual key.
After verification, check the customer status. It will change from
inactive to in_review or active.profile_kyc_verification: KYC documents are missing or incomplete (e.g., no selfie image)
PUT /v1/customers/{customer_id}, then retry verification.Complete Example: Create and Verify Customer
Here’s a complete workflow to create and verify an individual customer: Step 1: Create customer with KYC documents (Passport + Selfie)"status": "in_review" or "status": "active"
Customer Status Flow: 1.
inactive - Default status after creation 2.
in_review - After calling verify endpoint with valid documents 3. active -
After verification approval (automatic in sandbox, manual review in
production)Troubleshooting
- 400 Bad Request / 422 Unprocessable Entity: Review your request body to ensure all required fields are present and correctly formatted.
- 401 Unauthorized: Verify that your Secret API Key is correct and included in the header.
- Email validation error: Use real email domains like
@gmail.cominstead of generic domains like@example.com. profile_kyc_verificationerror during verification: Ensure all required documents (ID images and selfie image) are uploaded before calling verify.err_bvn_verification_requiredwhen requesting a virtual bank account: The customer doesn’t have a BVN on file. Add one viaPUT /v1/customers/{customer_id}using thebvntype inidentifying_information, then retry.
What’s Next?
Now that you can programmatically create and verify individual customers, you can proceed to manage them and perform transactions on their behalf:- How to Create a Business Customer: Learn how to create a business customer in your Busha business account.
- How to Verify Customer’s Identity (KYC/KYB): Learn more about the verification process and required documents.
- How to Initiate Transactions on Behalf of a Customer: Understand how to use the
customer_idto perform operations for your customers. - Webhook Events: Learn about customer verification webhook events.