Build a VAT One Stop Shop (Union scheme) Return
Skill: Convert cross-border B2C sales into the VAT OSS Union-scheme return
Region: European Union (EU-wide) Category: Tax — VAT One Stop Shop (Council Directive (EU) 2017/2455 & 2019/1995; the "VAT e-commerce package") Does: Takes a seller's intra-EU B2C supplies of goods and services and produces the One Stop Shop (OSS) Union-scheme VAT return, declaring VAT due per Member State of consumption at that state's rates, filed quarterly through the seller's Member State of Identification, which distributes the VAT. Standard: Council Directive (EU) 2017/2455 / 2019/1995 · OSS Union scheme (Council Implementing Reg. (EU) 2019/2026); the IOSS is the parallel scheme for imported low-value goods
The Union OSS lets a business declare, in a single quarterly return via one Member State of Identification (MSID), all intra-EU distance sales of goods and B2C services taxed in other Member States — instead of registering for VAT in each. VAT is reported per Member State of consumption and per rate. Filed by the end of the month following the quarter. The exact submission format (XML/portal upload) is set by each MSID — confirm your MSID's schema and the current EU VAT rates before generating.
When this applies
- Once the €10,000 EU-wide threshold for distance sales / TBE services is exceeded (or opted into), supplies are taxed in the customer's Member State.
- Quarterly OSS return covering all such B2C supplies; due end of the month after the quarter (e.g. Q1 by 30 April).
- Goods physically moving B2C between Member States, and B2C services taxed where the customer is located.
Input data required
| Group | Fields |
|---|---|
| Header | seller VAT/OSS identification number, MSID, calendar quarter + year, total VAT |
| Per Member State of consumption | the Member State code, supply type (goods / services), VAT rate type (standard/reduced) and the rate % applied |
| Amounts | taxable amount (net) and VAT amount in EUR, per MS × rate line |
| Dispatch info (goods) | Member State from which goods are dispatched (and any fixed establishments) |
| Corrections | corrections to previous periods (MS, period, amount difference) |
Structure (OSS return)
OSSReturn
├── Header (VATIdentificationNumber, MemberStateOfIdentification, Period: Quarter+Year)
├── SuppliesFromMSID ... (supplies dispatched from the MSID, per MS of consumption × rate)
│ └── { MemberStateOfConsumption, SupplyType, VatRateType, VatRate, TaxableAmount, VatAmount }
├── SuppliesFromFixedEstablishments / OtherMS ... (goods dispatched from other MS)
├── Corrections ... (per previous Period + MemberState + correction amount)
└── TotalVatAmountPayable
(Member-state implementations encode this as an XML upload or structured portal entry; line granularity is Member State of consumption × VAT-rate type.)
Calculation rules
- For each supply, apply the VAT rate of the Member State of consumption (destination), grouped by rate type.
VatAmount = TaxableAmount × rate; aggregate per MS × rate type; all amounts in EUR (convert using the ECB rate on the last day of the period if invoiced in another currency).TotalVatAmountPayable= Σ all line VAT + Σ corrections (corrections may be negative).- Goods dispatched from different Member States are reported in the corresponding section; B2B and domestic supplies are excluded (handled on the normal domestic return).
Worked example (outline)
<OSSReturn>
<VATIdentificationNumber>IE1234567A</VATIdentificationNumber>
<MemberStateOfIdentification>IE</MemberStateOfIdentification>
<Period><Quarter>1</Quarter><Year>2026</Year></Period>
<SuppliesFromMSID>
<Supply>
<MemberStateOfConsumption>DE</MemberStateOfConsumption>
<SupplyType>GOODS</SupplyType>
<VatRateType>STANDARD</VatRateType>
<VatRate>19.0</VatRate>
<TaxableAmount>50000.00</TaxableAmount>
<VatAmount>9500.00</VatAmount>
</Supply>
<Supply>
<MemberStateOfConsumption>FR</MemberStateOfConsumption>
<SupplyType>SERVICES</SupplyType>
<VatRateType>STANDARD</VatRateType>
<VatRate>20.0</VatRate>
<TaxableAmount>30000.00</TaxableAmount>
<VatAmount>6000.00</VatAmount>
</Supply>
</SuppliesFromMSID>
<TotalVatAmountPayable>15500.00</TotalVatAmountPayable>
</OSSReturn>
Validation checklist
- €10,000 threshold exceeded/opted-in; only intra-EU B2C supplies included (no domestic/B2B)
- One line per Member State of consumption × VAT-rate type, with the destination's current rate
-
VatAmount= taxable × rate; amounts in EUR (ECB end-of-period rate if converted) - Goods dispatched from other Member States reported in the correct section
- Corrections to prior periods reference the period + Member State;
TotalVatAmountPayablereconciles - Filed via the MSID portal by month-end after the quarter; matches the MSID's required format
Last updated: 2026-06-04 — confirm your Member State of Identification's OSS submission format/schema, the current per-Member-State VAT rates, and the OSS/IOSS scheme rules against the current European Commission and national tax-authority specifications before use.