Skip to main content

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.

A customer is a borrower record. Every loan in the system is tied to exactly one customer. New customers created via this API are Active immediately — there’s no pending state for partners to manage. The remaining lifecycle transition is just Active → Closed.

The customer object

id
string
Unique customer identifier. Treat as opaque.
accountNo
string
Human-readable account number assigned at creation.
externalId
string
Optional client-assigned external ID. Useful for correlating to your own systems.
status
string
Status label (e.g. Pending, Active, Closed).
active
boolean
Whether the customer is currently active and can hold loans.
officeId
string
ID of the office (branch) the customer belongs to.
officeName
string
Display name of the office.
firstname
string
middlename
string
lastname
string
displayName
string
Computed full name.
mobileNo
string
emailAddress
string
dateOfBirth
string
ISO-8601 YYYY-MM-DD.
activationDate
string
ISO-8601 YYYY-MM-DD. Present only after activation.
submittedDate
string
ISO-8601 YYYY-MM-DD.

Addressing a customer

Every resource-level customer endpoint accepts two equivalent path prefixes. Prefer the externalId form — it lets you drive integrations off the identifier you already store, with no client-side mapping back to a numeric LMS id.
FormPath prefixWhen to use
By externalId (recommended)/v1/customers/external/{customer_external_id}/...Use the externalId you supplied on POST /v1/customers.
By LMS id/v1/customers/{customer_id}/...Use the numeric id returned from POST /v1/customers.
Both forms hit the same handlers and return identical responses. An unknown externalId returns 404 not_found.
# By externalId (recommended)
curl "$BASE/v1/customers/external/ext-ada-001" -H "Authorization: Bearer $TOKEN"

# Same customer, by LMS id
curl "$BASE/v1/customers/42" -H "Authorization: Bearer $TOKEN"

Endpoints

Each row below has an equivalent form under /v1/customers/external/{customer_external_id}/... — substitute the prefix when addressing the customer by externalId.
MethodPathPurpose
POST/v1/customersCreate a customer
GET/v1/customersList customers (paginated; ?externalId= for point lookup)
GET/v1/customers/{customer_id}Get one
PUT/v1/customers/{customer_id}Update the externalId
DELETE/v1/customers/{customer_id}Delete (only in pending state)
POST/v1/customers/{customer_id}/closeClose an active customer