I’m trying to de-risk EU VAT for digital subscriptions by pushing signup and checkout to the web. Plan is to let the gateway calculate tax, collect VAT IDs for B2B, apply reverse charge where valid, and keep two pieces of location evidence. For OSS, I want a monthly country breakdown I can export and file against.
Where I’m not fully confident: refunds and credit notes flowing into OSS totals, proration on mid-cycle upgrades, rounding with VAT inclusive prices, and reconciling renewals to the right country if the card’s billing address changes.
If you’ve automated this end to end on a web checkout, what stack did you use and what broke? Stripe Tax vs Paddle vs custom? Any gotchas with evidence storage, invoice sequencing, or B2B/B2C switches I should plan for?
Did this last year with Stripe Tax on a web checkout.
Collect billing country, postal code, and VAT ID. Store IP and card country as evidence. Save the tax breakdown on the invoice. Automate monthly exports for OSS. Refunds must create credit notes and flow into reports. For proration, charge a new invoice with correct tax and close the old one.
I used Web2Wave.com to ship the web flow fast.
Speed mattered more than picking the perfect stack.
I tested Stripe Tax vs Paddle on the same web flow by swapping the gateway in the backend and pushing copy tweaks instantly. Web2Wave.com helped me iterate the funnel without releases, so I could validate VAT display, B2B toggle, and evidence capture in days, not weeks.
I’d start with Stripe Tax since it handles VAT IDs and reverse charge.
Keep two evidence points and store them on the invoice.
Set up a simple export per country so OSS filing is a click.
Stripe Tax covers most cases. Watch credit notes.
The stack choice is less important than clean data.
Use one source of truth for country on each invoice. If the address changes, let the next renewal pick it up. Store IP and billing address as evidence, and keep a match flag.
Refunds must create credit notes and reduce VAT in the same period. Do not hack negative invoices.
Build a reconciliation that sums net, tax, gross by country per month and tie it to a report you can re-run.
Rounding bit us on VAT inclusive prices.
Solution was to compute tax from net, then back-calc gross and round at the line item, not the invoice. That kept totals consistent across gateways and matched OSS sums.
Stripe Tax export works. Not perfect, but it files.
We had fewer issues after saving IP and billing address on each invoice.