Tax for software platforms
Learn how to enable Stripe Tax for your connected accounts, and collect tax when the connected account is liable for paying the tax.
Stripe Tax enables businesses to calculate, collect, and report indirect taxes in over 100 countries, across hundreds of product categories. As a platform, you can use Stripe tax to offer pre-integrated tax compliance to your connected accounts.
Use this guide if your connected accounts are responsible for collecting, filing, and reporting taxes.
- Set up your connected accounts for tax
- (Optional) Assign tax codes to the product catalog
- Integrate tax calculation and collection
- Access Stripe Tax Reports
Set up your connected accounts for tax
As a platform, you must make sure that a connected account has their tax settings and registrations set up before enabling tax calculations. This can be achieved by:
Connected account using the Stripe Dashboard
This option is only available to connected accounts with access to the Stripe Dashboard (for example, Standard accounts). Ask your connected accounts to use the Stripe Dashboard to add their head office location, preset tax code, and tax registrations. You can also collect the head office location and the preset tax code by enabling Stripe Tax in the connected account onboarding. You can make this adjustment in the Connect onboarding options in the Dashboard.
Creating a tax interface within your platform
This option allows accounts without access to the Stripe Dashboard (for example, Custom and Express accounts) to configure Stripe Tax.
Your platform must build an interface and use the Tax Settings API to set the head office location and other default values for the connected accounts. And your platform must use the Tax Registrations API to add tax registrations for the locations where the connected accounts have tax obligations.
Using Connect embedded components within your platform
You can use Connect embedded components to provide Stripe tax compliance integration to your connected accounts directly on your website with minimal development. Stripe regularly updates our embedded component integrations, so your tax compliance requirements are always current.
Stripe offers two components for tax:
- Tax settings: Collect the details a connected account needs to calculate taxes, like the head office address and the preset tax code.
- Tax registrations: Connected accounts can manage the locations where they have registered with the local tax authority. Adding a registration enables Stripe to calculate and collect taxes in a given location.
To embed tax settings and tax registrations into your website:
Use the embedded components quickstart to set up your environment.
Create an AccountSession with
tax_
and/orsettings: {enabled: true} tax_
.registrations: {enabled: true}
After creating the account session and initializing ConnectJS, you can render each tax component in the frontend:
Tax settings component preview
The tax settings component allows connected accounts to set their head office address and a preset tax code. Both attributes are required to calculate taxes for the connected account.
Tax registrations component
The tax registrations component allows a connected account to manage its tax registrations. If a connected account doesn’t add a tax registration, but calculates tax for that jurisdiction, Stripe Tax returns a tax amount of 0.
and sets the taxability reason to not_
.
Your platform must then check whether connected accounts have configured Stripe Tax to enable tax calculations.
Note
Sign in to check if your connected accounts are ready to use Stripe Tax.
On the Connected accounts page in your Dashboard, you can filter the list on accounts that are ready to use Stripe Tax. You can also export those accounts with the following Stripe Tax-related columns:
- Tax Settings Status: the value
active
indicates that the account is ready to use Stripe Tax. The valuepending
indicates that some required fields are missing. - Tax Threshold Status: the value
exceeded
indicates that the account’s calculated sales or transactions are over the location’s threshold, and the business likely needs to register for tax. For more information, see Monitor your obligations. - Tax Registration Status: the value
active
indicates that the account has at least one active tax registration.
You can also check whether an account has configured Stripe Tax by using the Tax Settings API.
Assign tax codes to the product catalogOptional
To calculate taxes, Stripe Tax requires classifying products into their tax codes. One way to do this is to supply a preset tax code for each connected account, which is probably sufficient if your connected accounts typically sell a single category of items.
However, you might offer your users more control by allowing them to map Tax Codes to each product. You can retrieve a list of supported product tax codes from the Stripe Tax Code API. You can also allow a subset of this list if your connected accounts only sell specific types of products.
Integrate tax calculation and collection
You need to integrate with Stripe Tax to calculate taxes as part of your checkout flow.
Payment Links
Payment Links for one-time payments
Pick one of the currently supported charge types that allow the connected account to be liable for tax with Stripe Payment Links:
Payment Links for subscriptions
Pick one of the currently supported charge types that allow the connected account to be liable for tax with Stripe Payment Links:
Checkout
Checkout Sessions for one-time payments
Pick one of the currently supported charge types that allow the connected account to be liable for tax with Stripe Checkout:
Checkout Sessions for subscriptions
Pick one of the currently supported charge types that allow the connected account to be liable for tax with Stripe Checkout:
Billing
Subscriptions
Pick one of the currently supported charge types that allow the connected account to be liable for tax with Stripe Subscriptions:
Invoicing
Pick one of the currently supported charge types that allow the connected account to be liable for tax with Stripe Invoicing:
Custom flows using the Stripe Tax API
Payment Intents
Pick one of the currently supported charge types that allow the connected account to be liable for tax with Stripe Tax API:
You must also create tax transactions to record the tax you collect from customers and account for refunds.
Off-Stripe payments
Check how to integrate using Stripe Tax API and to allow the connected account to be liable for tax, include the Stripe-Account
header with the value of the connected account ID in the Tax Calculation API calls:
You must also create tax transactions to record the tax you collect from customers and account for refunds.
After you implement it, Stripe automatically starts collecting tax in jurisdictions where the user has an active registration.
Note
Independent of the integration, your connected account receives a credit for the collected tax amount by default.
Access Stripe Tax Reports
Your connected accounts can use Stripe Tax reports to help them correctly file and remit tax.
Connected account use the Stripe Dashboard
This option is only available to accounts with access to the Stripe Dashboard (for example, Standard accounts).
The connected accounts can access their Stripe Tax reports using the Tax Reporting functionality in the Stripe Dashboard.
Use the Stripe API
Use this option for accounts without access to the Stripe Dashboard (for example, Custom and Express accounts).
Platforms can download itemized tax transactions for their connected accounts using the Report API with the connected_account_tax.transactions.itemized.2 report type.
When a platform runs the following command, they download all 2022 transactions from all connected accounts:
When a platform runs the following command, they download all 2022 transactions from a single connected account:
Note
To generate reports for connected accounts, use the connected_
parameter instead of the Stripe-Account
header.
Use the Export Tax Transactions Embedded Component
To learn more about this component and integrate it, see export tax transactions.