Tax
Tax is off by default and calculated by Stripe Tax when it is on. Beluga does no tax arithmetic of its own, holds no rate tables, and files nothing on anyoneâs behalf.
Why the default is off, and why that is dangerous
Section titled âWhy the default is off, and why that is dangerousâUnder-collecting is silent. Every order goes through, the buyer pays, and the merchant owes the difference with nothing anywhere to say so. So the admin Overview says âthis store is not collecting taxâ while it is off, and Settings â Tax says the following before the switch.
Three things that have to be true in Stripe
Section titled âThree things that have to be true in StripeâNone of them can be done from Beluga.
- Stripe Tax is activated on the account. It is a paid add-on, billed per transaction.
- Tax registrations are recorded in the dashboard, one for each place the merchant is obliged to collect. Deciding where that is remains the merchantâs job; Stripe collects nothing for a jurisdiction with no registration.
- Products carry tax codes. Every product uses the store default,
txcd_99999999(general tangible goods), unless it sets its own. Books, food, digital goods and clothing are taxed differently in many places.
Inclusive or exclusive
Section titled âInclusive or exclusiveâPrices are quoted inclusive or exclusive, per store. EU and UK shops normally quote inclusive prices; US shops quote exclusive and add tax at checkout. Shipping rates carry their own behaviour. With inclusive pricing the tax line reads âIncludes taxâ rather than adding a row, because an additive-looking row on a total that already contains the tax reads as a second charge.
tax_behavior is immutable on a Stripe Price, like the amount. Changing how a
store quotes prices reaches Stripe only when each product is published again,
which mints new Prices and archives the old ones. Nothing republishes itself. The
Overview lists the products that are out of date and links to each one.
What gets recorded
Section titled âWhat gets recordedâThe webhook reads total_details.amount_tax off the completed session into
taxCents on the order, which the confirmation page, the admin, the email, the
CSV export and the order.paid webhook all carry.