Public preview
Tax ticket sales based on event location Public preview
Integrate Stripe Tax to calculate taxes on admission fees and tickets.
When you sell admission to an event (such as a concert, conference, museum visit, or sporting event) VAT and sales tax are based on where the event takes place, not where the customer lives. In the United States, specific local taxes (such as entertainment or amusement taxes) might also apply, in addition to state and local sales tax.
Use this guide to automatically calculate taxes on admission fees and tickets.
Choose your integration
Select an integration path that best matches how you want to accept payments with Stripe. If you’re a platform or marketplace using Connect, see the platforms and marketplaces section to set up tax for tickets.
| Payment Intent integration | Checkout Session integration | Custom Tax Calculation API integration | |
|---|---|---|---|
| Best for | Full control over payment flow with Stripe-managed tax transactions | Low-code, Stripe-hosted checkout with minimal setup | Third-party payment processors or fully custom checkout flows |
| Advantages | Fewer API calls Automated handling of refunds Dashboard support, specifically useful for testing Built-in receipts support | Fewer API calls Low-code payment integration, Stripe hosted Supports subscriptions Dashboard support, specifically useful for testing | Fully control the checkout flow Supports other payment providers, such as PayPal |
| Disadvantages | Preview feature might require SDK update Limited support for other payment providers, such as PayPal | Preview feature might require SDK update Less control over UI and UX More rigid, might not fit your specific use case | Refunds require custom implementation Limited Dashboard support Testing requires API No automatic receipt generation |
Checkout Sessions
Payment Intents and Custom Calculation
Update the Stripe SDK
Tax calculation for events is in public preview and requires a public preview API version ( 2026-03-25.preview or later). Check the SDK release notes to confirm which versions support Tax for events.
Configure Stripe Tax
When you set up Stripe Tax for tickets, set the default product tax code to txcd_20030000, General - Services. You can’t set any of the event tax codes as the default product tax code.
Add a registration for testing 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 event location. For example:
- United States - Colorado, Sales Tax
- United States - Colorado, Boulder Admissions 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.
Tax calculations for ticket sales differ from typical tax calculations because they’re based on the performance location instead of the customer’s billing or shipping address.
Create a performance location
Create a tax location of type performance and specify the address of the event venue.
You can use any address that’s eligible as a business location for a TaxCalculation in a supported country.
Each country requires different address formats for the location.
Command Line
Select a language
cURL
Stripe CLI
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 | venue_name | capacity | seatplan | stripe_location_id |
|---|---|---|---|---|
<your_internal_id> | Greenleaf Park | 500 | https://example.com/seating-plan.png | taxloc_yB7b4tVHRb |
Table: your_business.venues
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 a product
Create a product with an event tax code and a performance location to use in your Checkout Session.
You can create a product with an events tax code and a performance location in the Product catalogue.
Create a checkout session
When creating a checkout session, use the product you created with an event tax code and a performance location.
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
Optional Sell merchandise alongside event tickets
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, but pass the connected account’s ID in the Stripe-Account header on all API calls. | 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. |
Software platforms integration
When your connected accounts are liable for tax, follow the standard integration steps with these differences:
- All API calls : Pass the connected account’s ID in the Stripe-Account header when you create tax registrations, performance locations, products, tax calculations, and checkout sessions or payment intents.
- Tax registrations : Each connected account requires its own tax registrations. Create separate registrations for each connected account and the platform account.
- Performance locations : Each connected account requires its own performance locations. Create separate locations for each connected account and the platform account.
- Products : Create products for each connected account individually. Use performance location IDs that belong to the connected account, not the platform.
For example, to create a tax calculation for a connected account, pass the Stripe-Account header:
Command Line
Select a language
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
