VAT / Fiscal ID numbers collected at checkout -- not appearing in Order JSON

Hi everyone,

On February 25, Shopify added the option to collect VAT numbers and fiscal ID numbers during checkout (under Settings > Taxes and duties).

We run an automated invoicing integration between Shopify and our billing platform. We enabled this feature, confirmed that customers can enter their tax ID at checkout, and then pulled the full Order JSON and the fiscal/VAT number is not there.

This makes the feature essentially unusable for any automated billing workflow.

Our questions:

  1. Why is data collected at checkout not being passed through to the Order object?

  2. Is this a known limitation or a bug?

  3. Is there any current workaround to retrieve the tax ID submitted by a customer for a given order?

  4. Is there a planned API update to expose this field in the Order JSON?

Has anyone else hit this wall? Any insight appreciated.
Thanks

1 Like

Hi @InvoiceXpress_Lda :waving_hand: You’re not missing anything on the REST Order JSON side. I don’t see a current Order JSON or Order GraphQL field that exposes the VAT ID collected through the EU/UK VAT validation field at checkout.

The 2026-07 Admin GraphQL API release candidate docs list Customer.taxSettings as a customer-level path with taxId, requiring read_customers or read_taxes. This is 2026-07 RC only, so not yet considered stable

query CustomerTaxId($id: ID!) {
  customer(id: $id) {
    id
    taxSettings {
      taxId
    }
  }
}

That may help if your invoicing flow can reliably work from the order’s customer, but it does not fully solve the order-level use case you described. For ERP/invoicing integrations, the useful association is often the VAT ID on the specific order, and I do not see that exposed today.

One other distinction is that country-specific localized fields, such as Brazil CPF/CNPJ, use Order.localizedFields. The EU/UK VAT validation field is a separate checkout tax validation flow, so localizedFields does not look like the answer for this case.

I’ve submitted the order-level API gap as product feedback since this is exactly the kind of downstream invoicing workflow that needs it - thanks for raising this!

Although not tried it yet ( the suggested query ) it is a fact that order webhook is very inconsistent. I can’t understand why such a critical information is hidden from the webhook and also in a test I made with a valid VIES vatID, shopify validated it the correct way and 0% vat applied but the field is still

“tax_exempt”: false,

So there is no way to understand there was a vies valid vat id inserted, we need to execute the proposed query, to check in every order if there is such a value and if there is then re-validate or check the tax to see if it is 0% and check the customer country as well ? Why do all this work again since you have already done this and you just should share the information in the webhook?

If “tax_exempt” at least it was telling the truth then and only then we could trigger an extra query to get the taxID since it doesn’t exist in the webhook.

Can we have a proper solution to this feature and not patches and workarounds ? It is really odd that it is advertised as a new feature but it actually is half way there.