Files
Kordant/.agents/skills/stripe-best-practices/references/tax.md

2.5 KiB
Raw Blame History

Tax / Stripe Tax

Table of contents

  • When tax applies
  • Two-step setup
  • If jurisdictions are unknown
  • If the region or tax type isnt supported

When tax applies

Use Stripe Tax for any subscription, invoice, or Checkout Session where the merchant has customers across multiple jurisdictions. It handles sales tax, VAT, and GST automatically based on the customers location and the merchants active registrations. See the Tax overview for supported regions and tax types.

Two-step setup

  1. Add a registration for each jurisdiction where the merchant is obligated to collect tax. Do this in the Dashboard under Tax > Registrations, or via the Tax Registrations API.
  2. Pass automatic_tax: { enabled: true } on the Subscription, Invoice, or Checkout Session object.

Its safe to enable automatic_tax before any registrations exist — Stripe wont collect tax until at least one registration is active.

Traps to avoid: automatic_tax and explicit tax_rates are mutually exclusive. For existing subscriptions, clear default_tax_rates and all item-level tax_rates before enabling automatic_tax — the update will fail otherwise. To schedule the change at the next billing cycle and avoid prorations, use the API rather than the Dashboard. For bulk migrations, use the Tax migration tool.

Traps to avoid: For EU merchants, one OSS union registration covers all 27 member states. Dont register an individual EU country separately unless the merchant has a physical presence there.

If jurisdictions are unknown

Dont guess which jurisdictions apply. Prompt the user: “Go to Dashboard > Tax > Registrations, add the states or countries where you have customers, then come back.”

If the region or tax type isnt supported

Check the supported countries list. If the jurisdiction isnt listed, tell the user:

  • Stripe Tax doesnt support that region yet
  • They can collect tax manually using tax_rates on the subscription or invoice instead
  • For unsupported tax types (customs duties, excise taxes), Stripe Tax doesnt apply — those are out of scope

Dont attempt to approximate using a supported region as a proxy.