Starting with API version 2026-07, the Customer object's taxSettings field becomes public. Tax IDs such as VAT numbers collected at checkout can now be read by apps via query.
taxSettings field becomespublicin the Admin GraphQL API.Even when collected at checkout, a customer's tax ID could not be queried publicly from Customer in the Admin GraphQL API.
customer { taxSettings { taxId } } can retrieve the tax ID. This is a read-only change.
| Field | Details | Handling in the public API |
|---|---|---|
| taxSettings | A tax settings container under the Customer object | Public 2026-07~ |
| taxSettings.taxId | Tax ID (e.g., VAT number). A string, or, if not provided, null |
Retrievable read-only |
| taxSettings.taxIdValidation | A subfield indicating the validation status of the tax ID | Not in the public API |
read_customers or read_taxes — an app with this access scope can query taxId .
Apps that want to use the validation status must haveapproved protected customer data access(not yet included in the public API).
Customer.taxSettings , for B2B, aligns with, already available CompanyLocation.taxSettings.taxRegistrationId(API version 2025-01 onward), and is addedin a consistentmanner.
| Applies to | Field | Available from |
|---|---|---|
| B2B Company location | CompanyLocation.taxSettings.taxRegistrationId |
API 2025-01~ |
| Regular customer Customer | Customer.taxSettings.taxId |
API 2026-07 onward (this release) |
Tax registration information that could previously only be retrieved on the company location side can now be handled on the regular Customer side with the same taxSettings structure.
taxId returns eithera string, or, if the customer hasn't provided one, null . The client must always account for the possibility of null in its handling.This rollout requires API version 2026-07 or later. Unless you raise your app's target API version, taxSettings cannot be used.
read_customers or read_taxes , if you have either, taxId can be queried.
This is a read-only change. It is not meant for writing or updating tax IDs via the API. The values originate at checkout.
taxId is either a string or nullIf the customer has not provided a tax ID, null is returned, so build with the assumption that it may be missing.
The validation-status-indicating taxIdValidation subfield isnot included in the public API. To access it,approved protected customer data accessis required. Whether you can meet the requirement of knowing "is the number verified" depends on whether you have obtained this permission.
customer { taxSettings { taxId } } is queried and passed automatically to the invoicing and accounting systems.read_customers or read_taxes is required. Read-only.null(not provided): always include a branch to handle this case.taxId value / null as a signal to branch flows and communications for the target customers.taxIdValidation but it isn't available in the public API, sothis check separately requires Protected Customer Data Access. Determining only whether a number exists can be done with scopes alone.CompanyLocation.taxSettings.taxRegistrationId(since 2025-01) only handled tax registration numbers for B2B company locations, so you couldn't retrieve a regular Customer's tax ID.Customer.taxSettings.taxId and process both B2B and regular customers with the same taxSettings structure.taxSettings are designed to align via this, making field mapping easy to standardize. Watch out for the difference in target API versions (2025-01 / 2026-07).Customer.taxSettings.taxId .read_customers or read_taxes,read-only.