Litestore · Operator guide

Taxes

Learn how to configure automatic tax calculation per market and check your tax provider's health.

Litestore computes tax itself and charges it as its own line item.

The amount is therefore recorded on the order, and refunded with it. Tax is a number on your order, not a number in somebody else's dashboard that you reconcile against later.

Two engines are wired: a flat rate you set per market, and Stripe Tax for real jurisdiction tax.

Settings → Taxes reports whether your configuration is strong enough to charge confidently.

Litestore owns the number

Stripe's own automatic tax is switched off.

Even under Stripe Tax, the computed amount is read back and charged as a Litestore line item.

Stripe Tax asked for the destination's real tax

amount read back into Litestore

charged as a Litestore line item on the order

The reason is uniformity. A tax-free store, a Stripe Tax store and a non-Stripe payment flow all produce an order that carries its tax the same way — so refunds, reporting and the order record behave identically regardless of how the figure was arrived at.

Two engines

The flat engine applies the market's own rate. You set the number; it is used.

Stripe Tax asks Stripe for the real tax at the buyer's destination. EU VAT and US nexus rules stay current without you maintaining rate tables — which is the whole reason to use it, because those tables are not a thing a store owner can keep accurate by hand.

Stripe Tax has two prerequisites, both in your Stripe dashboard:

  1. Tax switched on
  2. An origin address set

Set per market

Three things are properties of a market, set under Markets rather than on this page:

  • The rate
  • The behavior — tax included in the displayed price, or added on top
  • Which engine to use

Tax is a fact about where you are selling, so it lives with the market that describes where you are selling.

One consequence follows directly: an order with no market attached collects no tax. There is nowhere for it to read a rate from.

The master switch

Tax calculation is gated by a single setting, shown on the taxes page.

While it is off, orders collect zero tax — even where markets have rates configured.

That is worth reading twice. A market with a correct rate, a correct country and Stripe Tax connected still charges nothing while the master switch is off. The rates are not wrong; they are not being consulted.

The health page

Settings → Taxes runs a set of checks and shows each one as either green or a link to the page that fixes it.

It checks:

  1. The master switch
  2. For each active market, its selling country
  3. For each active market, its chosen engine
  4. Where the flat rate is what charges, whether that rate is still 0%

The fourth check is the one that catches the quiet failure. A market created and never finished has a 0% rate, which is a perfectly valid configuration and indistinguishable from a deliberate tax-free market — except that this check asks about it out loud.

Checkout still completes when Stripe Tax is unreachable

A missing destination country, a non-positive taxable amount, any Stripe error, or a market's unwired engine name falls back to the market's flat rate, so the order still carries a complete, charged tax amount. The taxes health page is where you find out.

What is not wired

Two things this does not do:

  • Report tax back to Stripe for filing
  • Reverse tax at Stripe on a refund

Litestore prorates the recorded tax on a refund itself. The refunded order is correct; it is Stripe's own tax records that are not being kept in step.

Getting tax right

Start with the master switch. Nothing below it matters while it is off.

Then work the health page market by market, because that is the granularity tax actually has. A store selling into three countries has three separate answers, not one.

Prefer Stripe Tax where you have real jurisdictional exposure, and set the flat rate anyway — the fallback in the callout above means the flat rate is what charges when Stripe cannot be reached, so a 0% flat rate behind an active Stripe Tax market is a silent zero waiting to happen.

Check the health page after you change a market, not after a customer complains — the failure mode here is not an error, it is an order that charged nothing and looked fine.

On this page