Sign in
An image of the Stripe logo
Create account
Sign in
Home
Payments
Business operations
Financial services
Developer tools
No-code
All products
Home
Payments
Business operations
Home
Payments
Business operations
Financial services
Developer tools
Overview
Online payments
Products and prices
Invoicing
Subscriptions
    Overview
    How subscriptions work
    Recurring pricing models
    Get started
    Quickstart
    Integrate a SaaS business
    Embed a pricing table
    Design an integration
    Build a subscriptions integration
    Migrate subscriptions to Stripe
    Billing resources
    Coupons
    Customers
    Subscriptions
    Subscription invoices
    Manage subscriptions
    Change subscriptions
    Usage-based billing
    Use trial periods
    Set payment methods
    Subscriptions with multiple products
    Set subscription quantities
    Subscription webhooks
    Schedule subscriptions
    Tax
      Collect taxes
      Migrate to Stripe Tax
      Tax Rates
      Customer tax IDs
    Sales-led B2B billing
    Integrate with Salesforce
    Manage recurring revenue
    Revenue recognition
    Revenue recovery
    Subscription metrics
    Customer management
    Overview
    Set up the the no-code customer portal
    Set up the customer portal with the API
    Configure the customer portal
    Testing
    Test your integration
    Test clocks
    Strong Customer Authentication (SCA)
    Invoices API updates
Quotes
In-person payments
Multiparty payments
After the payment
Add payment methods
Payment Links
Stripe Checkout
Stripe Elements
About the APIs
Regulation support
Implementation guides
Testing
Billing
·
HomePaymentsSubscriptionsTax

Tax rates

Learn how to collect and report taxes with tax rate objects.

Stripe allows you to define any number of tax rates and apply them to invoices, subscriptions, and one time payments when using Checkout. However, we won’t automatically set them on your behalf.

If you’re looking for automated tax calculation where you don’t need to define the rates, use Stripe Tax.

When applying tax rates, Stripe calculates the total tax amount per tax rate, and summarizes it in a table that you can export into tax summary reports.

Creating tax rates

If you’re working with a small number of tax rates, you can manage and create them in the Dashboard. After creating tax rates, you can apply them to invoices, subscriptions, and one-time payments or subscriptions created through Stripe Checkout.

Create a catalog of tax rates that meet the requirements for the jurisdictions that you do business in. For example, if you operate in Europe, you might want to create a catalog of tax rates for MOSS VAT.

Creating tax rates through the API

The following example demonstrates how you can create a tax rate through the API.

Command Line
curl https://api.stripe.com/v1/tax_rates \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -d display_name="Sales Tax" \ -d inclusive=false \ -d percentage="7.25" \ -d country=US \ -d state=CA \ -d jurisdiction="US - CA" \ -d description="CA Sales Tax"

Required properties:

  • The display_name appears on your customer’s invoice, and is usually a short name that describes the specific type of tax, such as Sales, VAT, or GST.
  • The inclusive property determines whether the tax percentage is added to, or included in, the overall amount.
  • The percentage is a number (up to 4 decimal places) that represents the tax percentage to be collected.

Optional properties:

  • The optional country property is a valid two-letter ISO country code. Some countries (for example, United States) require an additional two-letter state property. Use these properties to apply dynamic tax rates based on your customer’s billing or shipping address in Checkout Sessions.
  • The optional jurisdiction property represents the tax jurisdiction of the tax rate and can be used to differentiate between tax rates of the same percentage. jurisdiction appears on your customer’s invoice. In the Dashboard, jurisdiction appears as the Region label for the tax rate.
  • You can also store additional details in the description. Your customers won’t see this property.

You can’t change the percentage, country, or state properties after you set them, and you can only set them when you create the tax rate.This ensures that existing subscriptions and invoices using tax rates aren’t affected… If you need to update these properties, create a new tax rate and archive the old object.

Inclusive versus exclusive tax

Tax rates can either be exclusive or inclusive. An exclusive tax is not included in the invoice subtotal, whereas an inclusive tax is.

The following table illustrates a 25% tax rate modifying the total amount due, depending on whether it’s exclusive or inclusive.

TaxSubtotalTax dueTotal
25% Exclusive$5.00$1.25$6.25 ($5.00 + $1.25)
25% Inclusive$5.00$1.00 (already included in the total)$5.00 ($4.00 + $1.00)

Tax exempt and reverse charge

You can set the exemption status for a Customer to either exempt or reverse.

In both cases, no tax is calculated on the invoice.

In the case where the customer is liable for the tax (that is, under the reverse-charge procedure within EU VAT), set the exemption status to reverse. The invoice and receipt PDF includes the text “Reverse charge”.

Download example reverse-charge invoice PDF

If a one time payment is performed using Checkout, the exemption status is captured as customer_details in the Checkout Session object.

Using multiple tax rates

You can apply Tax rates to line items or set them as a default for all line items in an invoice. You can set up to five tax rates per line item. When you set tax rates on both a line item and the invoice, the rates for that invoice don’t apply to that line item.

For example, this invoice has two overall tax rates of 9.975% and 5%:

InvoiceItem tax rateOverall invoice tax rateItem tax rate (Effective)
Line item 1(none)9.975% and 5%9.975% and 5%
Line item 210%9.975% and 5%10%
Line item 31% and 2%9.975% and 5%1% and 2%

