Stripe Sales Tax Integration Guide (Beta)
- Last Updated
- Stripe Billing
We put together this integration guide for Stripe customers looking to better understand TaxJar’s integration for sales tax calculations, reporting, and filing.
You’ll learn how TaxJar provides tax calculations and syncs invoices for reporting / filing. For a primer on everything sales tax, read our Sales Tax 101 guides before getting started.
Table of Contents
- Linking Your Account
- Sales Tax Reporting
- Sales Tax Calculations
- Understanding Invoice’s Sales Tax
- Product Exemptions
- Customer Exemptions
Linking Your Account
Once you have a Stripe account and TaxJar account, log into your TaxJar account. Navigate to Account → Linked Accounts. You will see a button to initiate an integration between your TaxJar account and your Stripe account. Click the Stripe button.
You may be prompted to log into your Stripe account at this time. It will confirm if it’s ok to link your account to TaxJar.
After linking your Stripe account, TaxJar will prompt you if you want to activate sales tax calculations on your invoices.
Why does TaxJar need write-access to my Stripe account?
TaxJar can calculate taxes for your invoices on your behalf. For us to do that, we must be able to create new Tax Rates in your Stripe account, and update your invoices and invoice line items with those tax rates.
We do not alter your invoices in any other way, and you can always deactivate TaxJar's Tax calculation integration. Read on for more details on how TaxJar manages taxes for you in Stripe's system.
Sales Tax Reporting
After you link your Stripe account to TaxJar, we will be able to import all paid invoices, credit notes, and charges for you automatically. Immediately after linking, we will trigger an import to fetch recent transactions from Stripe, and we schedule regular imports to capture new and updated invoices, charges, and credit notes in your Stripe account.
Invoices have the most detail and include line items, tax rates, the customer, associated charges and credit notes.
A charge represents the movement of money, either collected from the buyer or refunded from the seller to the buyer. These charges can be associated with invoices to represent payments or refunds on that invoice. Charges may also stand alone, without being attached to an invoice.
Credit Notes issued before payment
Credit Notes that are created before the customer has paid the invoice are imported into TaxJar as discounts on orders. Since payment has not yet occurred, we interpret credit notes as discounts on the order.
Credit Notes issued after payment
Credit Notes that are created after the customer has paid the invoice are imported into TaxJar as refunds and associated with the order. Since payment has already occurred, we don’t update the original order and instead import it as a refund since this refund may occur in different tax periods.
Sales Tax Calculations
After you link your Stripe account to TaxJar, you will be asked if you want TaxJar to automatically calculate taxes for invoices.
Once you check this box and click “Save & Continue”, TaxJar will start listening to Stripe webhooks for certain events. Stripe will send data to TaxJar after invoices are are created and updated. TaxJar will react to these events and update the invoice with taxes immediately.
If you want to deactivate TaxJar’s integration for sales tax calculation, then you may edit the connection and uncheck this box. Imports will continue to happen normally. If you wish to completely disconnect the TaxJar integration, then “unlink” the account; unlinking will stop tax calculations and imports for Stripe.
Understanding Invoice’s Sales Tax
Now that your Stripe account is linked and activated for sales tax calculations, Stripe and TaxJar will work together when you are creating and updating invoices. Let’s walk through an invoice together.
First we will create an invoice. We will use Stripe’s user interface (UI) to create the new invoice. You may also create invoices programmatically through their API. For this guide, we will focus on Stripe’s UI.
Next we will attach a customer that is responsible for the new invoice. If you don’t already have the customer in your system, you may create one at the same screen. In this case, we already have a taxable customer.
Next we will add line items to the invoice.
In this moment, you won’t see the taxes update immediately, but rest assured that the tax calculations are happening behind the scenes. Before you finalize the invoice, refresh the page and you should see the taxes be filled in. Let’s refresh the page now to verify that all is working.
TaxJar has calculated all the taxes for your invoice, created 3 new Tax Rates in this scenario, and attached those new rates to the invoice item. At this point, you can submit your invoice for payment.
Do I need to refresh the page for every invoice?
Absolutely not. This is just an illustration to show you that the integration is doing it's job. When invoices are updated with new invoice items, changed quantities, and a number of other factors, Stripe will send these events to TaxJar and will wait on TaxJar to acknowledge before you can send the invoice to your customer for payment.
Let’s add another line item. This time, we’ll add a Gift Card, which should be tax exempt.
Now that we have two items, Stripe displays more information about how the taxes are affecting the invoice. In this scenario, the Gift Card product (we’ll look at that later in this guide) has a product tax code in its metadata which classifies it as tax exempt.
Since TaxJar knows about this product tax code, we know not to attach any tax rates to that line item. Stripe confirms this with the tooltips which specify that the taxes are only applied to the taxable line items. You will also notice that no tax rate sites on tax-exempt line items.
For this to work, your products must have product tax codes attached to them. Let’s navigate to our products, and click on a product that should be classified.
To classify this product, we are going to add metadata to the product. TaxJar will read this metadata and use it to inform how we calculate taxes on the invoice line items that include this product.
The key should equal product_tax_code, and the value should equal the code provided by TaxJar. In this case, it is 1411803A0001. The good news is that once the product tax codes are attached to the product, they will be applied to all invoices going forward. Be sure to double-check you’re adding the correct product tax codes.
Products are not the only entities that can be tax exempt; customers may also be tax exempt! TaxJar can handle this too! The easiest way to express this is from Stripe’s system when editing the customer’s record. Let’s navigate to a customer and mark them as tax exempt.
Once at the customer details, you can edit the customer information to classify them as tax exempt.
Find their “Tax status”, switch it to “Exempt”, and save the customer. You can now create a new invoice, attach it to the exempt customer, and verify that no taxes are attached to any line items.
If you operate within a country that has VAT (such as the EU countries), then you may want to consider Stripe’s tax status of “Reverse charge”. Depending on your situation, you may want to shift VAT reporting to the EU customer. TaxJar will treat these customers as “exempt” in your reports.
TaxJar provides the best experience possible for Stripe users, but there are some areas that are limited due to the available Stripe APIs.
Inclusive Tax Rates
TaxJar creates Tax Rates as tax exclusive, meaning that TaxJar will attach tax-exclusive rates to your invoice line items, which will increase the amount of money to be collected from the buyer to account for those taxes.
Imports support standalone payments; the limitation is only with sales tax calculations.
For sales tax calculations, standalone payments are not attached to invoices, and therefore lack context required to accurately calculate taxes for that payment. Also, Stripe does not allow attaching tax rates to standalone payments.
Custom Line Items on Credit Notes.
Custom line items on credits notes have some limitations. Imports of credit notes and their line items are not affected; this limitation is only about sales tax calculations.
When an invoice is paid, you may issue credits back to the customer for a variety of reasons. Usually, credits are interpreted as partial or full refunds on the original invoice.
For example, if you sell 2 Breakable Pots and the customer receives 1 as broken during shipment, you may choose to refund the one Breakable Pot. This may be issued as a credit note in Stripe’s system where you specify that a quantity of 1 Breakable Pot as credited. Stripe will do the right thing automatically and also refund the tax collected for that 1 Breakable Pot. This is a supported scenario; you do not need to do anything to account for refunded taxes in this scenario.
Another example, if you sell 2 Breakable Pots but the customer is not satisfied with the product, you might decide to refund $5 of the total sale (which does not correlate to any item prices). You can create a custom line item in the credit note, specify the amount as $5, and issue the credit. In this scenario, you must manually attach the appropriate taxes to the new custom line item. Remember, TaxJar attaches taxes to each line item and since you’re creating a new line item, now you must associate the appropriate taxes to that new line item.
Let’s walk through this together.
First we will create a new credit note. Notice that the taxes are applied to the line items.
In this scenario, we have 3 taxes applied: A state tax, a county tax, and a special district tax. Let’s remember these.
Uncheck the existing line items since we’re not crediting those in their entirety. Now we will create a custom line item.
With the new custom line item, click “Set item tax” next to it, and attach the same tax rates attached to the other line items.
Verify that the tax rates are applied. You can see the total tax rate.
Now you’re ready to issue a credit for the custom line item, which represents a partial refund. This will credit the appropriate amount of tax that was originally collected.