curl -X POST https://api.numeralhq.com/tax/customers/cust_6126acaf-7379-411a-8ada-00005bac0715 \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-01-01" \
-H "Content-Type: application/json" \
-d '{
"is_tax_exempt": true
}'
curl -X POST https://api.numeralhq.com/tax/customers/20506 \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-01-01" \
-H "Content-Type: application/json" \
-d '{
"name": "New Customer Name",
"email": "new.email@example.com"
}'
{
"id": "cust_6126acaf-7379-411a-8ada-00005bac0715",
"object": "tax.customer",
"reference_customer_id": "20506",
"name": "New Customer Name",
"email": "new.email@example.com",
"is_tax_exempt": true
}
{
"code": 400,
"type": "DUPLICATE_CUSTOMER",
"message": "Customer already exists."
}
{
"code": 400,
"type": "CUSTOMER_NOT_FOUND",
"message": "Customer with id cust_9876543210abcdef not found"
}
Update Customer
Update an existing customer’s information
curl -X POST https://api.numeralhq.com/tax/customers/cust_6126acaf-7379-411a-8ada-00005bac0715 \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-01-01" \
-H "Content-Type: application/json" \
-d '{
"is_tax_exempt": true
}'
curl -X POST https://api.numeralhq.com/tax/customers/20506 \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-01-01" \
-H "Content-Type: application/json" \
-d '{
"name": "New Customer Name",
"email": "new.email@example.com"
}'
{
"id": "cust_6126acaf-7379-411a-8ada-00005bac0715",
"object": "tax.customer",
"reference_customer_id": "20506",
"name": "New Customer Name",
"email": "new.email@example.com",
"is_tax_exempt": true
}
{
"code": 400,
"type": "DUPLICATE_CUSTOMER",
"message": "Customer already exists."
}
{
"code": 400,
"type": "CUSTOMER_NOT_FOUND",
"message": "Customer with id cust_9876543210abcdef not found"
}
Update Customer Endpoint (2026-01-01)
Update an existing customer’sname, email, is_tax_exempt status, or reference_customer_id. All fields are optional, but at least one must be provided. Only the fields you include are changed; everything else is left as is.
X-API-Version: 2026-01-01 header in your request to use this API version.customer_id path parameter accepts either the Numeral customer ID (cust_xxx) or your own reference_customer_id. No id_type query parameter is needed.Behavior
emailandreference_customer_idmust be unique across your customers. If another customer already uses the new value, the request fails withDUPLICATE_CUSTOMER.emailmust be a valid email address, otherwise the request fails withINVALID_EMAIL.- Setting
is_tax_exempttotruemeans all futurePOST /tax/calculationsfor this customer return $0 in tax owed. Setting it tofalseremoves the exemption. - If every provided value matches what is already stored, nothing is written and the current customer is returned with a
200. - Deleted customers cannot be updated. The request fails with
CUSTOMER_NOT_FOUND. - If the customer’s buyer record has been deleted in Numeral’s Exemption Certificate Manager, setting
is_tax_exempttotrueis rejected withINVALID_REQUEST.
curl -X POST https://api.numeralhq.com/tax/customers/cust_6126acaf-7379-411a-8ada-00005bac0715 \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-01-01" \
-H "Content-Type: application/json" \
-d '{
"is_tax_exempt": true
}'
curl -X POST https://api.numeralhq.com/tax/customers/20506 \
-H "Authorization: Bearer sk_test_xxx" \
-H "X-API-Version: 2026-01-01" \
-H "Content-Type: application/json" \
-d '{
"name": "New Customer Name",
"email": "new.email@example.com"
}'
{
"id": "cust_6126acaf-7379-411a-8ada-00005bac0715",
"object": "tax.customer",
"reference_customer_id": "20506",
"name": "New Customer Name",
"email": "new.email@example.com",
"is_tax_exempt": true
}
{
"code": 400,
"type": "DUPLICATE_CUSTOMER",
"message": "Customer already exists."
}
{
"code": 400,
"type": "CUSTOMER_NOT_FOUND",
"message": "Customer with id cust_9876543210abcdef not found"
}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The Numeral customer ID (cust_xxx) or your reference_customer_id. Either identifier is accepted; no id_type query parameter is needed.
Body
Request body for updating a customer. All fields are optional, but at least one must be provided.
The customer's name
"New Customer Name"
The customer's email. Must be unique across your customers.
"new.email@example.com"
If true, all POST /tax/calculations sold to this customer will return $0 in tax owed.
true
The ID of the customer in your system. Must be unique across your customers.
"20507"
Response
The updated customer
The ID of the customer
"cus_123456789"
The type of object: tax.customer
"tax.customer"
The ID of the customer in your system
"20506"
The name of the created customer
"Customer Name"
The email of the created customer
"customer@example.com"
If true, all POST /tax/calculations sold to this customer will return $0 in tax owed. The default value is false.
true