Create an Individual Customer

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.

PrerequisitesCopied!

Before you begin, ensure you have:

Step 1: Understand Customer Creation ParametersCopied!

The essential parameters for creating an individual customer type are:

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 likely DD-MM-YYYY.

first_name

string

The individual customer's first name.

middle_name

string

The individual customer's middle name.

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 (e.g., passport, national ID).

documents

array

An 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:

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 (may be optional or region-specific).

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 (e.g., apartment, suite number, or building name).

province

string

The province component of the address (may be optional or region-specific).

postal_code

string

The 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:

Country

Documents 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.

Step 2: Create a Customer (Without KYC Documents)Copied!

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"
  }
}

Step 3: Create a Customer (With KYC Documents)Copied!

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"
  }
}

TroubleshootingCopied!

  • 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?Copied!

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