Glossary

Stripe Customer Tax ID

A Stripe customer tax ID is a typed record, such as eu_vat or nz_gst, attached to a customer that prints on its invoices and, for some types, tells Stripe Tax to charge no tax on a business sale.

Also called: Customer tax ID, tax_ids, Stripe tax ID collection, VAT number on Stripe invoices

14-day free trial · card required · cancel anytime

Definition

A customer tax ID in Stripe is a small object with two parts: a type, such as eu_vat, gb_vat, au_abn or nz_gst, and a value, the number itself. It belongs to a customer. Stripe lets you add up to five tax IDs to one customer, and you can see them in the header of that customer's invoice and credit note PDFs.

It does two separate jobs. The first is display: many countries expect a business invoice to show the buyer's tax number, and Stripe prints it for you. The second is calculation: for some types, the presence of the number tells Stripe Tax that this is a business sale where the customer, not you, accounts for the tax. Stripe Tax then charges nothing and applies the reverse charge.

Which types do the second job is the part that catches people. Stripe's list of supported types has a column called Impact in Tax Calculation, and it is not Yes for every type. Two numbers from the same country can behave completely differently.

Key points

  • +Up to five tax IDs per customer, each with a type and a value.
  • +Every customer tax ID prints in the header of invoice and credit note PDFs.
  • +Only types marked Yes for Impact in Tax Calculation stop Stripe Tax charging.
  • +Stripe checks the format of every type, but checks only ABNs, EU VAT and UK VAT numbers with a government system.
  • +Stripe Tax applies the reverse charge on a correctly formatted number, whatever the verification result.
  • +Stripe prints the number on the invoice whether or not it is valid.
  • +To change a tax ID, delete it and create a new one.

Which tax IDs change the tax calculation

Stripe's tax ID documentation lists every supported type with an example and a Yes or No in the Impact in Tax Calculation column. Its footnote explains Yes: "Stripe Tax won't apply tax if this tax ID is provided, in line with the relevant laws." No means Stripe stores and prints the number, and the tax calculation ignores it.

The pairs are where mistakes happen. New Zealand has nz_gst (GST number, Yes) and nz_bn (New Zealand Business Number, No). Canada has ca_gst_hst (GST/HST number, Yes) and ca_bn (Business Number, No). Poland has eu_vat (the PL-prefixed VAT number, Yes) and pl_nip (NIP number, No). A customer set up with the second number of a pair gets charged tax as if it were a consumer, and nothing on the invoice looks wrong.

Some countries have only a No type. Malaysia's my_sst and Kenya's ke_pin are No, and so is the US us_ein. In those places a business customer's number is for display, and any business exemption has to come from somewhere else in the regime, or from the customer's tax status in Stripe.

Before you rely on a tax ID to stop tax, look up its type in Stripe's table rather than assuming from the country.

What Stripe validates, and what it does with an unverified number

Stripe checks every tax ID against the expected format for its type. For three types it also checks the number with a government system: Australian Business Numbers with the Australian Business Register, EU VAT numbers with the European Commission's VIES, and UK VAT numbers with HMRC. Stripe says each of these checks "only verifies the validity of the tax ID," not whether the name and address on the customer match.

The result lands on the tax ID as a verification status: pending, verified, unverified or unavailable. Stripe sends a customer.tax_id.updated event when verification finishes, and says that "after a tax ID is confirmed as valid or invalid, it won't be validated again automatically." When the status is unavailable, you must verify the number yourself.

The calculation does not wait for any of that. Stripe's documentation: "If you use Stripe Tax, Stripe Tax applies the reverse charge or zero rate according to applicable laws when the tax ID has the required number format, regardless of the government verification result." An unverified EU VAT number in the right format still stops Stripe charging VAT. Deciding what to do with it is, in Stripe's words, based on "your own compliance requirements."

For every other type, format is the only check. Whether the tax authority expects more depends on the country. Egypt expects the seller to verify each number, while New Zealand lets the seller rely on the number the customer gives.

Collecting tax IDs: Checkout, the Dashboard, the API

There are three ways in. In the Dashboard, open the customer, click Update details and add a tax ID row with its type and value. Through the API, create a tax ID with the customer as its owner. And in Stripe Checkout, set tax_id_collection[enabled] to true, and Checkout shows a tax ID field and a business name field to customers in supported locations.

