Calculate tax
Learn how to calculate tax with Stripe Tax.
The most common forms of indirect taxes for your business are sales tax, VAT, and GST. These taxes apply on the sale of physical goods, digital goods, and services.
Stripe calculates tax on a transaction taking into account some or all of the following factors:
- The location of the seller
- The location of the customer
- The location where the activity is performed
- The type of the product sold
- Whether the transaction involves a reverse charge
- The status of the customer (for example, whether they’re a VAT-registered business, private person or an exempt organization)
Payment methods
Stripe calculates tax for all supported payment methods, including Apply Pay and Google Pay wallet transactions.
How Stripe uses addresses
Stripe uses a single address as the customer’s location, or transaction destination, when calculating taxes. For more information, see which customer address we use.
In certain scenarios, it’s important to identify the origin of a transaction. Stripe generally uses the address where your business is located as the origin of a transaction. This address is defined as your origin address in the Dashboard or as head_ if using the tax settings object.
You can also specify a performance location to calculate tax based on a location that differs from both your origin address and your customer’s address. For example, you might deliver products to your customer at a store, or sell tickets to an event or activity.
How to use ship-from addresses
You can add ship-from addresses that differ from your business address for tax calculation. To add them, use the ship_ transaction object. You can add ship-from locations only using the Stripe Tax API. They aren’t available in integrations of Stripe Tax with Payment Links, Checkout, or Billing and Invoicing. If you enter an unrecognized ship-from address, Stripe returns a shipping_ error.
Stripe Tax can designate only one address as the origin of a transaction even though in some countries the determination of origin can vary by product type. If you provide the ship-from address, Stripe Tax uses it to calculate tax for both services and physical goods. If you don’t provide a ship-from address, Stripe Tax assumes that the origin of the transaction is the address where your business is located. When selling a combination of products that require different origin locations, consider splitting the transaction accordingly.
How to use performance location
You can calculate taxes based on performance location addresses that differ from your business address and your customer’s address. If you provide a performance location, Stripe Tax uses its address as the place of taxation for physical goods, services and events. To use performance locations:
- You must define performance locations through the Stripe Tax API.
- You can’t use performance locations with Payment Links, Checkout, or Billing and Invoicing.
- Unrecognized performance location addresses return a tax calculation error.
- You can’t use performance locations for digital product tax codes.
- Some product tax codes require the performance location.
Even if you provide a performance location, the business address and the customer address remain relevant in determining whether reverse charges might apply.
Discounts and tax calculations
Stripe Tax calculates tax after applying discounts to the subtotal. This ensures tax calculation on the actual amount paid by the customer.
For example, with a product priced at 150 USD and a 20 USD discount:
- The subtotal after discount is 130 USD.
- Tax is calculated on the 130 USD amount.
- The final total is the discounted subtotal plus the calculated tax.
Discounts don’t affect the tax rates themselves, only the amount on which tax is calculated. When using the Tax API, calculate the discount before sending the request.
Tax breakdowns
Stripe Tax provides detailed tax breakdowns for each transaction. These breakdowns aren’t sorted in any specific order. All applicable taxes are calculated and applied simultaneously. The order of items in the breakdown doesn’t indicate priority or application sequence.