Validate a tax number
Checks this customer's taxId against the EU Commission's VIES service and stores the result with its date. VIES being unreachable is not a failure of the customer: the answer is valid: null, "could not be checked", the number is kept, and taxIdTrusted on PATCH /customers/:id is how you choose to treat it as valid anyway.
apiKeyAuthorizationBearer <token>An API key from the Developers page. rhq_test_ keys reach the sandbox, rhq_live_ keys the live side.
id*stringSuccess
application/json- response
Success
id*stringemail*stringname*string|nullexternalId*|Your own reference for this customer
priceListId*|The price list this customer is charged from; null is your default list
contractRules*integerHow many prices are agreed with this customer alone, beating their price list
addressLines*array<string>Printed under the customer name on their invoices, line by line
taxId*|Printed on this customer's invoices
country*|Where this customer is, for the tax rules engine to match a rule against (issue #341)
region*|This customer's state or region, for a rule that names one
taxOverride*||This customer’s own exception to the account’s tax rules. Null, the rules decide
taxIdCheck*|The result of the last VIES check on taxId, and when. Null, never checked
taxIdTrusted*booleanWhether you chose to treat a could-not-be-checked (taxIdCheck.valid === null) number as valid anyway
registrant*|The registrant a domain ordered for this customer falls back to, absent a per-order one, ahead of your account's default. Null until set
createdAt*stringISO 8601 timestamp
date-timecurl -X POST "https://example.com/v1/customers/cus_01K6XJ4Q8ZT3M9R5V2B7WDHNCA/tax-id/validate"{ "id": "cus_01K6XJ4Q8ZT3M9R5V2B7WDHNCA", "email": "[email protected]", "name": "Jo Bloggs", "externalId": "crm-1042", "priceListId": null, "contractRules": 2, "addressLines": [ "1 Market Street", "San Francisco, CA 94105" ], "taxId": "12-3456789", "country": null, "region": null, "taxOverride": null, "taxIdCheck": null, "taxIdTrusted": true, "registrant": { "name": "Jo Bloggs", "organization": "Northwind Telecom", "email": "[email protected]", "phone": "+1 415 555 0132", "address": "1 Market Street", "city": "San Francisco", "state": "CA", "postalCode": "94105", "country": "US", "validation": "pending" }, "createdAt": "2026-10-07T11:04:31.000Z"}Update a customer PATCH
Changes the name, your reference, the price list, the billing address, the tax number or the registrant. Send only what changes. `registrant` falls back ahead of your account default on a domain ordered for this customer with no contact of its own; `null` clears it. Changing any field of a registrant already stored drops the registrar's handle and validation for it; sending back the exact same contact keeps them. Changing `taxId` itself clears `taxIdCheck` and `taxIdTrusted`: a check and a trust decision belong to the number that was checked, not to whatever replaces it.
List wholesale price drops GET
Domain endings whose upstream wholesale cost is currently lower than usual, for a window the registrar itself named (issue #1023's suggestion): one row per ending, gone once the window ends or the price goes back up. Shared across every account on this installation, since the wholesale price is the registrar's, not any one reseller's. Never changes what a customer is charged; create a promotion of your own to pass a drop on.