Checkout has rules of its own. It collects business tax IDs only, and customers can enter only one. It decides whether to show the field from the shipping address if there is one, otherwise the billing address. If an existing customer already has a saved tax ID, Checkout does not show the form at all. Setting tax_id_collection[required] to if_supported makes the number mandatory for customers in supported countries.

Checkout's list of collectable types is shorter than the full list. It includes nz_gst but not nz_bn, for example, and no US types. And for guest customers, Stripe says the session holds the type and value "but not a verification result." To get one, save the tax ID to a customer.

Tax IDs cannot be edited. Stripe: "To update a tax ID, delete the old ID and create another one."

Where the number shows up afterwards

On documents, customer tax IDs print in the header of invoice and credit note PDFs, next to your own account tax IDs. Stripe is explicit that "Stripe displays a customer tax ID on an invoice, whether or not it's valid," and that keeping customer information accurate is your responsibility.

In reporting, Stripe Tax's itemized export has a customer_tax_id column listing the type and value pairs attached to each transaction. Filter a country's zero-tax rows and that column tells you which business numbers you relied on, which is exactly the list some authorities expect you to keep.

The export also has a customer_taxability_override column, with values customer_exempt, reverse_charge or none. That is the customer's tax status, a different field from the tax ID. You can set a customer to reverse charge or exempt directly, without any tax ID, which is how you treat a business whose only number is a No type when the rules let you.

Customer tax IDs and Acodei

Acodei syncs the tax amounts that Stripe Tax calculates into QuickBooks, which requires Stripe Tax active in your Stripe account. A customer tax ID reaches QuickBooks through that calculation: if the tax ID stopped Stripe charging tax, the synced sale carries no Stripe Tax amount, and if Stripe charged tax, that amount syncs. With the Tax Product method, it lands on the single tax line mapped to your liability account.

Acodei's documentation says a new QuickBooks customer is created with the name, email and billing address from Stripe, and it does not list the tax ID among them. Treat Stripe's invoice PDF and its itemized export as the record of which number a sale relied on.

Want to see this on your own Stripe data?

Start a free trial

14-day free trial · card required · cancel anytime

Frequently asked questions

What is a customer tax ID in Stripe?

It is a record attached to a Stripe customer with a type, such as eu_vat or nz_gst, and the number itself. Stripe prints it in the header of the customer's invoice and credit note PDFs, and for some types it tells Stripe Tax not to charge tax on the sale. A customer can have up to five.

Does adding a tax ID stop Stripe Tax from charging tax?

Only for types marked Yes in the Impact in Tax Calculation column of Stripe's tax ID table, such as eu_vat, gb_vat, au_abn, ca_gst_hst and nz_gst. Types marked No, such as us_ein, ca_bn, nz_bn and pl_nip, are printed on invoices but do not change the tax.

Does Stripe verify customer VAT numbers?

Stripe checks the format of every tax ID. It also checks Australian ABNs, EU VAT numbers and UK VAT numbers against the government system and reports pending, verified, unverified or unavailable. Stripe Tax applies the reverse charge on a correctly formatted number regardless of that result.

Can customers enter their tax ID in Stripe Checkout?

Yes, if you enable tax ID collection on the Checkout Session. Checkout shows the field to customers in supported locations, accepts business tax IDs only, takes one per customer, and hides the field for an existing customer that already has a saved tax ID. Its list of collectable types is shorter than the full list.

How do I change a customer's tax ID in Stripe?

Delete it and create a new one. Stripe does not let you edit a tax ID.

What customers say about running Stripe through Acodei

Stripe Verified Partner BadgeIntuit QuickBooks
★★★★★
“If you're testing out all the different Stripe/QuickBooks integration apps right now, let me save you some time. This one is the best one by far.”
RyanOwner at Indie Music Academy
★★★★★
“Works well and is really helpful for massive transactions. The support is really fast and helpful. 100% recommended.”
AndresCo-founder and CEO at Kanguro Collections and Reinsurance

Related reading

More glossary terms

See the full glossary

Ready to try Acodei?

Connect Stripe to QuickBooks Online in minutes and let the fees, refunds, and payouts land where your accountant expects them.

14-day free trial · card required · cancel anytime