Skip to main content
This guide provides a technical walkthrough on programmatically verifying a customer account using the Busha API.
What You’ll Achieve:
  1. Update customer profile with KYC/KYB documents.
  2. Successfully verify your customer identity.

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).
  • A business customer account with KYC/KYB documents submitted.

Verifying Customer Identity (KYC/KYB)

1

Submit Customer KYC/KYB Documents

Skip this step if verification documents were attached when creating the customer.
The core requirement for verifying a customer is the completed upload of identification documents.
Files uploaded for KYC must be in Base64 format and have a file size less than 4MB.
Individual customerFor 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
To update an individual customer with their verification documents:
  1. Open your terminal or command prompt.
  2. Use the PUT request below to the /v1/customers/{customer_id} endpoint.
  3. Replace {customer_id} with the customer ID.
  4. Replace YOUR_BASE_URL with your chosen environment’s URL and {YOUR_SECRET_KEY} with your actual key.
  5. Replace the values in the identifying_information and documents array with the customer documents.
$ curl -i -X PUT https://YOUR_BASE_URL/v1/customers/{customer_id} \
  -H 'Authorization: Bearer {YOUR_SECRET_KEY}' \
  -H 'Content-Type: application/json' \
  -d '{
  "identifying_information": [
    {
      "type": "passport",
      "number": "AB12345",
      "country": "NG",
      "expiry_date": "2030-01-01",
      "image_front": "{{base64 string}}",
      "image_back": "{{base64 string}}"
    }
  ],
  "documents": [
    {
      "purposes": [
        "selfie_video"
      ],
      "file": "{{base64 string}}"
    }
  ]
}'
Business customerFor business customers, the KYB documents required are:
  • Certificate of Incorporation
  • Corporate registry extract
  • Memorandum of Association articles (memart)
  • Corporate structure chart
  • Board resolution
  • Anti-money laundering policy
  • Regulatory licenses
  • Proof of wealth
  • Proof of address
To update a business customer with their verification documents:
  1. Open your terminal or command prompt.
  2. Use the PUT request below to the /v1/customers/{customer_id} endpoint.
  3. Replace {customer_id} with the customer ID.
  4. Replace YOUR_BASE_URL with your chosen environment’s URL and {YOUR_SECRET_KEY} with your actual key.
  5. Replace the values in the documents array with the customer documents.
$ curl -i -X PUT https://YOUR_BASE_URL/v1/customers/{customer_id} \
  -H 'Authorization: Bearer {YOUR_SECRET_KEY}' \
  -H 'Content-Type: application/json' \
  -d '{
  "documents": [
    {
      "purposes": [
        "certificate_of_incorporation"
      ],
      "file": "{{base64 string}}"
    }
  ]
}'
2

Verify the Customer

To verify the identity and the information provided by the customer:
  1. Open your terminal or command prompt.
  2. Use the POST request below to the /v1/customers/{customer_id}/verify endpoint.
  3. Replace {customer_id} with the customer ID.
  4. 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/{customer_id}/verify" \
  -H 'Authorization: Bearer {YOUR_SECRET_KEY}'
Expected ResponseA successful response will be returned if the information provided by the customer is valid.
{ "status": "success", "message": "Customer verified successfully" }
An error message will be returned if the information provided by the customer is invalid. For example, the missing_section error is returned for a business customer with incomplete sections:
{
  "error": {
    "name": "missing_section",
    "message": "Owners section must be completed before final submission"
  }
}

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 verify customers, you can proceed to perform transactions on their behalf: