Update existing subscriptions
Learn how to update existing subscriptions to Stripe Tax.
Stripe Tax allows you to calculate the tax to collect on your transactions. It computes the taxes and adds them to the payment automatically, based on the product and the customer location.
When you integrate with Stripe Tax, you need to update existing subscriptions to make sure that tax is automatically calculated going forward. Stripe provides tooling to help you update your subscriptions. You can also manually update subscriptions where you want more control over certain options.
Update existing subscriptions using automated tooling
First, you need to activate Stripe Tax. To learn how, read the setup guide.
To use the tooling, follow these steps:
- Go to the tax migrations Dashboard.
- Review the subscriptions you need to update.
- Review the recommended actions.
- Make any necessary manual updates.
Stripe removes manual tax rates from the subscriptions, which can take up to 5 business days. When the process is complete, we notify you by email.
Note
We don’t prorate the tax changes. The updates take effect at the start of the next billing cycle.
You can use the tooling to update subscriptions that meet the following criteria:
- Are active
- Don’t automatically collect tax
- Have sufficient address information to calculate tax
You’ll need to update the following types of transactions before migrating:
- Transactions with subscription schedules (refer to this subsection to update subscriptions on subscription schedules)
- Transactions with charge types: Destination charges or Separate charges and transfers
Update existing subscriptions manually
- Review customer locations and make any required updates.
- Update products and prices with tax codes and tax behaviors.
- Update subscriptions to automatically calculate taxes on future invoices.
- Confirm that you’ve updated the subscriptions correctly.
Check customer locations
To correctly calculate tax, we need to know the customer’s tax location status. You can check it in the Dashboard or in exported data, or get the information using the API.
For more information on which customer address is valid, how they’re used, or how to handle errors, see Collect customer addresses.
Update products and prices
Your products and prices use the default tax behavior you assigned when activating Stripe Tax. If you’d prefer to update active products and prices to calculate tax independently, set a tax_code and tax_behavior. See the full list of available tax codes and the guide for setting up tax codes and tax behavior for more information. For more information about products and prices, including how to decide whether a price should be inclusive or exclusive, see the Tax Setup FAQ.
Update products
First, update any existing products with a tax_
. If you don’t explicitly define a tax_
on your product, Stripe Tax uses the preset product tax code from your settings.
Update prices
Next, update the tax behavior for your prices.
Common mistake
You can’t change tax_
after it’s been set to one of exclusive
or inclusive
. If you want to change the tax behavior of a price, you need to create a new price with the desired behavior, and archive the old price.
Update subscriptions
With your customers, products, and prices updated, you’re ready to update existing subscriptions.
Update subscriptions using Stripe Tax
You can automatically update your existing subscriptions through Stripe Tax.
Get the list of subscriptions that need to be updated from the subscriptions page in the Dashboard. To display only subscriptions that don’t have automatic tax enabled, click Filter, check Automatic tax, and select Disabled. Alternatively, you can export all filtered subscriptions to view them as a CSV file. To do this, click Export and select All as the Date range.
How you update the subscriptions depends on their state:
- If your subscriptions don’t have existing tax rates, you only need to enable automatic tax.
- If your subscriptions have existing tax rates (at either the subscription or line-item level), you need to clear out any existing tax rates and enable automatic tax. To avoid creating prorated items, you can schedule this update.
- If your subscriptions have subscriptions schedules, you need to remove instances of
automatic_
in the subscription schedule plans.tax[enabled]=false
Update subscriptions with no existing tax rates 
Update subscriptions with existing tax rates 
Update Subscriptions with subscription schedules 
If you need to collect tax, and any of your subscriptions include a subscription schedule that sets automatic_
, you must remove that parameter. To do so, update all phases of the subscription’s schedule by removing automatic_
and setting default_
.
When you update a subscription schedule, you need to pass in all current and future phases. To do this, verify the set parameters, then enable Stripe Tax in the subscription schedule.
To update the subscription schedule after you obtain it, remove the automatic_
parameter, and pass down the other phases and parameters:
Schedule the update
If you want to avoid creating a prorated item, you can schedule the update to occur at the start of the next cycle.
You can currently only schedule subscription updates with the API:
Confirm updates
To confirm that you’ve properly updated your subscriptions, retrieve the upcoming invoice of each subscription and inspect the results of its tax calculation.
You can retrieve the tax amounts from the tax and total_tax_amounts fields on the upcoming invoice, and from the per-line-item tax_amounts fields. The invoice has an automatic_tax field showing the status of the calculation, with one of three possible statuses:
Status | Description | Possible Action |
---|---|---|
complete | Stripe Tax has successfully assessed the taxes on the payment. | You can retrieve the tax amounts from the tax and total_ fields on the latest invoice, and from the per-line item tax_ fields. |
requires_ | Stripe Tax was unable to assess taxes because it didn’t have enough information to determine the customer’s location. | Collect more information from a customer (such as a full street address) and update the customer.address field. |
failed | Internal Stripe error. | Try the request again or contact Stripe support for additional assistance. |