Skip to content

Stripe Tax Fresh

Automatically calculate, collect, and report tax on your Stripe payments. Supports 90+ countries and all US states.

Setup overview

StepDescription
1. Set head office addressTell Stripe where your business is located
2. Select preset tax codeDefault product classification for tax rates
3. Set tax behaviorWhether prices include or exclude tax
4. Add registrationsRegister with local tax authorities where you're liable
5. Enable in integrationAdd automatic_tax[enabled]=true to API calls
6. Set up filingAutomate return submission with TaxJar or Taxually

Step 1: Set your head office address

Your head office is where your business is located (or for physical goods, where you ship from). By default Stripe uses your Stripe business address — review and confirm in Dashboard → Settings → Tax.

Via API:

bash
curl https://api.stripe.com/v1/tax/settings \
  -u "sk_test_YOUR_KEY:" \
  -d "head_office[address][line1]=123 Main St" \
  -d "head_office[address][city]=San Francisco" \
  -d "head_office[address][state]=CA" \
  -d "head_office[address][country]=US" \
  -d "head_office[address][postal_code]=94111"

Step 2: Select your preset tax code

A tax code classifies your product or service for accurate tax rate calculation. The preset tax code applies when you don't specify a tax_code on individual products.

Set in Dashboard → Settings → Tax → Preset product tax code.

Then review your product catalog (Dashboard → Products) to confirm the default is correct for each product. Edit individual products to assign a more specific tax code where needed.

For physical goods: also set a preset shipping tax code to apply correct treatment to shipping fees.

Step 3: Select tax behavior

Tax behavior determines whether Stripe adds tax on top of your price or treats the price as already inclusive.

OptionDescription
ExclusiveTax is added on top of the price (customer pays price + tax)
InclusiveTax is included in the price (total doesn't change)
AutomaticStripe decides based on currency: exclusive for USD/CAD, inclusive for all others

Set the default in Dashboard → Settings → Tax. Override per-price using the tax_behavior field on the Price object.

Step 4: Add registrations

You must register with local tax authorities before collecting tax in a region. A tax registration tells Stripe it's eligible to calculate tax for that region.

Add registrations in Dashboard → Tax → Locations.

You can schedule a future registration effective date if you're planning to register but haven't yet.

bash
# Create a tax registration
curl https://api.stripe.com/v1/tax/registrations \
  -u "sk_test_YOUR_KEY:" \
  -d country=US \
  -d "country_options[us][state]=CA" \
  -d "country_options[us][type]=state_sales_tax" \
  -d active_from=now

Step 5: Enable tax in your integration

API integrations

Add automatic_tax[enabled]=true to Checkout Sessions, Subscriptions, or Invoices:

bash
# Enable tax on a Checkout Session
curl https://api.stripe.com/v1/checkout/sessions \
  -u "sk_test_YOUR_KEY:" \
  -d mode=payment \
  -d "line_items[0][price]=price_YOUR_PRICE_ID" \
  -d "line_items[0][quantity]=1" \
  -d "automatic_tax[enabled]=true" \
  -d success_url="https://example.com/success" \
  -d cancel_url="https://example.com/cancel"

# Enable tax on an Invoice
curl https://api.stripe.com/v1/invoices \
  -u "sk_test_YOUR_KEY:" \
  -d customer={{CUSTOMER_ID}} \
  -d "automatic_tax[enabled]=true"

# Enable tax on a Subscription
curl https://api.stripe.com/v1/subscriptions \
  -u "sk_test_YOUR_KEY:" \
  -d customer={{CUSTOMER_ID}} \
  -d "items[0][price]"={{PRICE_ID}} \
  -d "automatic_tax[enabled]=true"

Node.js example

javascript
const stripe = require('stripe')('sk_test_YOUR_KEY');

const session = await stripe.checkout.sessions.create({
  mode: 'payment',
  line_items: [{
    price: 'price_YOUR_PRICE_ID',
    quantity: 1,
  }],
  automatic_tax: { enabled: true },
  success_url: 'https://example.com/success',
  cancel_url: 'https://example.com/cancel',
});

Integration support

IntegrationHow to enable
InvoicingAdd automatic_tax[enabled]=true to Invoice or enable in Dashboard
SubscriptionsAdd automatic_tax[enabled]=true to Subscription
CheckoutAdd automatic_tax[enabled]=true to Checkout Session
Payment LinksEnable in Dashboard → Payment Links settings
Custom flows (PaymentIntents)Use Tax Calculation API before creating PaymentIntent

Update existing recurring integrations

Enabling Tax does not automatically update existing subscriptions, invoices, or payment links. Update them separately:

bash
# Update existing subscription to enable tax
curl https://api.stripe.com/v1/subscriptions/{{SUBSCRIPTION_ID}} \
  -u "sk_test_YOUR_KEY:" \
  -d "automatic_tax[enabled]=true"

# Update existing invoice
curl https://api.stripe.com/v1/invoices/{{INVOICE_ID}} \
  -u "sk_test_YOUR_KEY:" \
  -d "automatic_tax[enabled]=true"

Or update in bulk via Dashboard → Subscriptions / Invoices / Payment Links.

Step 6: Set up filing

After you start collecting tax, set up automated return filing:

RegionFiling partner
US (all 50 states)Stripe, powered by TaxJar
Other countries (90+)Taxually

Automated filing provides:

  • Automatic return preparation and submission
  • Email notifications before scheduled returns
  • Status tracking per filing
  • Copies of completed filings

Configure in Dashboard → Tax → Filing.

Disable tax collection

To stop collecting tax:

  1. Turn off automatic tax in Dashboard → Settings → Tax
  2. Remove active registrations in Dashboard → Tax → Locations
  3. Update existing recurring integrations to automatic_tax[enabled]=false

Tax behavior on prices

Set tax_behavior on individual prices to override the account default:

bash
curl https://api.stripe.com/v1/prices \
  -u "sk_test_YOUR_KEY:" \
  -d product={{PRODUCT_ID}} \
  -d currency=usd \
  -d unit_amount=2000 \
  -d tax_behavior=exclusive

Valid values: exclusive, inclusive, unspecified (inherits account default).

Stripe API Reference - Self-contained docs reference, refreshed 2026-05-18