Skip to main content
This guide provides a technical walkthrough on programmatically creating an individual customer account within your Busha Business account using the Busha API. By automating customer creation, you can streamline your onboarding processes and prepare to perform transactions on behalf of your customers.
What You’ll Achieve:
  1. Understand the basic structure for creating a customer.
  2. Learn how to structure API requests for individual customer types.
  3. Successfully create and retrieve customer accounts programmatically.

Prerequisites

Before you begin, ensure you have:

Creating an Individual Customer Account

1

Understand Customer Creation Parameters

The essential parameters for creating an individual customer type are:
ParameterTypeDescription
emailstringThe individual customer’s email address.
has_accepted_termsbooleanA flag indicating whether the individual has accepted your platform’s (or Busha’s) terms and conditions.
typestringThe type of customer. Must be individual for this customer type.
country_idstringThe ISO 3166-1 alpha-2 country code representing the individual’s primary country of residence.
phonestringThe individual’s phone number, including the international country code (e.g., +234 8012345678).
birth_datestringThe individual’s date of birth, typically required for identity verification. Format likely DD-MM-YYYY.
first_namestringThe individual customer’s first name.
middle_namestringThe individual customer’s middle name.
last_namestringThe individual customer’s last name.
addressobjectThe individual’s physical address details. See the Address Object Parameters table below for nested fields.
identifying_informationarrayAn array of objects describing the individual’s identification documents (e.g., passport, national ID).
documentsarrayAn array of objects referencing uploaded documents for various purposes (e.g., proof of address).
For the address field in the customer creation object, the fields required are:
ParameterTypeDescription
citystringThe city component of the address.
statestringThe state or region component of the address.
countystringThe county or district component of the address (may be optional or region-specific).
country_idstringThe ISO 3166-1 alpha-2 country code of the address.
address_line_1stringThe first line of the street address.
address_line_2stringThe second line of the street address (e.g., apartment, suite number, or building name).
provincestringThe province component of the address (may be optional or region-specific).
postal_codestringThe postal or ZIP code of the address.
Know Your Customer (KYC)Optionally, you can choose to upload your customer’s KYC documents at the point of creation in the identifying_information and documents array field in the original request body.
Files uploaded for KYC must be in Base64 format and have a file size less than 4MB.
The identifying_information array expects the object(s) in this format:
"identifying_information": [
    {
      "type": "national-id",
      "number": "ENTER NIN HERE",
      "country": "NG",
      "image_front": "",
      "image_back": ""
    }
]
For individual customers, the KYC documents required, depending on your country, are:
CountryDocuments Required
Nigeria
  • NIN slip and selfie video
  • National passport and selfie video
  • Driver’s license and selfie video
Kenya
  • National ID and selfie video
The document array expects the object(s) in this format:
"documents": [
    {
      "purposes": [
        "selfie_video"
      ],
      "file": "{{base64 video data uri here}}"
    }
]
For a full list of acceptable documents, please refer to the Customer API Reference.
2

Create a Customer (Without KYC Documents)

Individual customers refer to persons who engage with your services.To create an individual customer:
  1. Open your terminal or command prompt.
  2. Use the POST request below to the /v1/customers endpoint.
  3. Replace YOUR_BASE_URL with your chosen environment’s URL and {YOUR_SECRET_KEY} with your actual key.
$ curl -i -X POST https://YOUR_BASE_URL/v1/customers \
  -H 'Authorization: Bearer {YOUR_SECRET_KEY}' \
  -H 'Content-Type: application/json' \
  -d '{
    "email": "trybusha@busha.so",
    "has_accepted_terms": true,
    "type": "individual",
    "country_id": "NG",
    "phone": "+234 8012345678",
    "birth_date": "24-12-2000",
    "address": {
      "city": "Lekki",
      "state": "Lagos",
      "county": "Mombasa",
      "country_id": "NG",
      "address_line_1": "RT Lawal",
      "address_line_2": "",
      "province": "province",
      "postal_code": "12345"

},
"first_name": "Busha",
"middle_name": "Crypto",
"last_name": "Mascot"
}'

