Customers

Updates a customer

Changed on

Updates a single customer record in the catalog. IMPORTANT: This is a full-replace operation (PUT semantics). All fields must be included in the request body — omitting any field will set it to null, wiping existing data. Always call retrieve-a-customer first to fetch the current record, then include ALL existing fields in your update request along with your changes. Exceptions that keep stored data when the field is omitted:

  • metadata: omit it to keep all existing metadata, or send only the keys you want to set or clear.
  • addresses: omit address and billing_addresses to keep the stored billing addresses, and likewise shipping_address and shipping_addresses. This is for backward compatibility: integrations built before customers could have several addresses won't wipe the ones they don't send.
put/customers/{customer_id}

Request

Path parameters

customer_idstring required

UUID of the customer to be used in this operation.

Request body

namestring required
name_on_invoicestring
payment_termsinteger
send_invoices_automaticallyboolean

When set to true, invoices for this customer will be automatically sent via email on the invoice date.

send_payment_remindersboolean

When set to true, an email will be sent to customers periodically if they have not paid an invoice.

allow_online_paymentsboolean

Allows this customer to pay invoices online via Stripe, and must be true before auto-payment can be set up for them. Omit on create to leave online payments off; omit on update to keep the customer's current setting. Enabling it requires Stripe to be configured for at least one subsidiary.

metadataInlineMetadataValues

Partial metadata update keyed by definition key. Omitting this property preserves all existing metadata. When supplied, omitted keys remain unchanged; null, empty, or whitespace-only values clear only the named key.

Example request

{
  "name": "Bob",
  "name_on_invoice": "Bob Johnson",
  "address": {
    "line1": "123 Main St",
    "line2": "Apt 4B",
    "city": "Nashville",
    "state": "TN",
    "zip_code": "37201",
    "country": "US"
  },
  "shipping_address": {
    "line1": "123 Main St",
    "line2": "Apt 4B",
    "city": "Nashville",
    "state": "TN",
    "zip_code": "37201",
    "country": "US"
  },
  "billing_addresses": [
    {
      "line1": "123 Main St",
      "line2": "Apt 4B",
      "city": "Nashville",
      "state": "TN",
      "zip_code": "37201",
      "country": "US"
    }
  ],
  "shipping_addresses": [
    {
      "line1": "123 Main St",
      "line2": "Apt 4B",
      "city": "Nashville",
      "state": "TN",
      "zip_code": "37201",
      "country": "US"
    }
  ],
  "emails": [
    {
      "id": "0193a6f2-4c1e-7b8a-9d3f-2e5c8a1b7f40",
      "email": "bobjohnson@somedomain.com"
    }
  ],
  "external_references": [
    {
      "type": "xyzSystemId",
      "id": "234",
      "url": "https://xyzsystempage.com/ids/234"
    }
  ],
  "tax_ids": [
    {
      "value": "DE123456789"
    }
  ]
}

Response

OK

idstring uuid required
updated_atstring date-time required

ISO 8601 timestamp in UTC timezone (must end with 'Z')

metadataobject

Customer metadata values keyed by metadata definition key.

family_idstring uuid nullable

The family this customer belongs to. Set through the customer-families endpoints, not here.

parent_customer_idstring uuid nullable

The member this customer reports to within its family. The family's root parent reports to no one.

namestring required
name_on_invoicestring
payment_termsinteger
send_invoices_automaticallyboolean

When set to true, invoices for this customer will be automatically sent via email on the invoice date.

send_payment_remindersboolean

When set to true, an email will be sent to customers periodically if they have not paid an invoice.

allow_online_paymentsboolean

Allows this customer to pay invoices online via Stripe, and must be true before auto-payment can be set up for them. Omit on create to leave online payments off; omit on update to keep the customer's current setting. Enabling it requires Stripe to be configured for at least one subsidiary.

Example response

{
  "name": "Bob",
  "name_on_invoice": "Bob Johnson",
  "address": {
    "line1": "123 Main St",
    "line2": "Apt 4B",
    "city": "Nashville",
    "state": "TN",
    "zip_code": "37201",
    "country": "US"
  },
  "shipping_address": {
    "line1": "123 Main St",
    "line2": "Apt 4B",
    "city": "Nashville",
    "state": "TN",
    "zip_code": "37201",
    "country": "US"
  },
  "billing_addresses": [
    {
      "line1": "123 Main St",
      "line2": "Apt 4B",
      "city": "Nashville",
      "state": "TN",
      "zip_code": "37201",
      "country": "US"
    }
  ],
  "shipping_addresses": [
    {
      "line1": "123 Main St",
      "line2": "Apt 4B",
      "city": "Nashville",
      "state": "TN",
      "zip_code": "37201",
      "country": "US"
    }
  ],
  "emails": [
    {
      "id": "0193a6f2-4c1e-7b8a-9d3f-2e5c8a1b7f40",
      "email": "bobjohnson@somedomain.com"
    }
  ],
  "external_references": [
    {
      "type": "xyzSystemId",
      "id": "234",
      "url": "https://xyzsystempage.com/ids/234"
    }
  ],
  "tax_ids": [
    {
      "value": "DE123456789"
    }
  ]
}

Changes

    • breaking

      added subschema #2 to the request body allOf list

    • breaking

      the request's body type changed from object to no type

    • breaking

      the //// response's property type changed from object to no type for status

    • breaking

      the //// response's property type changed from object to no type for status

    • breaking

      removed the required property ///// from the response with the status

    • breaking

      removed the required property ///// from the response with the status

    • breaking

      removed the required property ///// from the response with the status

    • breaking

      removed the required property ///// from the response with the status

    • breaking

      removed the required property ///// from the response with the status

    • breaking

      removed the required property ///// from the response with the status

    • breaking

      removed the required property ///// from the response with the status

    • breaking

      removed the required property ///// from the response with the status

    • breaking

      removed the required property ///// from the response with the status

    • breaking

      removed the required property ///// from the response with the status

    • warning

      removed the request property

    • warning

      removed the request property

    • warning

      removed the request property

    • warning

      removed the request property

    • warning

      removed the request property

    • warning

      removed the request property

    • warning

      removed the request property

    • warning

      removed the request property

    • warning

      removed the request property

    • warning

      removed the request property

    • warning

      removed the optional property ///// from the response with the status

    • warning

      removed the optional property ///// from the response with the status

    • info

      added the optional property //// to the response with the status

    • info

      added the optional property //// to the response with the status

    • info

      added the optional property ////// to the response with the status

    • info

      added the optional property //// to the response with the status

    • info

      added the optional property //// to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added to the //// response property allOf list for the response status

    • info

      added to the //// response property allOf list for the response status

    • info

      response property allOf[CustomerRequest]/address deprecated

    • info

      response property allOf[CustomerRequest]/shipping_address deprecated