Stripe "tax_behavior" inclusive vs exclusive on invoice line items
Configures Stripe tax_behavior on invoice line items. Use when invoice totals must show tax included in the price or added on top. Not for customer-level tax exemption.
TL;DR
Stripe's tax_behavior on a price or line item decides whether the amount includes tax (inclusive) or tax is added on top (exclusive). Inclusive matches EU-style VAT-included pricing; exclusive matches US-style sales tax added at checkout. Set it on the price so every invoice using that price is consistent; mixing behaviors across line items confuses customers and breaks total reconciliation. Preview the invoice to confirm the tax lines match your pricing page.
The query
Stripe "tax_behavior" inclusive vs exclusive on invoice line itemsUse this when
- EU customers expecting VAT-included prices on invoices
- US invoices needing sales tax added on top of the subtotal
- Invoice totals not matching the pricing page
Not for
- Customer tax exemption status (use customertaxexempt)
- Choosing tax rates (use tax rate objects or Stripe Tax)
Steps
- Decide the display convention per market: inclusive for VAT-included regions, exclusive for added-on-top regions.
Expected output: Each market has one consistent behavior.
- Set tax_behavior on the price objects, not per invoice line by hand.
Expected output: Every invoice inherits the right behavior automatically.
- Attach the correct tax rates to the subscription or invoice.
Expected output: Tax computes against the intended base.
- Preview a draft invoice and check the subtotal, tax, and total lines.
Expected output: The math matches your pricing page exactly.
- Lock the convention in your price catalog docs so new prices follow it.
Expected output: Future prices do not introduce a mixed-behavior mess.
Variant phrasings
Stripe tax_behavior inclusive vs exclusive
Stripe VAT included in price invoice
tax added on top Stripe invoice line item
Root cause
tax_behavior is a property of the price because the same numeric amount means different money depending on convention: 100 inclusive means ~83 base + tax, 100 exclusive means 100 base + tax. Getting it wrong silently shifts your effective price.
Edge cases
- Changing tax_behavior on an existing price is not allowed; create a new price
- Inclusive tax with multiple rates splits the included amount proportionally; verify the split
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_f-JKdmCqN5EPRu0tlHgfOw
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.