Tax for marketplaces
Last updated
Last updated
The following instructions on how to integrate Stripe Tax into your marketplace app (where your marketplace is responsible for collecting and remitting tax) are based on this Stripe doc. However, the instructions below are slightly different, as the Stripe Connect - Marketplace plugin automatically takes care of some of the details involved.
Activate Stripe Tax
Navigate to the 'Tax' section of your Stripe dashboard and click on 'Get started'. In most cases the first two steps will be completed by default, but if not then provide the necessary info to Stripe
Add a tax registration
As part of the onboarding process, you'll have the option to add a tax registration.
Choose a tax jurisdiction (EG US, UK etc.) and click Next. You can then choose whether you want to start collecting tax immediately or wait until a later date.
You can add as many registrations as you want (you should add one for every jurisdiction where you have a tax obligation).
Provide a preset tax code for the platform account
Stripe gives you the option to either:
Map specific tax codes to each product or
Use a preset tax code for the platform account which will be applied to all products sold
The Stripe Connect - Marketplace plugin currently only supports using a preset tax code for the platform account. You can set this preset tax code by navigating to:
Settings -> Tax and choosing an option from the Preset product tax code dropdown
You can also specify whether you want prices on the Checkout page to be inclusive or exclusive of the tax calculated
Enable Stripe Tax when creating a Checkout Session
When creating a Stripe Checkout Session with the 'Stripe Connect - Create Checkout Session' action, set the Enable Stripe Tax option to 'yes':
Under the hood, the Stripe Connect - Marketplace plugin is including the following parameters when the Enable Stripe Tax field is set to 'yes':
Create a transfer reversal to move the collected tax to your marketplace account (Destination charges only)
If you're creating a Destination Charge, the tax will be transferred to the merchant's Stripe account. For example if:
The product costs $100
Platform fee is $20
Sales tax of $23 is applied
The the total value of the payment will be $123, split as follows:
$20 transferred to the platform account (less any Stripe fees)
$103 transferred to the seller's connected account ($80 for the product and $23 for the sales tax)
You will therefore need to transfer the $23 representing the sales tax back to your platform account. You can use the Stripe Connect - Reverse a Transfer action to do this.
It is recommended you use a Stripe Webhook to trigger a backend workflow when a Checkout Session is completed to trigger the Stripe Connect - Reverse a Transfer action. You can use the checkout.session.completed event to trigger the backend workflow.
See the next page of the plugin documentation for full details on how to do this.
Note on Separate Charges and Transfers
You do NOT need to create a transfer reversal if you're using Separate Charge and Transfer as the charge type. Instead, you should simply transfer the appropriate amount to the seller (EG if their cut is 80%, transfer them 80% of the total price excluding the tax).
Whatever is left in your platform account will include the tax collected as part of the transaction.
This means that if you're using the 'Stripe Connect - Create Checkout Session (Multiple Items)' action to create a Checkout Session, you do NOT need reverse a transfer (as this action always uses the Separate Charge and Transfer approach)