Breaking Down the OSS Declaration: A Step-by-Step for E-commerce

L'équipe PrestaInsights

Ines makes artisan soy candles in Lyon and ships them through her PrestaShop store to customers in Belgium, Germany, Spain, and Italy. It's the last week of July, her first Union OSS return is due for Q2 by the 31st, and she's staring at a blank form on the French tax portal with four countries' worth of orders sitting in an unsorted PrestaShop export. Nothing in the interface tells her how to get from "list of orders" to "numbers in these boxes." That gap — between raw sales data and a filed declaration — is what trips up almost every merchant's first OSS filing, and it's entirely mechanical once you've done it once.

What the OSS portal actually asks for

Every Union OSS return, regardless of which member state's portal you're filing through, asks for the same core structure: one block of figures per member state of consumption — meaning per destination country where you had customers that quarter, not per product or per order. Within each country block, you need:

  • The applicable VAT rate(s) used (standard, reduced, or super-reduced, if more than one applied)
  • The taxable amount (net sales value) for that rate in that country
  • The VAT amount due for that rate in that country

If you sold at two different VAT rates into the same country — say, a standard-rated item and a reduced-rated item both went to German customers — that's two lines for Germany, not one. Multiply that across five or six destination countries and it's easy to see why merchants who try to fill the form in live, order by order, run out of patience fast. The form expects pre-aggregated totals, not a transaction log.

Table: what each country line needs

FieldSource in your storeNotes
Member state of consumptionCustomer delivery/billing countryDetermines which country's rate applies
VAT rate appliedTax rules group used at checkoutMust match the destination country's actual rate, not your home rate
Taxable amount (net)Order subtotal excluding VATAggregated across all orders at that rate, that country, that quarter
VAT amount dueTaxable amount × rateShould reconcile to VAT actually collected at checkout

Aggregating sales by destination country

This is the actual work of filing, and it's a spreadsheet exercise more than a tax exercise. Export your quarter's orders, then group by two dimensions: destination country and VAT rate applied. Most PrestaShop setups can export orders with country and tax rate fields directly, or through an accounting module; if yours can't, a pivot table on a raw order export gets you there in a few minutes.

Worked example: aggregating Q2 sales across four countries

Ines's Q2 candle sales, illustrative figures, all at each country's standard VAT rate:

DestinationOrdersNet salesVAT rateVAT due
Belgium34€2,14021%€449.40
Germany61€3,88019%€737.20
Spain22€1,51021%€317.10
Italy18€1,26022%€277.20
Total135€8,790€1,780.90

Four lines on the return, one per country, each showing the net sales and VAT figure from that row. The total VAT due, €1,780.90 in this example, is what gets paid alongside the return. If Ines had sold some items at a reduced VAT rate in any of these countries — food, certain print items, and similar categories often qualify — those would need their own separate line within that country's block rather than being blended into the standard-rate figure.

Step-by-step: completing a Union OSS return

  1. Close out the quarter's order data — export everything with a delivery date in the reporting period, including cancelled-then-refunded orders you'll need to net out separately.
  2. Group by destination country and VAT rate, producing one subtotal row per unique combination, as in the table above.
  3. Cross-check each country's rate against the current published rate for that country — rates do change, and using last year's Belgian rate on this year's return is a common, avoidable error.
  4. Enter each country block into the portal, taxable amount and VAT amount, matching your aggregation exactly.
  5. Net out returns and refunds processed during the quarter against the relevant country's figures before submitting — see our detailed walkthrough on correcting VAT errors and handling returns in OSS if a refund relates to a prior quarter rather than this one.
  6. Review the total VAT due against what your store actually collected at checkout for that period — a mismatch here is the single most common sign something's misconfigured upstream, which we cover in why tax rules aren't the same as tax reporting.
  7. Submit and pay by the deadline — end of the month following the quarter close — in a single payment covering all countries; the portal handles redistribution to each member state.

Record-keeping and the 10-year rule

Filing the return isn't the end of the obligation. OSS records need to be retained for 10 years and produced electronically if a tax authority — yours or a destination country's, via administrative cooperation — asks for them. That's a materially longer window than most merchants keep general business records, and it's easy to lose this data by accident: a PrestaShop upgrade, a module change, an accounting system migration, a hosting provider switch. None of those events are supposed to delete VAT evidence, but "supposed to" isn't the same as "has a safeguard in place."

