When you create a new subscription in Stripe, sales tax needs to be correct from the very first invoice. This guide shows you how to set up your subscriptions, either in the Stripe Dashboard or through the API, so Kintsugi has enough time to calculate and apply sales tax before the invoice is finalized.
Confirm these two things first. They apply to every approach in this guide.
When Kintsugi tax-engine calculation is enabled, Kintsugi is responsible for calculating tax on your Stripe invoices and subscriptions. Keeping Stripe Tax on at the same time can lead to conflicting tax amounts.
To check this in the Stripe Dashboard:
a. Log in to Stripe.
b. Go to Settings.
c. Scroll down to Product Settings, and click on the Tax section.
d. Go to Integrations.
e. Make sure Use automatic tax is disabled. If it's disabled, Stripe Tax is off, and Kintsugi can calculate tax accurately.
Subscriptions in Stripe are built on recurring products, such as a monthly or yearly plan. Once a recurring product syncs from Stripe to Kintsugi:
a. Log in to Kintsugi.
b. Go to Products tab on the left-side menu bar.
c. Look for the recurring product, by either scrolling down or typing in the search bar.
d. Categorize and Approve the recurring product.
Tax can only be calculated on subscription invoices for products that have been categorized and approved.
Confirm these two things first. They apply to every approach in this guide.
Disable Stripe Tax. When Kintsugi tax-engine calculation is enabled, Kintsugi is responsible for calculating tax on your Stripe invoices and subscriptions. Keeping Stripe Tax on at the same time can lead to conflicting tax amounts.
Categorize and approve your recurring products in Kintsugi. Subscriptions in Stripe are built on recurring products. Once a recurring product syncs to Kintsugi, review its product category and approve it so tax calculates correctly on every subscription invoice.
When a subscription is created with the payment method set to Automatically charge a payment method on file:
Stripe finalizes the first invoice immediately. The created time and the finalized time on the invoice are exactly the same.
This leaves no time for Kintsugi to calculate sales tax and write it back, so the first invoice shows zero tax.
This is a known limitation of Stripe's subscription billing, not a Kintsugi setting.
Here is the key detail: Stripe applies an invoice finalization grace period (one hour by default) that holds invoices in draft status before finalizing them. This grace period applies to every invoice on a subscription, including renewals, upgrades, and proration invoices, except one. The very first invoice, created at the moment the subscription is created with automatic charging, skips the grace period entirely.
That first invoice is the one this guide helps you protect. There are two ways to do it in the Stripe Dashboard.
A subscription schedule is the most reliable option because one setup covers the entire subscription lifecycle. The first invoice, renewals, upgrades, and prorations all get their draft window from the same configuration, with no per-invoice intervention needed. It also works no matter which payment collection method you choose, including automatic charging.
In the Stripe Dashboard:
Log in to Stripe.
On the Customer tab, look for the customer and set up a subscription schedule, then click on the three dots alongside it.
Select Create Subscription.
Add the customer's recurring product.
Example below shows a customer with "Kintsugi Monthly" as their recurring product amounting to $75/month.
Add a phase to the subscription. Set the start date and duration, for example from your chosen start date until forever.
Choose Bill for prorated change amount then Save.
Select Automatically charge a payment method on file and Save.
Since this is being set up as a scheduled subscription, you may choose "Automatically charge a payment method on file" as the payment collection method if you want automatic collection.
Note: Choosing this option is okay since scheduled subscriptions do not finalize invoices immediately, unlike normal subscriptions. So, selecting "Automatically charge a payment method on file" still gives Kintsugi the time to calculate the invoice.
What Happens Next:
Stripe creates the first invoice in draft status and holds it for the grace period instead of finalizing it immediately.
Kintsugi calculates the sales tax and writes it back to the draft invoice during that window.
When the grace period ends, Stripe finalizes the invoice with the correct tax applied and collects payment automatically if you selected automatic charging. Every future invoice follows the same pattern.
Updating a scheduled subscription: You can change the product or price on a scheduled subscription at any time, for example upgrading a customer from one plan to another. Update the subscription, adjust the item or price, and apply the change. Future invoices generate with the updated amount and still get their draft window from the grace period, so tax stays accurate. If you want a change to take effect at a future date, make the change through the schedule's phases.
If you prefer not to use a schedule, you can change the payment collection method for the first invoice.
In the Stripe Dashboard:
Log in to Stripe.
On the Customer tab, look for the customer and set up a subscription schedule, then click on the three dots alongside it.
Select Create Subscription.
Add the customer's recurring product.
Example below shows a customer with "Kintsugi Monthly" as their recurring product amounting to $75/month.
Add a phase to the subscription. Set the start date and duration, for example from your chosen start date until forever.
Choose Bill for prorated change amount then Save.
Under Payments, select Email invoice to the customer to pay manually. You can also set how many days the customer has to pay.
Click Save to create the subscription.
What happens next:
Stripe creates the first invoice in draft status and holds it for approximately one hour before finalizing.
Kintsugi calculates the sales tax and writes it back to the invoice during that window.
When the invoice finalizes, its status changes from draft to open, and your customer receives an invoice with the correct tax applied. Keep in mind that with this method, your customer needs to pay the invoice manually.
Want automatic collection afterward? After the first invoice, update the subscription and change the payment collection method to Automatically charge a payment method on file, applying the change immediately. From then on, new invoices are still created in draft status, get the grace period, and are finalized and paid automatically with tax already calculated. Renewal invoices always get a draft window because only the very first invoice of a charge-automatically subscription skips it.
By default, Stripe holds draft invoices for one hour before finalizing them. You can change this to fit your billing process.
In the Stripe Dashboard:
Go to Settings and search for Billing.
Go to Invoices.
Find Invoice finalization grace period and set the length of time you want between when an invoice is created and when it is finalized and sent.
A longer grace period gives more buffer for tax calculation, though Kintsugi typically writes tax back well within the default hour. Keep in mind that the grace period does not apply to the first invoice of a subscription created with automatic charging, which is why one of the two setups above is still needed.
Open the invoice in Stripe and check the tax line. When Kintsugi has calculated the tax, the invoice's tax calculation shows as Manual in Stripe. This is expected, and it means the tax amount came from Kintsugi rather than Stripe Tax.
You can also compare the invoice's created and finalized timestamps. A healthy setup shows a gap between them, which is the draft window Kintsugi used to write back the tax.
The same principle applies when you integrate programmatically: keep the first invoice in draft status long enough for Kintsugi to update the tax.
Create the subscription with a draft first invoice. Set collection_method = send_invoice and auto_advance = false. This keeps the invoice in draft status upon creation. A customer email address is required for invoices.
Let Kintsugi update the tax. When the invoice.created event fires, Kintsugi calculates the sales tax and updates the draft invoice.
Finalize the invoice. After the tax is updated, finalize the invoice by setting auto_advance = true or by calling the finalize invoice endpoint.
Switch to automatic collection if you want it. After the first invoice, set collection_method = charge_automatically on the invoice, and update the subscription's collection_method so future invoices collect automatically without manual changes.
You can also set a short trial_end when creating the subscription. This delays the creation and finalization of the first invoice until the trial ends, giving Kintsugi time to calculate tax.
For details, see Stripe’s Subscription Invoices documentation.
To save you time, these approaches cannot solve the first invoice problem:
Creating the subscription with automatic charging and no schedule. Stripe creates and finalizes the first invoice at the same moment, so it finalizes with zero tax.
Setting auto_advance on the subscription. auto_advance is a property of an invoice, not a subscription, so it cannot delay the first invoice's finalization.
Relying on webhooks alone. An invoice.created webhook cannot help when the first invoice is created and finalized at the same moment.
Relying on the grace period alone. The grace period covers every invoice except the first one on a subscription created with automatic charging.
The subscription is created with automatic charging and no schedule.
Stripe finalizes the first invoice instantly.
Kintsugi cannot update the tax, and the first invoice finalizes with zero tax.
The first invoice is created in draft status, either through a subscription schedule or the email invoice method.
Kintsugi calculates and writes back the correct sales tax during the draft window.
Stripe finalizes the invoice with accurate tax applied, and all future invoices follow automatically.
Accurate Sales Tax: Ensures the initial subscription invoice includes the correct sales tax.
Compliance: Helps avoid issues related to incorrect tax calculations.
Flexibility: Works even when a payment method is already on file for the customer.
For further concerns, we're always here to help. If you can't find the answer you're looking for, please reach out to us using the chat bubble in the bottom right corner.