Tax amounts

When you apply tax rates to an invoice, they’re aggregated into the total_tax_amounts attribute. This attribute represents the sum of all tax amounts, per tax rate, over the entire invoice.

For example, here’s an invoice where two line items have two different rates:

InvoiceAmountTax RateTax AmountTotals
Line item 1$5.005% (excl)$0.25
Line item 2$10.0010% (excl)$1.00
Total Tax Amount$1.25
Total$15.00$16.25

Download example invoice PDF

Rounding

When determining tax amounts, Stripe rounds at the invoice item level to the smallest currency unit before summing across the entire invoice.

NameAmountTax RateTax Amount (before rounding)Tax Amount (after rounding)Totals
Line Item 1$0.4315%$0.0645$0.06
Line Item 2$4.8415%$0.7265$0.73
Total Tax Amounts$0.79
Subtotal$5.27
Total$6.06

Download example rounding invoice PDF

Discounts

Discounts are usually applied before tax, but this isn’t always the case.

Reading each line left-to-right, noting the formula applied (in the table header), you can trace the values as they’re applied to the final, total amount.

Exclusive tax discount example

Stripe always applies discounts before exclusive tax.

This example shows how we apply discounts to an exclusive tax rate.

Invoice ItemAmountDiscount %Discount $Post DiscountTax RateTax $Total
Formula——Amount * DiscountAmount - Discount$—PostDiscount * TaxRatePostDiscount + Tax$
Line item 1$5.0010%$0.50$4.505% exl.$0.23$4.73
Line item 2$10.0010%$1.00$9.005% exl.$0.45$9.45
Total$15.00$1.50$13.50$0.68 (@ 5% exl.)$14.18

Download example discounts invoice PDF

Inclusive tax discount example

When tax rates are inclusive, Stripe Tax applies discounts to the original amount first. Then, we recalculate taxes based on the remaining amount. This reduction has the side effect of reducing the tax amount due.

Invoice ItemAmountDiscount %Discount $Post DiscountTax RateTax $ (Included)Total
Formula——Amount * Discount%Amount - Discount$—PostDiscount - PostDiscount / (1 + TaxRate)PostDiscount
Line item 1$5.0010%$0.50$4.505% incl.$0.21$4.50
Line item 2$10.0010%$1.00$9.005% incl.$0.43$9.00
Total$15.00—$1.50$13.50—$0.64 (@ 5% incl.)$13.50

Download example invoice PDF

Both inclusive and exclusive tax with discount example

In the case where you have both inclusive and exclusive tax, the two rules apply together in the following steps for every line item:

  1. We calculate the inclusive tax amount based on the post-discounted amount by multiplying by the inclusive tax rate.
  2. We calculate the exclusive tax amount by multiplying the exclusive tax rate by the post-discounted amount, less the inclusive tax amount.
  3. We calculate the total amount due by summing the post-discounted amount and the exclusive tax amount (calculated in step 2).
Invoice ItemAmountDiscount %Discount $Post DiscountInclusive Tax RateInclusive Tax $Post Discount, Less Incl. TaxExclusive Tax RateExclusive Tax $Total
Formula——Amount * Discount%Amount - Discount$—PostDiscount - PostDiscount / (1 + TaxRate)PostDiscount - InclusiveTax$—PostDiscLessIncTax * TaxRatePostDiscount + ExclTax$
Line item 1$5.0010%$0.50$4.505% incl.$0.21$4.297% excl.$0.30$4.80
Line item 2$10.0010%$1.00$9.005% incl.$0.43$8.577% excl.$0.60$9.60
Total$15.00—$1.50$13.50—$0.64 (@ 5% incl.)$12.86—$0.90 (@ 7% excl.)$14.40

Download example invoice PDF

Tax reporting and remittance

Any business collecting taxes ultimately needs to remit tax to the appropriate government.

See Tax reporting and filing to learn more.

Data exports

From the Dashboard’s Tax Rates list page, you can export data files required for tax reporting calculations.

Stripe Billing provides two different levels of tax report export files:

  • Invoice line item tax export — A lower-level export, this includes details down to the line item level, including per-line-item tax rates, inclusive/exclusive, amounts, and so on.
  • Invoice totals export — Shows the aggregate tax collected on the invoice as a whole, including adjustments for any refunds.

For remittance reporting, use the line-item tax export to sum all amounts paid for all tax rates used. To factor in any refunds you will also need to pivot against the Invoice totals export.

Was this page helpful?
Need help? Contact Support.
Watch our developer tutorials.
Check out our product changelog.
Questions? Contact Sales.
Powered by Markdoc
You can unsubscribe at any time. Read our privacy policy.
On this page
Creating tax rates
Inclusive versus exclusive tax
Tax exempt and reverse charge
Using multiple tax rates
Tax amounts
Rounding
Discounts
Tax reporting and remittance
Stripe Shell
Test mode
Welcome to the Stripe Shell! Stripe Shell is a browser-based shell with the Stripe CLI pre-installed. Login to your Stripe account and press Control + Backtick on your keyboard to start managing your Stripe resources in test mode. - View supported Stripe commands: - Find webhook events: - Listen for webhook events: - Call Stripe APIs: stripe [api resource] [operation] (e.g. )
The Stripe Shell is best experienced on desktop.
$