What to store per transaction

  • [ ] Destination member state and delivery/billing address evidence
  • [ ] Date of supply (tax point) and order reference
  • [ ] Goods description sufficient to justify the VAT rate applied
  • [ ] Net amount, VAT rate, and VAT amount charged
  • [ ] Payment date and amount received
  • [ ] Evidence used to establish customer location (at least two independent indicators)
  • [ ] The filed OSS return itself and its submission confirmation, per quarter

Store this outside your live storefront database if you can — a separate export archived quarterly is far more durable than relying on order history staying queryable in your production PrestaShop install a decade from now. If you ever need to double-check current published rates while aggregating, the European Commission maintains a VAT rates database covering every member state.

Common filing mistakes that trigger follow-up requests

A few patterns show up repeatedly once merchants start getting inquiry letters:

  • Rate drift — a country changes its VAT rate and the store's tax rules group isn't updated, so every order for months uses a now-outdated rate.
  • Currency conversion inconsistency — figures aggregated in one currency, converted at inconsistent exchange rates across the quarter instead of a single documented method.
  • Refunds dropped entirely — a refunded order still counted in the taxable amount because nobody flagged it before the aggregation was pulled.
  • Double-counting on partial shipments — split orders counted twice in the export because the pivot grouped by order line instead of order.

Each of these is a spreadsheet-level error, not a legal misunderstanding — which is good news, because it means a second pair of eyes reviewing the aggregation before submission catches most of them.

Rehearse the aggregation before your next deadline

Before your next filing deadline, export last quarter's orders and run the country-and-rate aggregation described above even if you've already filed — treat it as a rehearsal. If the numbers don't match what you actually submitted, you've just found a reconciliation gap while it's still cheap to fix. For the bigger picture on why this filing step exists separately from checkout tax calculation at all, our guide to being EU OSS audit-ready in 2026 covers the threshold and evidence rules this declaration process depends on.

Frequently asked questions

Do I need a separate line for every order on the OSS return?

No — the portal expects aggregated totals per destination country and VAT rate, not a line per order. You aggregate your quarter's transactions into subtotals first, using an export and a pivot table or accounting module, and only enter the resulting country-level totals into the actual filing form.

What if I sold at more than one VAT rate in the same country?

Each rate needs its own line within that country's block on the return. A country where you sold both standard-rated and reduced-rated goods will have two separate rows, each with its own net taxable amount and VAT figure, rather than one blended total covering both rates.

Can I file OSS returns in a currency other than euros?

Most Union OSS returns are filed in euros regardless of the currency your store transacts in, so non-euro sales need to be converted using a consistent, documented method — ideally the European Central Bank's published rate for the last day of the reporting period.

What happens if my aggregated total doesn't match what I collected at checkout?

That mismatch usually points to a rate configuration issue, a missed refund, or a currency conversion inconsistency. It's worth resolving before submission rather than after, since a mismatch discovered by a tax authority is harder to explain than one you catch yourself.

How long do I need to keep the underlying transaction data?

Ten years, in an electronically accessible format, covering the destination country, tax point, rate, amounts, and customer-location evidence for every transaction included in every return you've filed — regardless of what your normal domestic bookkeeping retention period happens to be.

Does the OSS portal calculate the VAT amounts for me?

No — you submit pre-calculated aggregated figures. The portal records, validates, and processes your return once submitted, but it doesn't pull raw order data from your store or compute totals on your behalf, so the aggregation step has to happen before you log in.

Compliance glossary

One-Stop Shop (OSS): The EU scheme allowing a single quarterly return, filed with your home tax authority, to cover VAT owed on cross-border B2C sales across multiple EU member states.

Tax Point: The date a supply is treated as taking place for VAT purposes, used to assign a transaction to the correct quarterly reporting period.

Union vs Non-Union scheme: The Union scheme applies to EU-established sellers of goods and certain services; the Non-Union scheme applies to non-EU businesses supplying services to EU consumers without an EU establishment.

Destination-based VAT: Charging VAT at the customer's country rate rather than the seller's, which is what each country block on the OSS return reflects.

Distance Selling Threshold (€10,000): The EU-wide annual combined threshold that determines whether cross-border B2C sales need destination-country VAT and OSS reporting at all.

Related reading

Rédigé par

L'équipe PrestaInsights

Chez PrestaInsights, nous sommes spécialisés dans tout ce qui concerne PrestaShop, de l'hébergement et l'optimisation des performances au développement de modules et aux tutoriels approfondis. Notre objectif est d'aider les commerçants, les développeurs et les agences à réussir grâce à des guides à jour, des aperçus pratiques et des meilleures pratiques éprouvées. Que vous débutiez ou que vous développiez une boutique à fort trafic, nous sommes là pour vous guider.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués d'une *