If Stripe calculates your tax, set the customer's tax status to exempt in Stripe, then read the next invoice. Stripe documents this step. If CereTax calculates your tax, mark the whole customer exempt, or add exempt metadata in the Product Pricing section to exempt specific line items, then read the next invoice. Before you change a status on either path, decide where to keep the exemption certificate. Stripe Tax does not validate exemption certificates, and you are responsible for any duty to validate.
This page is for finance and billing operations leads who invoice through Stripe Billing. Read "Decide Where to Keep the Certificate" first, and settle it before you change a status on either path. Then use "If Stripe Calculates Your Tax" if Stripe calculates your tax, or "If CereTax Calculates Your Tax" if CereTax calculates it. These steps do not cover running CereTax and Stripe Tax on the same account, who qualifies for an exemption, or what a certificate must contain.
Stripe states that Stripe Tax does not validate exemption documents, and that you are responsible for determining and fulfilling any obligation to validate the customer's exempt status and collect the required documents. That duty is yours, so decide who reviews the certificate.
SmartExempt is our exemption certificate management product, and it connects to Stripe.
Before you change a status, decide who approves an exemption, where the certificate record is kept, and how that record names the Stripe customer it covers.
We recommend keeping the exemption status and the certificate record under one owner, and changing the status in Stripe only after the certificate is on file.
On the Stripe Customer object, a customer's exemption status is the tax_exempt field. It takes three values: none, exempt, and reverse. The default is none.
Set the status to exempt, and supply that customer ID when you create a subscription, invoice, or Checkout Session, as Stripe documents. You can set the status in the Dashboard, or use the API (application programming interface) to set Customer.tax_exempt to exempt.
On a subscription, Stripe says you can update a customer's details until an invoice is finalized, and that any changes apply to the next billing period, when a new invoice is generated.
Stripe documents reverse for a customer who is liable for the tax, as under the European Union's value-added tax (VAT) reverse-charge procedure. For that status, Stripe says the invoice and receipt PDF (Portable Document Format) files include the text "Reverse charge."
Check the invoice. Open the next invoice. With Stripe's manual tax rates, a customer set to exempt or reverse has no tax calculated on the invoice. Stripe Tax lists customer_exempt as the taxability_reason on the invoice line for exempt customers. Stripe's Customers page gives no rule for an invoice that is already final.
Make sure your Stripe account sends us these webhook events, which we list as required: customer.created, customer.updated, invoice.created, invoice.finalized, and invoice.updated.
Exempt a whole customer. Set the customer's tax status to exempt in Stripe. Our Stripe integration page calls this setting "Tax Status," with the value "Exempt." For an exempt customer, our connector sends the product/service (PS) code 10010200 on every line item to mark the transaction exempt, and adds tax details to the invoice.
Exempt specific line items. To exempt specific line items, set the metadata key IsTaxExempted to the string true in the Product Pricing section in Stripe. For a line-level exemption, our connector sends the PS code 10010200 on that line item. Stripe says you don't need to create a new price for each purchase, and a product sold at one price needs only one price. Before you set the key, check which invoices and customers use that price.
Check the invoice. When Stripe creates or finalizes an invoice, a webhook sends it to us, and the calculated tax attaches back to the invoice. Open the next invoice after you make the change and look at three places:
To manage exemption certificates, see SmartExempt, which connects to Stripe.