Skip to main content
PUT
/
api
/
external
/
customer
/
{id}
Update a customer
curl --request PUT \
  --url https://api-prod.blaaiz.com/api/external/customer/{id} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "first_name": "Oluwatobi",
  "last_name": "Ishola",
  "business_name": "Blaaiz",
  "email": "oluwatobi.ishola+customer@blaaiz.com",
  "phone": "+2348012345678",
  "country": "NG",
  "id_type": "passport",
  "id_number": "A123456789",
  "tin": "12345-ABCDE",
  "dob": "1996-08-21",
  "street": "12 Admiralty Way",
  "city": "Lagos",
  "state": "Lagos",
  "zip_code": "101233",
  "id_expiry_date": "2030-12-31",
  "id_issue_date": "2020-01-15"
}
'
{
  "message": "Customer updated successfully",
  "data": {
    "id": "9d4c4ec5-59ea-4130-bf8a-6a5edec401ee",
    "business_id": "9d4c4ec5-572d-49de-a362-f01ed09f2b1b",
    "type": "individual",
    "first_name": "John",
    "last_name": "Doe",
    "business_name": null,
    "email": "john.doe@example.com",
    "phone": "+2348098765432",
    "country": "NG",
    "id_type": "passport",
    "id_number": "A12345678",
    "registration_number": null,
    "incorporation_country": null,
    "verification_status": "VERIFIED",
    "created_at": "2024-01-15T10:30:00.000000Z",
    "updated_at": "2024-01-15T11:00:00.000000Z"
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.business.blaaiz.com/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

Use your OAuth client credentials to obtain a short-lived Bearer token from POST /oauth/token.

Path Parameters

id
string
required

Customer ID

Body

application/json

kyb_scope is read-only here. It cannot be modified through this endpoint — sending it returns 422. To upgrade a MINIMAL customer to FULL, use POST /customer/{id}/upgrade-kyb-scope. There is no downgrade path.

first_name
string
last_name
string
business_name
string
email
string<email>
phone
string
country
string

ISO alpha-2 country code of the registered address. For type=individual, must match the country on the identity document. For type=business, must equal incorporation_country (cross-field check at validation time). When changing the jurisdiction, send both country and incorporation_country together — sending only one leaves the other at its persisted value, which produces a divergence and 422.

id_type
enum<string>

Personal identity document type. Individual customers only. For business customers id_type is prohibited on update — businesses identify via registration_number + incorporation_country. Sending id_type on a business returns 422. ID cards (National Identity Cards) are not accepted. As with all verified-customer fields, an existing non-null value cannot be changed via this endpoint.

Available options:
drivers_license,
passport,
resident_permit
id_number
string

Personal identity document number. Individual customers only. For business customers id_number is prohibited on update — businesses identify via registration_number. Sending id_number on a business returns 422. Subject to the same verified-field-locking as other identity fields.

tin
string

Tax identification number (varies by country). Where applicable, use the Get Identification Type endpoint to determine the correct label or field to collect for the customer's country and type.

dob
string<date>
street
string
city
string
state
string
zip_code
string
id_expiry_date
string<date>
id_issue_date
string<date>
operating_street
string

Business operating address — street. Subject to verified-field-locking like other identity fields.

operating_city
string

Business operating city.

operating_state
string

Business operating state.

operating_zip_code
string

Business operating zip / postal code. Validated against operating_country. If you update only operating_zip_code, the persisted operating_country is used as the anchor.

operating_country
string

Business operating address country, as ISO alpha-2. Anchors postal-code validation for operating_zip_code. Can differ from country and incorporation_country when the business operates from elsewhere.

trading_name
string

Business KYB field.

business_type
enum<string>

Business KYB field. Legal entity type.

Available options:
corporation,
government_entity,
llc,
non_profit,
other,
partnership,
sole_proprietorship
registration_number
string

Business KYB field. Unique per business: two of your customers cannot share the same (registration_number, incorporation_country) pair.

incorporation_country
string

Business KYB field — legal jurisdiction of incorporation, as ISO alpha-2. Distinct from country (registered-address country) and operating_country (operating-address country); for businesses, country must equal incorporation_country.

incorporation_date
string<date>

Business KYB field.

industry_type
string

Business KYB field.

business_description
string

Business KYB field.

website
string<uri>

Business KYB field.

source_of_funds
enum<string>

Business KYB field.

Available options:
business_revenue,
business_loans,
investment_income,
third_party_funds,
other
estimated_annual_revenue
enum<string>

Business KYB field. Estimated annual revenue band, in USD.

Available options:
0_99999,
100000_499999,
500000_999999,
1000000_4999999,
5000000_24999999,
25000000_99999999,
100000000_249999999,
250000000_plus
expected_monthly_payments
integer

Business KYB field.

account_purpose
enum<string>

Business KYB field.

Available options:
receive_payments_for_goods_and_services,
send_payments_for_goods_and_services,
send_receive_funds_related_parties,
other
owners
object[]

Business KYB field. Manage beneficial owners with this array — include the owner's id to update an existing owner, omit id to create a new one. To delete an owner, use DELETE /api/external/customer/{customer}/owner/{owner}. Locked owners (status APPROVED or PROCESSING) cannot be edited and will return 400. The status and admin_comments fields are admin-managed; if you send them they are silently ignored. Rejected entirely if type=individual.

Maximum array length: 5

Response

Customer updated successfully

status
boolean
required
message
string
required
data
object
required

Updated customer record. Same shape as GET /customer/{id} (see that endpoint for the full schema including kyc_data, owners, documents, business KYB fields, etc.).