Customers

Update customer

Update a customer. Send only the fields you want to change — anything you don't send stays as it is.

Set is_taxable to false to mark the customer as tax-exempt, or true to make them taxable. Omit the field to leave the current value unchanged.

Setting custom fields is easiest using the field name as the key:

{"custom_fields": [{"Partner": true}, {"Tier": "Gold"}]}

Each item is a one-key object where the key is the custom field's name and the value is whatever you want to set. Use null to clear a field. If the name doesn't match a custom field in your organization you'll get a 422 back — we won't silently ignore it.

If you already know the custom field's id, the older nested shape still works and you can mix both in the same request:

{"custom_fields": [{"field": {"id": 42}, "value": {"custom_field_id": 42, "value": "Acme"}}]}

Edge case: if you happen to have two custom fields with the same name, the name-keyed shape can't tell them apart — use the id-based shape for those.

put/public/v1/customers/{customer_id}/

Path parameters

customer_idinteger required

Headers

Idempotency-Keystring

Optional. A unique value (a UUID works well) identifying this operation. If the request is repeated with the same key, the original response is replayed instead of the operation running again, so a retry cannot create a duplicate record. Results are replayable for 48 hours. Reusing a key with a different request body returns 422.

Request body

custom_fieldsobject[] nullable
namestring nullable
unique_idstring nullable
emailstring nullable
addressstring nullable
countrystring nullable
phonestring nullable
websitestring nullable
is_activeboolean nullable
record_status'draft' | 'posted' | 'archived'
is_taxableboolean nullable

Whether tax is calculated for this customer. Set to false to mark the customer as tax-exempt.

Response

OK

created_atstring date-time required

Date and time the record was created

updated_atstring date-time required

Date and time the record was last updated

approval_statusstring nullable
idinteger required
addressstring required
countrystring required
namestring required
unique_idstring nullable required
websitestring required
emailstring required
customer_typestring required
is_activeboolean required
phonestring required
record_statusstring required
is_taxableboolean required
default_tax_codestring required
tax_registration_numberstring required

Changes

Changed in 4 of the 14 revisions of this API.16

    • added the new optional request property is_taxable

      new-optional-request-property

    • added the required property created_at to the response with the 200 status

      response-required-property-added

    • added the required property updated_at to the response with the 200 status

      response-required-property-added

    This revision also has 1 change that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog

    • changed the pattern of the request property phone from ^[0-9\s\+\-\.\(\)]*$ to (?i)^(?:[0-9\s+\-.\(\)]*|[0-9\s+\-.\(\)]+(?:\s*(?:x|ext\.?|extension)\s*\d+))$

      request-property-pattern-changed

    • added the new optional request property is_active

      new-optional-request-property

    • added the new optional request property record_status

      new-optional-request-property

    • added the new optional header request parameter Idempotency-Key

      new-optional-request-parameter