Skip to main content
POST
/
v1
/
customers
Create a customer
curl --request POST \
  --url https://api-staging.bsa.ai/v1/customers \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "externalId": "<string>"
}
'

Documentation Index

Fetch the complete documentation index at: https://docs.lms.bsa.ai/llms.txt

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

Creates a new customer keyed to a partner-supplied externalId. The customer is created Active immediately — there’s no pending state for partner-created customers. The only field you choose is the externalId that ties the customer record back to your own system of record.

Request body

externalId
string
required
Your system’s identifier for this customer (account number, MSISDN, user UUID, whatever you use internally). Must be unique across all customers on the deployment. The customer’s displayName mirrors this value, so use something searchable.

Example

curl -sf -X POST "$BASE/v1/customers" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "externalId": "ext-ada-001"
  }'

Response

200 OK returns the full customer object.
{
  "id": "42",
  "accountNo": "000000042",
  "externalId": "ext-ada-001",
  "status": "Active",
  "active": true,
  "officeId": "1",
  "officeName": "Head Office",
  "firstname": "ext-ada-001",
  "lastname": "Customer",
  "displayName": "ext-ada-001 Customer",
  "activationDate": "2026-05-25"
}
The id (string) is what most subsequent calls use, but you don’t have to keep it — every read and update endpoint on customers also accepts your externalId:
  • GET /v1/customers?externalId=ext-ada-001 — point lookup
  • GET /v1/customers/external/ext-ada-001 — resource form (PUT, DELETE, .../close work too)
  • GET /v1/loans?customerExternalId=ext-ada-001 — that customer’s loans
  • GET /v1/credit-scorecard/ext-ada-001 — scorecard with totalOutstanding
See externalIds for the full addressing convention.

Errors

CodeWhen
invalid_argumentexternalId missing or empty in the request body
abortedA customer with the same externalId already exists