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

# Update a customer

> Change the externalId on an existing customer record.

Rebrands a customer record by changing its `externalId`. This is the
only mutable customer attribute.

`firstname` and `displayName` move with `externalId` — the create-time
invariant that `firstname` mirrors `externalId` for searchability is
preserved on update. If you depend on either of those fields in your
own systems, expect them to change.

Other customer attributes (`mobileNo`, `emailAddress`, names beyond
firstname) cannot be modified through this API. Close the customer and
create a new one if you need a different shape.

Two equivalent forms. **Prefer the externalId form** — address the
customer by the reference you already store, with no mapping to a numeric
LMS id. See [Addressing a customer](/customers/overview#addressing-a-customer).

## Path parameters

<ParamField path="customer_external_id" type="string" required>
  The customer's **current** externalId. On the alternative
  `/v1/customers/{customer_id}` form, the numeric LMS id is in the path
  instead.
</ParamField>

## Request body

<ParamField body="externalId" type="string" required>
  The **new** external identifier. Must be unique across all customers
  on the deployment.
</ParamField>

## Examples

```bash theme={null}
# By current externalId (recommended) — rename ext-ada-001 → ext-ada-002
curl -sf -X PUT "$BASE/v1/customers/external/ext-ada-001" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"externalId": "ext-ada-002"}'

# Same effect, by LMS id
curl -sf -X PUT "$BASE/v1/customers/42" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"externalId": "ext-ada-002"}'
```

## Response

`200 OK` returns the updated [customer object](/customers/overview).

```json theme={null}
{
  "id": "42",
  "accountNo": "000000042",
  "externalId": "ext-ada-002",
  "status": "Active",
  "active": true,
  "officeId": "1",
  "officeName": "Head Office",
  "firstname": "ext-ada-002",
  "lastname": "Customer",
  "displayName": "ext-ada-002 Customer",
  "activationDate": "2026-05-25"
}
```

## Errors

| Code               | When                                                        |
| ------------------ | ----------------------------------------------------------- |
| `invalid_argument` | `externalId` missing or empty                               |
| `not_found`        | No customer with that externalId or id                      |
| `aborted`          | A different customer already has the requested `externalId` |