Expected Response:A successful response will return a Customer object, providing the customer ID (CUS_IL2Qf2pEoNADZ), the customer type (individual) as set in the request body and the status of the customer.
The default status of a customer is inactive until the user completes their Know-Your-Customer (KYC) process.
{
  "status": "success",
  "message": "Created customer successfully",
  "data": {
    "address": {
      "address_line_1": "RT Lawal",
      "address_line_2": "",
      "city": "Lekki",
      "country_id": "NG",
      "county": "Mombasa",
      "postal_code": "12345",
      "province": "province",
      "state": "Lagos"
    },
    "business_id": "BUS_jlKUYwF9z1ynQZ98bWbaP",
    "country_id": "NG",
    "created_at": "2025-06-25T22:08:08.978994644Z",
    "deposit": true,
    "display_currency": "NGN",
    "email": "trybusha@busha.so",
    "first_name": "Busha",
    "has_accepted_terms_of_service": true,
    "id": "CUS_IL2Qf2pEoNADZ",
    "last_name": "Mascot",
    "middle_name": "Crypto",
    "payout": true,
    "phone": "+234 8012345678",
    "status": "inactive",
    "type": "individual",
    "updated_at": "2025-06-25T22:08:08.978994644Z"
  }
}
3

Create a Customer (With KYC Documents)

You can add a customer’s KYC documents at the point of creation. Let’s create a customer with supporting KYC documents.To create a customer with supporting KYC documents:
  1. Open your terminal or command prompt.
  2. Use the POST request below to the /v1/customers endpoint.
  3. Replace YOUR_BASE_URL with your chosen environment’s URL and {YOUR_SECRET_KEY} with your actual key.
$ curl -i -X POST https://YOUR_BASE_URL/v1/customers \
  -H 'Authorization: Bearer {YOUR_SECRET_KEY}' \
  -H 'Content-Type: application/json' \
  -d '{
  "first_name": "Toni",

"last_name": "Busha",
"email": "hello@busha.co",
"has_accepted_terms": true,
"type": "individual",
"country_id": "NG",
"phone": "+234 8094678128",
"birth_date": "24-12-2000",
"address": {
"city": "Lekki",
"state": "Lagos",
"county": "Mombasa",
"country_id": "NG",
"address_line_1": "RT Lawal",
"address_line_2": "",
"province": "province",
"postal_code": "12345"
},
"identifying_information": [
{
"type": "national-id",
"number": "ENTER NIN HERE",
"country": "NG",
"image_front": "",
"image_back": ""
}
],
"documents": [
{
"purposes": [
"selfie_video"
],
"file": "{{base64 video data uri here}}"
}
]
}'

Expected Response:A successful response will return a Customer object, providing the customer ID CUS_IJIpmM0RqueY6), the customer type (individual) as set in the request body and the status of the customer.
The default status of a customer is inactive until the documents uploaded are verified.
{
  "status": "success",
  "message": "Created customer successfully",
  "data": {
    "address": {
      "address_line_1": "RT Lawal",
      "address_line_2": "",
      "city": "Lekki",
      "country_id": "NG",
      "county": "Mombasa",
      "postal_code": "12345",
      "province": "province",
      "state": "Lagos"
    },
    "business_id": "BUS_jlKUYwF9z1ynQZ98bWbaP",
    "country_id": "NG",
    "created_at": "2025-06-26T13:38:18.351095748Z",
    "deposit": true,
    "display_currency": "NGN",
    "email": "hello@busha.co",
    "first_name": "Toni",
    "has_accepted_terms_of_service": true,
    "id": "CUS_IJIpmM0RqueY6",
    "last_name": "Busha",
    "payout": true,
    "phone": "+234 8094678128",
    "status": "inactive",
    "type": "individual",
    "updated_at": "2025-06-26T13:38:18.351095748Z"
  }
}

Troubleshooting

  • 400 Bad Request / 422 Unprocessable Entity: Review your request body to ensure all required fields are present and correctly formatted for the specified type (individual or business).
  • 401 Unauthorized: Verify that your Secret API Key is correct and included in the header.

What’s Next?

Now that you can programmatically create individual customers, you can proceed to create a business customer, manage, and perform transactions on their behalf: