Update customer
PUT
/api/customers/{id}
deprecated
Requires: Customers.Customers, Customers.Customers.Update, merchant scope.
Updates an existing customer's information and payment preferences.
Signed in, you can send this request to your own sandbox merchant from the console and read the answer. Sign in to try it.
Example request
Every block below sends the same request. Replace {{BASE_URL}} with the address of the API you are calling and {{API_KEY}} with your own key.
The request body is a CustomerUpdateDto. See the Request body section below for its fields.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
id
required |
path | string (uuid) | |
suppressNulls
required |
query | boolean | If true, omit properties with null values. |
Request body
application/json
, required
| Field | Type | Description |
|---|---|---|
createdFromTemplateId
required |
string (uuid) | nullable |
name
required |
string | Gets or sets the name of the customer. Must be unique within the owning merchant, compared case-insensitively. Use `displayName` for a human label that may repeat. nullablemin length 2max length 100 |
displayName
required |
string | An optional human-readable label for the customer that is deliberately not unique. Supply it when the recognisable name for two customers is legitimately the same and `name` carries an external key instead. When present it is what merchants see wherever customers are listed; when absent those surfaces fall back to `name`. At most 100 characters. nullablemax length 100 |
merchantAssignedId
required |
string | An optional identifier the merchant assigns to the customer as a friendly reference, distinct from the system Guid `id` and the server-owned legacy number. Surfaces the v1 API's `CustomerId` field. Not an `EditFormField`: it is set through the API rather than the standard customer form. nullablemax length 50 |
merchantId
required |
string (uuid) | Gets or sets the identifier of the merchant that owns this customer. |
isActive
required |
boolean | Gets or sets a value indicating whether this customer is active. |
contactDetail
required |
all of CustomerContactDetail | Gets or sets the customer's contact details (email, phone, address). |
tags
required |
array of EntityTag | Gets or sets the collection of tags used to categorize or label this customer. nullable |
storedPaymentMethods
required |
array of CustomerStoredPaymentMethod | Gets or sets the customer's stored payment methods for recurring or future transactions. nullable |
contracts
required |
array of Contract | Gets or sets the recurring billing contracts associated with this customer. nullable |
notes
required |
array of EntityNote | Operational notes attached to the customer. nullable |
concurrencyStamp
required |
string | Gets or sets the concurrency stamp used for optimistic concurrency control. nullable |
This request body has no documented fields.
Responses
200 OK
Body: CustomerDto
Each item has these fields.
| Field | Type | Description |
|---|---|---|
id
required |
string (uuid) | |
creationTime
required |
string (date-time) | The date and time when this entity was created. |
creatorId
required |
string (uuid) | The ID of the user who created this entity. nullable |
lastModificationTime
required |
string (date-time) | The date and time when this entity was last modified. nullable |
lastModifierId
required |
string (uuid) | The ID of the user who last modified this entity. nullable |
isDeleted
required |
boolean | Indicates whether this entity has been deleted. |
deleterId
required |
string (uuid) | The ID of the user who deleted this entity, if it is deleted. nullable |
deletionTime
required |
string (date-time) | The date and time when this entity was deleted, if it is deleted. nullable |
createdFromTemplateId
required |
string (uuid) | The template this record was created from, or `null` for one started blank. Set by the create-from-template path and by the add/edit page's Load Template action when the record is saved. nullable |
name
required |
string | Gets or sets the name of the customer. Unique within the owning merchant, compared case-insensitively. nullable |
displayName
required |
string | An optional human-readable label for the customer that is deliberately not unique. Null when the customer carries no separate label, in which case `name` is what merchants see wherever customers are listed. nullable |
concurrencyStamp
required |
string | Gets or sets the concurrency stamp used for optimistic concurrency control. nullable |
tenantId
required |
string (uuid) | Gets the tenant identifier for multi-tenancy isolation. nullableread only |
merchantId
required |
string (uuid) | Gets or sets the identifier of the merchant that owns this customer. |
isActive
required |
boolean | Gets or sets a value indicating whether this customer is active. |
legacyNumber
required |
integer (int64) | Gets or sets the customer's legacy numeric key, the integer identifier the v1 API resolves customers by. Server-owned: stamped at create and ignored on every inbound payload. Null on customers created before the field existed and not yet back-filled by the v1 data migration. nullable |
merchantAssignedId
required |
string | An optional identifier the merchant assigns to the customer as a friendly reference, distinct from the system Guid `Id` and the server-owned `legacyNumber`. Surfaces the v1 API's `CustomerId` field. nullable |
contactDetail
required |
all of CustomerContactDetail | Gets or sets the customer's contact details (email, phone, address). |
tags
required |
array of EntityTag | Gets or sets the collection of tags used to categorize or label this customer. nullable |
storedPaymentMethods
required |
array of CustomerStoredPaymentMethod | Gets or sets the customer's stored payment methods for recurring or future transactions. nullable |
contracts
required |
array of Contract | Gets or sets the recurring billing contracts associated with this customer. nullable |
entityVersion
required |
integer (int32) | Gets the entity version, incremented on each modification for optimistic concurrency. read only |
extraProperties
required |
object | Gets the extra properties dictionary for extensible data storage. nullableread only |
notes
required |
array of EntityNote | Gets or sets operational notes attached to the customer. nullable |
This response has no documented body fields.
403 Forbidden
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
401 Unauthorized
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
400 Bad Request
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
404 Not Found
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
501 Not Implemented
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
500 Internal Server Error
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
default The request failed. The body carries the standard error envelope: a machine-readable `error.code`, a human-readable `error.message`, and `error.validationErrors` when the failure was a validation rejection. See the error-code reference in this document's description for the values `error.code` can take.
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
429 The request was refused because a rate limit was exceeded, or because something a later retry can clear stopped it. A rate limit refusal carries an `application/problem+json` body: wait at least the interval `Retry-After` names before retrying, then back off. Limits are tuned per deployment, so read the allowance from the response headers rather than assuming a fixed ceiling. Any other refusal carries the standard error envelope as `application/json`, and its `error.code` names the cause.
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
Errors
A failed request returns the platform error envelope. The
error reference lists every value
error.code can carry and shows the four response shapes.