The first five minutes
There is no setup. VAT Guard asks Shopify for one permission, read_orders, and reads the orders that are already in the store. By the time the dashboard finishes loading, the quarter is already counted.
So this is not an installation guide. It is a walk through the screen you are looking at, top to bottom, and what each number is actually made of.
The video above is 90 seconds, and it is the real dashboard rather than a mockup. It was recorded before the order list in step 4 was added, so that button is not in it.
1. Four tiles, and each of them can say "I don't know"
Across the top are four numbers. EU taxable sales for the quarter, VAT collected for the quarter, where the store stands against the €10,000 OSS threshold for the year, and how many countries have a VAT gap.
The threshold tile is the one to read carefully. When it can answer, it gives a percentage and one of three lines:
- Below the €10,000 union threshold.
- Approaching the €10,000 threshold. That starts at 70%, and it is the time to prepare an OSS registration.
- Threshold crossed. OSS registration required.
When it cannot answer, it shows a dash and says why. The store's country could not be read, so domestic sales cannot be taken out of the total. The store's totals are not in euro, and the app will not guess an exchange rate. The store is established outside the EU, where the union threshold does not exist. Or the orders themselves could not be read.
That last case changes the whole screen. All four tiles show a dash, and the table and the gap list say the figures are not shown. A dash means "not known". It is never a stand-in for zero.
2. The country table is the OSS return, one row per country
Below the tiles: country, orders, taxable base, VAT collected, standard rate. One row per EU destination country for the quarter you are looking at.
That is the shape an OSS return asks for. Each row is built from three fields on every order: the shipping country, the current subtotal, and the current tax total. Those are summed per country. Cancelled and unfulfilled orders are included, because they were still sales in the period.
The per-country table is a Standard feature. On the Free plan the tiles are there and the table is locked. In April, July and October the lock names the quarter that just closed and the date its OSS return is due.
3. Pick a quarter before you download anything
Above the table there are two menus. A period menu offers each quarter of the current calendar year so far, and a country menu narrows everything to one country. All three downloads follow what those menus are showing. Change the quarter, forget to look, and you export the quarter you were on rather than the one you meant.
4. Three files from one set of orders
Download OSS CSV gives your accountant one row per country. Download OSS PDF gives the same quarter as a document. The numbers come from one computation, and a test fails the build if the two files ever disagree.
Download order list (CSV) is the third, added on 4 October 2026. It is one row per EU order: order number, date, country, net, tax. It exists for the moment your accountant points at a country total and asks which orders are in it.
All three are Standard features, and all three are named after what they contain: oss-2026-Q3.csv, oss-2026-Q3-DE.pdf, orders-2026-Q3-DE.csv.
5. Open the order list and read the first date
Do this once before you trust a quarter. It takes a minute.
VAT Guard asks Shopify for the year's orders. Shopify's developer documentation says the permission it holds covers "orders created within the last 60 days", and the wider one is granted separately. VAT Guard does not have the wider one. A quarter that began more than 60 days ago can therefore come back short. The dashboard shows a red notice with the date the read starts from. It can't tell you whether you had orders before that date.
The order list shows you. Sort it by date, then find the first order of the quarter in your Shopify admin and compare. If you are looking at Q3 and both start on the same July order, the quarter is whole. If the file starts in August, July is missing, and the totals above are too low. Don't file from them.
There is a second, rarer way to come up short, and this one the app does flag. A store with more than 25,000 orders in the year hits a read cap. The filename gets -INCOMPLETE and the file carries a line saying how far back it reached.
6. The gap findings, last
On Pro there is a list underneath. It shows countries where the VAT actually collected works out lower than that country's standard rate, and roughly how much is short. A row reads like "Germany: collected 16.2% but the standard rate is 19% — about €340 short".
A gap is not proof of an error. Reduced rates, zero-rated goods and B2B reverse-charge orders all produce one legitimately. It is a list of things to look at before filing, which is exactly when you want it.
What it does not do
It never files and never pays. It has no write access to anything in the store, so it cannot change an order, a product, a price or a tax setting. It does not ask for last year's orders, so last year's quarters are not in there. The standard rates it shows are indicative, and your accountant confirms the numbers before they are submitted.
If something looks wrong
Write to theagentgarage@gmail.com. Include the store's .myshopify.com domain, the quarter you were looking at, and the country whose number looks off. If you have the order list, add the earliest date in it. That one date answers the first question I would ask.
VAT Guard is a Shopify app that turns a store's own orders into an OSS return, quarter by country, for merchants selling across the EU.