Explainer

Shopify’s EU VAT report, and the five things the OSS return still needs

The built-in tax reports are a good start and a bad finish. Here is the gap, column by column.

Updated October 2026 · 5 min read

Shopify’s Analytics → Reports → Taxes report totals the tax collected by country and, in some regions, by region and rate. For US sales-tax filings it is close to what a merchant needs. For the EU One Stop Shop it falls short in five specific ways, each of which shows up as a rejected or corrected return.

1. Net sales are missing

The OSS return asks for the taxable amount and the VAT amount per country and rate. Shopify’s EU tax report gives the tax but not the net taxable base beside it, so you reconstruct it from line items, discounts and shipping. Shopify staff acknowledged the gap in community threads in 2025 and said improvements were planned; the consolidated tax CSV with net figures remains US-only as of this writing.

2. No split by Member State of dispatch

Part 2b of the Union-scheme return groups supplies by the Member State the goods left from. If you fulfil from a warehouse in another country (a 3PL in Poland or the Netherlands is common), those rows must be separated. Shopify’s report groups by destination only. The dispatch country is on the fulfillment’s location, which the report doesn’t use.

3. Domestic and B2B orders are mixed in

The report totals every order taxed for a country, including domestic sales (which belong on your domestic return) and B2B orders that were reverse-charged or tax-exempt. The OSS return wants cross-border B2C only.

4. Refunds are netted, not attributed

Shopify subtracts refunded tax in the period of the refund. OSS requires a refund of an earlier period’s order to be reported as a correction to that period, per country, in the corrections section. Netting it silently understates the current period and never corrects the old one.

5. Store currency, not euro

The report is in your store currency. The return is in euro at the ECB rate for the last day of the period. A GBP, SEK, PLN, CZK, DKK or USD store has to convert, and the rate date matters.

Bridging the gap

You can do it in a spreadsheet each quarter (our step-by-step guide shows how), or you can let an app do it. VATquarter reads orders and refunds through the Admin API, classifies each order with the reason, builds the dispatch × consumption × rate rows, lists corrections under their original periods, converts at the period-end ECB rate, and exports an XLSX with an audit sheet. It adds a €10,000 threshold tracker and flags rates that don’t match the destination country, which catches tax-settings mistakes before they reach a return.