Glossary

Stripe Product Tax Code

A Stripe product tax code is the txcd_ classification on a Product that tells Stripe Tax what you are selling, so it can decide whether each jurisdiction taxes the sale and at what rate.

Also called: product tax code, Stripe tax code, txcd code, PTC, preset product tax code

14-day free trial · card required · cancel anytime

Definition

Stripe Tax doesn't start from a rate. It starts from a classification. Every product you sell carries a product tax code (a txcd_ identifier such as txcd_10103001 for business-use software as a service, or txcd_99999999 for general tangible goods), and Stripe uses that code to look up how each jurisdiction treats that kind of product. The same code means the same thing everywhere. The answer it produces differs by location.

That makes the tax code the first decision in the chain. A jurisdiction that taxes clothing at one rate and school uniforms at another can only tell them apart by their codes. A jurisdiction that exempts a category returns zero tax for it. A code of txcd_00000000 (Nontaxable) tells Stripe to charge no tax at all, even where a jurisdiction would.

The code lives on the Product. If a Product has none, Stripe falls back to the preset product tax code in your tax settings. So a catalog where nobody ever set a code is still being classified, just as whatever the preset says.

Key points

  • +A txcd_ identifier that classifies a product for Stripe Tax.
  • +Decides taxability and rate per jurisdiction before any tax is calculated.
  • +Set on each Product, or inherited from the preset product tax code in tax settings.
  • +A separate preset covers shipping, which defaults to the Shipping code.
  • +Shows up in the itemized export as the tax_code column.
  • +Not the same as a Stripe tax rate (txr_) or a QuickBooks tax code.

Product tax code vs tax rate vs QuickBooks tax code

Three similar-sounding things sit in a Stripe-to-QuickBooks setup, and they do different jobs.

A product tax code (txcd_) describes the product. It says nothing about a percentage. Stripe Tax combines it with the customer's location and your registrations to work out the tax.

A Stripe tax rate (txr_) is a fixed percentage you create yourself and attach to invoices or subscriptions. It is the manual alternative to Stripe Tax: Stripe applies the rate you chose and makes no taxability decision of its own.

A QuickBooks tax code lives in QuickBooks and controls how QuickBooks itself calculates or reports tax on a transaction line. Changing a Stripe product tax code changes none of these other two.

Where the code comes from: product, preset and shipping

Stripe gives you two places to set a product tax code. You can set it on each Product, in the Dashboard or with the tax_code parameter in the API. Or you can rely on the preset product tax code in your tax settings, which Stripe uses for any product without a code of its own. Transactions that pass product_data instead of a saved Product can carry a tax_code there too.

The preset does a second job. Stripe uses it to estimate the thresholds you are approaching under threshold monitoring. A preset that doesn't match what you actually sell skews both the tax and the warnings.

Shipping has its own preset. It defaults to the Shipping code (txcd_92010001), and Stripe lets you switch it to Nontaxable. Stripe recommends leaving it on Shipping, because states tax shipping in different ways, some in proportion to the goods shipped and some at the highest rate in the order.

When one product could fit two codes, Stripe's advice is to split it. Software sold to both consumers and businesses becomes two Products with two codes. Business-use software as a service (txcd_10103001) and personal-use software as a service (txcd_10103000) are separate codes, and Stripe notes the distinction matters only if you have US sales.

How a wrong code shows up

A wrong code is a classification error, so the symptom is tax that is wrong in kind, not off by a cent. A taxable product coded as Nontaxable collects nothing. An exempt product coded as general tangible goods collects tax the customer shouldn't have paid. Either way, the error repeats on every sale of that product until someone changes the code.

The itemized export is where to look. Every row carries the tax_code Stripe used, the taxability (taxable or nontaxable) and a taxability_reason. A row with product_exempt or reduced_rated tells you the code drove the result. A row with not_collecting needs a second look. Stripe notes that not_collecting means either that you have no registration in that jurisdiction or that the product carries the Nontaxable code. Check the code before you conclude it is a registration gap.

Fixing the code changes future calculations. It does not rewrite what already happened. Stripe doesn't let you change the amounts on a finalized invoice. Past sales taxed under the wrong code get corrected with credit notes or with the tax authority, not by editing the code.

Tax codes on imported transactions

If you import sales from other platforms into Stripe Tax, each imported line needs a product tax code too. line_item.product_tax_code is a required column in the import CSV. Shipping lines take either Nontaxable (txcd_00000000) or Shipping (txcd_92010001). The platform's own code can ride along in the optional external_tax_code column, where Stripe stores it as metadata.

The code still matters when you supply the tax yourself. Stripe runs each imported line through its own tax engine to set the jurisdictions, rates, taxability and taxability reasons in its reports, and it keeps those classifications even when they conflict with the tax amount you supplied. Rows whose reporting amounts Stripe had to adjust to fit your tax show back_calculated in the itemized export's determination_method column.

Choosing a code without guessing

Stripe's list of product tax codes, and the Tax Codes API that returns the same list, are the complete set of active codes. Stripe is explicit that a code which looks plausible but isn't on that list is unsupported, and that neighboring codes are not interchangeable. Pick from the list by category name and description, and use a General code only when nothing more specific fits.

The classification itself is a tax decision. If a product sits between two categories and the difference changes whether it is taxed, that is a question for whoever advises you on sales tax, not something to settle by picking the cheaper code.

Product tax codes and Acodei's tax sync

Acodei's tax sync starts from the tax Stripe Tax already calculated. Its documentation describes syncing Stripe Tax amounts into QuickBooks, and for United States QuickBooks companies the Tax Product method: the tax on each synced invoice or receipt is rolled into a single line on a non-inventory product tied to a liability account, with Stripe's own reports supplying the state-by-state detail when you file.

The product tax code sits upstream of all of that. It decided how much tax Stripe calculated, and that is the amount that reaches the liability account. A wrong code therefore shows up in QuickBooks as tax that was or wasn't collected, and the fix is made in Stripe, on the Product.

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 Stripe product tax code?

It is a txcd_ identifier on a Stripe Product that classifies what you sell, such as txcd_99999999 for general tangible goods or txcd_10103001 for business-use software as a service. Stripe Tax uses it, with the customer's location and your registrations, to decide whether a sale is taxed and at what rate.

What happens if a Stripe product has no tax code?

Stripe Tax uses the preset product tax code from your tax settings. The preset also drives the threshold estimates in threshold monitoring. If your catalog never had codes set, every product is being taxed as whatever the preset says, which is worth checking against what you actually sell.

How is a product tax code different from a Stripe tax rate?

A product tax code (txcd_) describes the product and lets Stripe Tax work out the tax for each location. A tax rate (txr_) is a fixed percentage you create and apply yourself, with no taxability logic. Stripe Tax uses product tax codes; manual tax rates are the alternative to Stripe Tax.

Does changing a product tax code fix tax on past invoices?

No. A new code applies to tax Stripe calculates from then on. Stripe doesn't allow changes to the amounts on a finalized invoice, so sales already taxed under the old code are corrected with credit notes or through your returns, not by editing the code.

Why does a sale show not_collecting in the itemized export?

Stripe says not_collecting means one of two things: you have no active registration in the customer's jurisdiction, or the product carries the Nontaxable code (txcd_00000000). Check the tax_code column on the same row before you treat it as a registration gap.

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