Glossary
Stripe Tax Behavior
Stripe tax behavior is the setting on a Price, inclusive, exclusive or unspecified, that tells Stripe Tax whether the amount already contains tax or whether tax is added on top of it.
Also called: tax_behavior, Stripe inclusive vs exclusive pricing, Include tax in prices, Automatic tax behavior
14-day free trial · card required · cancel anytime
Definition
Every Price in Stripe has a tax_behavior field. Stripe defines it as specifying "whether the price is considered inclusive of taxes or exclusive of taxes," with three values: inclusive, exclusive and unspecified. Stripe Tax needs an answer before it can calculate, so either the Price carries one or the account default in the Stripe Tax settings supplies it.
Exclusive means the price is net and tax goes on top. A 100.00 USD price with an 8% rate charges the customer 108.00 USD. Inclusive means the price already contains the tax, so the customer pays the price and Stripe works backwards to the tax inside it. A 100.00 EUR price sold to a German consumer at 19% VAT charges 100.00 EUR, of which 15.97 EUR is VAT and 84.03 EUR is the net sale.
For the books, that difference is the whole point. With exclusive pricing your revenue per sale is fixed and the customer total moves with the tax rate. With inclusive pricing the customer total is fixed and your revenue moves with it.
Key points
- +Three values on a Price: inclusive, exclusive or unspecified.
- +The account default lives in the Stripe Tax settings under Include tax in prices.
- +Automatic makes USD and CAD prices exclusive and every other currency inclusive.
- +Once a Price or currency option is set to inclusive or exclusive, it cannot be changed.
- +It cannot be set by customer location. Different markets need different Prices or currency options.
- +Inclusive prices keep the customer total fixed, including on reverse charge sales.
Where the setting lives: the Price, the currency option, or the account default
The most specific setting wins. A Price can carry its own tax_behavior. A multi-currency Price can also set currency_options.<currency>.tax_behavior, so its EUR amount can behave differently from its USD amount. Stripe says a top-level tax_behavior "configures the Price's default currency," while the currency option version configures each additional currency.
Where a Price leaves tax_behavior unspecified, the account default applies. Stripe's API reference says the field is "only required if a default tax behavior was not provided in the Stripe Tax settings." You set that default in the Stripe Tax settings, under Include tax in prices, and it covers every Price without its own value.
Prices you never save get the same choice. When a Checkout Session or invoice builds a price on the fly with price_data, the tax_behavior goes inside price_data. Shipping rates carry a tax_behavior of their own, so shipping can be inclusive on an order whose products are exclusive.
What Automatic actually does
The default has three options: Automatic, Inclusive and Exclusive. Stripe recommends Automatic and describes it this way: "For the currencies USD and CAD the tax behavior is exclusive. For all other currencies the tax behavior is inclusive." It works on multi-currency Prices too, one currency at a time.
So Automatic keys on the currency of the price, not on the customer. A US company that sells only in US dollars gets exclusive pricing everywhere, including to customers in Germany or Australia, who then see VAT or GST added at checkout. The same company adding a EUR price gets inclusive pricing on that price, for every customer who pays in euros.
Stripe is explicit that location plays no part: Stripe "doesn't choose tax behavior based on customer location or tax jurisdiction, and you can't configure tax behavior by customer location or tax jurisdiction." If you want customers in one market to see tax-inclusive prices and customers in another to see tax added, you need a separate Price or currency option for each, and your integration has to choose between them.
Why it locks, and what changing your mind costs
Stripe's API reference: "Once specified as either inclusive or exclusive, it cannot be changed." The same applies to a currency option. A Price still at unspecified can be given a value later. A Price already committed either way cannot be flipped.
Changing approach therefore means new Prices. You create the replacements with the behavior you want, move new sales and subscriptions onto them, and archive the old ones. The history stays as it was: every invoice line keeps the Price, and the tax behavior, that produced it.
That is useful when you reconcile. If a period mixes old and new Prices, some lines will have tax inside the amount and some on top of it. Stripe's itemized tax export includes a tax_behavior column, so you can sort the lines before you add them up.
Inclusive prices, reverse charge and exempt customers
Stripe states the rule for inclusive prices plainly: "the amount your customer pays remains constant, regardless of the tax amount (zero or positive). This applies to sales subject to reverse charge as well."
That has a consequence most people only notice in the revenue report. Take one 100.00 EUR inclusive price. A German consumer pays 100.00 EUR, of which 84.03 EUR is revenue. A French consumer at 20% pays 100.00 EUR, of which 83.33 EUR is revenue. A business customer whose sale falls under the reverse charge also pays 100.00 EUR, and all 100.00 EUR is revenue, because no tax is charged. Stripe describes it from the price side: if no tax applies, the tax-inclusive price is the unit price, and if tax applies, the unit price is lower.
With an exclusive price the arithmetic runs the other way. Revenue per sale is fixed at the price, and the customer pays more or less depending on the rate. Neither is wrong. They are different promises, one to your customer and one to your revenue line, and the tax behavior is where you choose which one to keep.
Tax behavior is not the same as a tax rate's inclusive flag
Stripe has two inclusive switches, and they belong to two different ways of doing tax. tax_behavior on a Price is what Stripe Tax reads when it calculates tax automatically. A manually created Tax Rate, the txr_ object you attach yourself, carries a separate inclusive field, which Stripe describes as specifying "if the tax rate is inclusive or exclusive."
If you calculate tax with Stripe Tax, the Price's tax_behavior is the one that matters. If you attach your own Tax Rates, check the inclusive flag on each rate. When an export and an invoice seem to disagree about whether tax was included, first check which of the two switches applies to that line.
In the itemized export, Stripe notes that for inclusive prices the subtotal already includes tax and the total remains tax-inclusive. A subtotal column summed across a mix of inclusive and exclusive lines is not a net sales figure.
Inclusive and exclusive tax in Acodei
Acodei syncs the tax that Stripe Tax calculates, so this applies when Stripe Tax is active in your Stripe account. Acodei's Stripe Tax settings ask their own question, whether tax is inclusive or exclusive, and that answer needs to match how your Stripe prices behave.
Acodei's documentation says that choosing Inclusive automatically turns on manual inclusive tax calculation, so invoice totals in QuickBooks align with Stripe's final tax calculations, and that neither inclusive nor exclusive tax is generally counted as revenue. On a daily summary, the inclusive breakdown is done at the summary level, and the documentation notes that partial or daily summary scenarios can sometimes produce rounding differences.
The documentation describes one setting for the account. It does not cover an account whose prices mix both behaviors, which is what Automatic produces for a business that sells in US dollars and in another currency, so raise that combination with Acodei support before you rely on it. The related guide to inclusive and exclusive tax on Stripe invoices in QuickBooks, linked below, walks through what each setting does to a synced invoice.
Want to see this on your own Stripe data?
Start a free trial14-day free trial · card required · cancel anytime
Frequently asked questions
What is tax_behavior in Stripe?
It is the field on a Stripe Price that says whether the amount includes tax (inclusive), has tax added on top (exclusive), or is unspecified. Stripe Tax reads it to calculate tax. Where a Price leaves it unspecified, the default tax behavior in your Stripe Tax settings applies.
What does the Automatic tax behavior setting do in Stripe?
Automatic picks the behavior from the price's currency. Stripe makes USD and CAD prices exclusive and prices in every other currency inclusive. It does not look at where the customer is, so a USD price is exclusive for a customer in Germany too.
Can I change a Stripe price from exclusive to inclusive?
No. Once a Price, or a currency option on a Price, is set to inclusive or exclusive, Stripe does not allow it to be changed. Create a new Price with the behavior you want, move new sales to it, and archive the old one. A Price still at unspecified can be given a value later.
Can Stripe show tax-inclusive prices to some countries and exclusive prices to others?
Not from one setting. Stripe does not choose tax behavior by customer location, and you cannot configure it that way. You need a separate Price or currency option for each approach, and your integration selects the right one for each market.
Why did my revenue change when a customer was charged no tax on an inclusive price?
Because inclusive pricing keeps the customer total fixed. Stripe says the amount the customer pays stays the same whether the tax is zero or positive, including on reverse charge sales. When no tax applies, the whole price is revenue. When tax applies, the tax comes out of the same price.
What customers say about running Stripe through Acodei

