Guide

How to prepare your OSS return from Shopify orders

What the return asks for, where each number comes from in Shopify, and the four places merchants get it wrong.

Updated October 2026 · 9 min read

Since 1 July 2021, an EU business selling goods to consumers in other Member States above €10,000 a year charges VAT at the customer’s country rate and reports it all in one quarterly return through the One Stop Shop (OSS). Shopify calculates and charges that VAT at checkout. It does not produce the return. This guide walks through building it by hand, so you understand what an app like VATquarter automates.

What the Union-scheme return contains

The return (Implementing Regulation 2020/194, Annex III) has three parts:

  1. Supplies from your Member State of identification: for each Member State of consumption, the VAT rate type, the rate, the taxable amount and the VAT amount.
  2. Supplies of goods dispatched from other Member States: the same rows, grouped by the Member State the goods left from (a Polish 3PL warehouse, say).
  3. Corrections to previous periods: per Member State of consumption and period, the VAT amount by which an earlier return changes.

Everything is in euro. The return is due, and the VAT paid, by the end of the month following the quarter: 30 April, 31 July, 31 October, 31 January.

Step 1 — Export the period’s orders

Orders → Export → “Orders by date”, choosing the quarter, CSV for Excel. You get one row per line item. The columns that matter: Paid at (or Created at), Financial Status, Shipping Country, Shipping Province, Shipping Zip, Lineitem price, Lineitem quantity, Lineitem discount, Tax 1 Name, Tax 1 Value (up to Tax 5), Shipping, Taxes, Refunded Amount, Currency.

The export only includes orders in the date range. Refunds issued this quarter for orders from earlier quarters are not in it, and they belong in this return as corrections. Export the previous quarters too and filter by refund date.

Step 2 — Decide which orders are in scope

Keep an order if all of these are true:

Watch the territories: Monaco counts as France; Northern Ireland (BT postcodes) counts as EU for goods, reported under XI; the Canary Islands, Ceuta, Melilla and Åland are outside the EU VAT area.

Step 3 — Compute the taxable amount per line

If your prices include tax (most EU stores), the taxable amount of a line is the line total after all discounts minus the tax on that line. If prices exclude tax, it is the discounted line total itself. Shipping is a taxable supply too, at the rate Shopify applied to it. The rate comes from the tax line (Tax 1 Name usually reads “FR TVA 20%”).

Group by shipping country and rate, sum taxable amounts and tax. Those are your rows.

Step 4 — Handle refunds

A refund in the same quarter simply reduces that quarter’s figures for the country and rate. A refund of an order from an earlier quarter must not be netted; it is a correction to that earlier period, entered in part 3 of this return with the period it belongs to. Corrections can be made within three years.

Step 5 — Convert to euro

If your store currency is not the euro, convert using the European Central Bank reference rate for the last day of the quarter, or the next day a rate was published if that day was a weekend or holiday (Article 369(2) of the VAT Directive). Convert the totals, not each line, to avoid rounding drift.

Step 6 — Check the rates before you file

Compare each charged rate with the destination country’s standard and reduced rates. A 19% line to France, or a 20% line to the Netherlands, means a tax override or a stale rate in Settings → Taxes. Fix the setting; for past orders, take advice on whether to correct.

The four common mistakes

Doing it in one click

VATquarter applies exactly these steps to your Shopify orders through the Admin API: it classifies each order with the reason, builds the country × rate × dispatch rows, lists corrections, converts at the period-end ECB rate, flags rates that don’t match, and exports an XLSX with an audit sheet. It doesn’t file for you; that part stays yours.