Public preview
Tax in-person sales at a specific location Public preview
Specify where a sale or service takes place to calculate tax at that location.
Many jurisdictions require you to calculate tax for in-person sales of physical goods or services at the location of the sale instead of your business address or the customer’s billing address.
By default, each tax code’s default sourcing rule determines the location Stripe uses to calculate tax. You can provide an optional performance_location ID on individual line items so Stripe Tax assesses tax for that item at the location address instead of using the sourcing rule. You must still provide your business address and the customer’s address for reverse-charge determination.
You can provide a performance_location ID on line items through the Tax Calculations API, Checkout Sessions, Payment Intents, Payment Links, and invoices. You can also set a product’s performance location on the product page in the Dashboard.
Ticket sales
Sales for tickets or admission to events require the performance location. See Tax ticket sales based on event location for guidance and relevant product tax codes.
Eligible tax codes
You can apply a performance location to any line item whose tax code has a performance_location requirement of optional. Common examples include:
- txcd _ 20030000 : General - Services
- txcd _ 99999999 : General - Physical Goods
- txcd _ 50021003 : Fee for Personal Training/Fitness Classes
- txcd _ 20060044 : Training
Caution
Electronic services and digital goods (streaming, software downloads, SaaS) don’t support performance locations. Including performance_location on a tax code with requirement not_allowed returns an error.
See Product tax codes for the complete list with the performance_location requirement column.
Set up Stripe Tax
Set up Stripe Tax and add a registration for the location where you sell.
Add a registration using the Dashboard or the Tax Registrations API.
- From the tax locations page in the Dashboard, click Add registration .
- Add the registrations applicable for the sale location. For example:
- United States - California, Sales Tax
- United States - California, San Francisco Gross Receipts Tax
Stripe Tax calculations don’t incur fees in a sandbox environment. After you add a tax registration, calculating tax in live mode incurs a fee.
Create a performance location
Create a tax location of type performance and specify the address where the sale takes place.
The address must be in a country supported by Stripe Tax where the sales type is All Sales. See Supported countries for address format requirements.
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
The response returns the id as a unique identifier for the performance location. Store this value for use in transactions where you calculate tax for sales in this location.
{
"id": "taxloc_yB7b4tVHRb",
// ... other fields omitted
}
A database entry for this example might be:
| id | name | address | stripe_location_id |
|---|---|---|---|
<your_internal_id> | Main Street store | 1 Market St, San Francisco, CA 94105 | taxloc_yB7b4tVHRb |
Table: your_business.locations
Location address validation errors
If you have a problem with the address of the tax location, the Tax Location API returns an error.
- The param property identifies the most specific address attribute possible.
- The message property specifies one of the following specific reasons for the error.
Invalid address
The address is not supported by Stripe Tax for a tax location. Please use a valid address.
The address validation failed, see supported address formats for address requirements.
Unsupported country or excluded territory
The address is not supported by Stripe Tax for a tax location. Please use a location that is supported by Stripe Tax.
The country isn’t supported or the address is in an excluded territory.
Create one location per site and reuse it across transactions.
Optional Create a product
Calculate tax
Call Create a tax calculation and pass the performance_location ID on each eligible line item. Stripe Tax assesses tax on that item at the specified address.
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
The example overrides the rules for the txcd_20030005 (Pet Services — Obedience Training) tax code. Even though the customer is based in Ireland, Stripe Tax calculates the tax based on the address in the performance location, not the customer’s country.
Optional Mixed carts
Platforms and marketplaces
If you use Stripe Connect to process payments on behalf of connected accounts, determine which entity is liable for collecting and reporting taxes. Depending on your business model, it’s either your platform or your connected accounts.
| Software platforms | Marketplaces | |
|---|---|---|
| Who is liable for tax | Your connected accounts | Your marketplace |
| How to integrate | Follow this guide with the following exceptions: Pass the connected account’s ID in the Stripe-Account header for all API requests. Create separate tax registrations for each connected account and your platform account. You can’t use registrations across accounts. Create separate locations for each connected account and your platform account. You can’t use performance location IDs across accounts. Create products for each connected account individually. Use performance location IDs for the corresponding connected account. | Follow this guide using your marketplace’s account. Withhold the collected tax amount from payouts to connected accounts. |
| Tax settings and registrations | Each connected account configures its own tax settings and registrations. | Your marketplace configures tax settings and registrations. Connected accounts don’t need their own. |
| Performance locations and products | Create separate performance locations and products for each connected account. Use the Stripe-Account header. | Create performance locations and products on your marketplace account. |
Test your integration
Testing Stripe Tax provides general guidance, but verify the following specific scenarios for performance locations:
- US cross-state : Confirm that a sale for service in a different US state than your business address calculates tax at the location’s state rates.
- EU reverse charge : Confirm that a reverse charge for an event in an EU member country to a customer in another EU country uses the customer’s address.
- Mixed cart : Confirm that tax calculates line items in a single order with different performance _ location settings or no performance location use the correct location rates for each.