“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.”
“Works well and is really helpful for massive transactions. The support is really fast and helpful. 100% recommended.”
Related reading
- Stripe Tax
- Stripe Price
- Stripe Tax Rate
- Reverse Charge
- Stripe Tax Itemized Export
- Stripe inclusive vs exclusive tax in QuickBooks
More glossary terms
- Undeposited Funds
- Stripe Balance Transaction
- Available vs Pending Balance
- Stripe Dispute
- Stripe Dispute Evidence
- Stripe Fee
- Stripe Balance Adjustment
- QuickBooks Credit Memo
- Stripe Tax
- QuickBooks Tax Code
- Stripe Reserve
- Stripe Tax Rate
- Stripe Fee Credit
- Stripe Credit Note
- QuickBooks Product/Service Item
- Stripe Payout
- QuickBooks Sales Receipt
- QuickBooks Bank Deposit
- QuickBooks Transfer
- Stripe Authorization Hold
- QuickBooks Refund Receipt
- QuickBooks Payment
- QuickBooks Expense
- QuickBooks Journal Entry
- Stripe Financial Account
- Holding Account
- Accounts Receivable
- Bank Feed
- Deferred Revenue
- Stripe PaymentIntent
- Stripe Checkout Session
- Stripe SetupIntent
- Stripe PaymentMethod
- Stripe Charge
- Stripe Refund
- QuickBooks Invoice
- QuickBooks Class Tracking
- QuickBooks Location Tracking
- QuickBooks Project
- QuickBooks Closing Date
- Stripe Invoice Line Item
- Stripe Proration
- Stripe Invoice Status
- Stripe Shipping Rate
- Stripe Transfer
- Stripe Mandate
- Stripe on_behalf_of
- Stripe Invoice Item
- QuickBooks Estimate
- Stripe Invoice Payment
- Stripe Invoice Payment Settings
- Stripe Billing Meter
- Stripe Invoice Template
- Stripe Price
- Stripe Subscription Schedule
- Stripe Subscription Item
- QuickBooks Recurring Transaction
- QuickBooks Sub-Customer
- QuickBooks Audit Log
- QuickBooks Bank Rule
- Stripe Subscription Status
- Stripe Mixed Interval Subscription
- Stripe Trial Settings
- QuickBooks Payment Terms
- Stripe Pending Update
- QuickBooks Tags
- QuickBooks Credit Card Credit
- QuickBooks Vendor Credit
- QuickBooks Bill
- QuickBooks Delayed Charge
- Stripe Billing Mode
- QuickBooks Billable Expense
- Stripe Customer Cash Balance
- QuickBooks Purchase Order
- QuickBooks Opening Balance
- QuickBooks Account Type
- QuickBooks Sales Tax Center
- Stripe Webhook
- Stripe Metadata
- Stripe Outbound Payment
- Stripe Received Credit
- Stripe Outbound Transfer
- Stripe Inbound Transfer
- Stripe Received Debit
- Stripe Payout Method
- Stripe Financial Account Transaction
- Stripe Financial Address
- Stripe Application Fee
- Stripe Connected Account
- Stripe Destination Charge
- Stripe Separate Charges and Transfers
- Stripe Direct Charge
- Stripe Payment Method Configuration
- Stripe Dynamic Payment Methods
- Stripe Payment Method Rules
- QuickBooks Bundle
- Stripe Account Capability
- Stripe Merchant of Record
- Stripe Data Pipeline
- Settlement Currency
- Hosted Invoice Page
- Stripe Customer
- Stripe Product
- QuickBooks Home Currency
- QuickBooks Exchange Gain or Loss
- QuickBooks Trial Balance
- QuickBooks General Ledger Report
- QuickBooks Retained Earnings
- QuickBooks Profit and Loss Report
- QuickBooks Balance Sheet Report
- QuickBooks Account Register
- QuickBooks Reclassify Transactions
- QuickBooks A/R Aging Report
- QuickBooks Sales Tax Liability Report
- QuickBooks Sales Tax Payable
- Stripe Tax Transaction
- Stripe Tax Location Report
- Stripe Tax Summarized Export
- Stripe Tax Itemized Export
- Stripe Product Tax Code
- QuickBooks Vendor
- Economic Nexus
- Reverse Charge
- Stripe Statement Descriptor
- Stripe Taxability Reason
- Stripe Tax Filing Currency
- Stripe Tax Cross-Border Goods Option
- Stripe Tax Threshold Monitoring
- QuickBooks Uncategorized Income
- QuickBooks Sales by Product/Service Report
- QuickBooks Sales by Customer Report
- QuickBooks Group Tax Rate
- Form 1099-NEC
- SEPA Direct Debit
- Bacs Direct Debit
- Canadian Pre-Authorized Debit (PAD)
- Australia BECS Direct Debit
- QuickBooks Customer Display Name
- Backup Withholding
- QuickBooks Multicurrency
- Form 1042-S
- Form W-8BEN
- Form W-9
- Form 8233
- Form 1042
- Form 1099-K
- Form W-8BEN-E
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