Guide
File Your German OSS Return Yourself: the Quarterly Workflow for Shopify Merchants
Updated 2026-07-03
Many Shopify merchants never file their own OSS return: they pay an agency or an ongoing tax tool subscription to do it. In many cases that is not necessary. Once the numbers are in order, the quarterly return is a predictable appointment of under an hour. This guide is for English-speaking founders and teams running a German-registered Shopify store, so the filing happens in Germany even if German is not your first language. It walks through the complete workflow in six steps, is honest about what stays manual even with software, and says clearly when doing it yourself is the wrong decision.
The starting point assumed here: you ship from Germany to consumers in other EU countries and are registered for the One Stop Shop with the Bundeszentralamt für Steuern (BZSt, Germany’s federal central tax office). If OSS is still new territory for you, meaning the EUR 10,000 threshold, the destination-country principle and the registration itself, start with the basics guide to EU OSS VAT for Shopify merchants.
Step 1: Know the deadline
The OSS return is due quarterly, each time by the end of the month following the end of the quarter:
- Q1 (January to March): by April 30
- Q2 (April to June): by July 31
- Q3 (July to September): by October 31
- Q4 (October to December): by January 31 of the following year
Two quirks catch merchants out again and again:
- The deadline does not shift. If the due date falls on a weekend or public holiday, that exact calendar day still applies. This is different from many German tax deadlines and is explicitly stated on the EU Commission’s official OSS page.
- A Nullmeldung (nil return) is mandatory. Even in a quarter with no OSS sales at all, you must file a return, just with zero euros in it.
Put the four dates in your calendar as recurring entries, with a reminder one to two weeks ahead. For the second quarter of 2026 that has just ended, that means: file by July 31, 2026.
Step 2: Pull the quarter’s figures
The return asks for a simple structure: one net amount per destination country and VAT rate, plus the VAT due on it. What sounds simple has four pitfalls in practice:
- The delivery address counts, not the billing address.
- Only B2C distance sales belong in the return. B2B deliveries to customers with a VAT ID are reported through the Zusammenfassende Meldung (Germany’s EC Sales List), not through the OSS.
- Refunds and credit notes issued in the quarter reduce the amounts and must be factored in.
- The destination country’s VAT rate must already have been applied correctly at the time of the order. The return exposes mistakes at best; it does not repair them.
The manual route runs through Shopify exports: export orders and refunds, filter by shipping country, sort out the B2B orders, and sum per country and rate. It works, but it costs an afternoon every quarter and is prone to transposed digits and forgotten credit notes.
Faktwise automates exactly this step: the app continuously assigns each order to the right tax treatment and provides the quarterly totals per country and rate as a ready-made report, together with an import file for the portal. How the report is structured and how the download works is covered in the guide to the OSS report and BOP CSV export.
Step 3: Check plausibility before you go into the portal
Only numbers you have checked belong in the portal. Three quick checks are usually enough:
- Do the rows compute? VAT amount equals net times rate, for every row. Deviations point to mixed rates or rounding errors.
- Do the countries fit? Do all the countries you actually shipped to appear, and none you never deliver to? A conspicuously high or low country total is a signal to look at the underlying orders.
- Does the magnitude fit? Compare the quarter’s total with the previous quarter. A jump with no identifiable reason is suspicious.
For the arithmetic check there is help: our free OSS check checks your finished BOP import file before upload for format errors, country codes, deviating standard rates, and exactly this net-times-rate calculation. Checks 2 and 3 remain a quick look from you, but five minutes of checking spares you a correction filing later.
Step 4: Into the BZSt-Online-Portal, import or type
The return is filed in the BZSt-Online-Portal (BOP, the BZSt’s online filing portal). There you open the OSS-EU return for the quarter that just ended and have two routes:
- Type it in: one row per country and rate with the net and VAT amounts. Perfectly doable with two or three countries, tedious and error-prone with many.
- Import it: the portal accepts a CSV file in its official import format. Faktwise creates this BOP CSV directly from the quarterly report, built to match the published rules of the BOP import format (#v2.0); the steps inside the portal are shown in the export guide.
Step 5: Verify in the portal, then submit
Whether imported or typed: compare the amounts shown in the portal line by line against your checked figures before you submit. Responsibility for the filed return lies with you, not with the tool. After submitting, keep the filing confirmation with your records.
Step 6: Pay, and pay actively
The step that gets missed most often: submitting is not the end of it. The declared VAT is not collected automatically; according to the BZSt, direct debit is not possible in the OSS procedure. You transfer the amount yourself, and it must have arrived at the Bundeskasse (the federal treasury) by the same due date (the end of the month following the end of the quarter). In the payment reference you must state your Kassenzeichen (the payment reference number the BZSt assigns you) and the taxation period, otherwise the payment cannot be allocated. The bank details and further specifics are provided by the BZSt in its OSS section.
Because it is the arrival of the payment that counts, not the transfer order, it is safer to transfer a few bank working days before the due date.
What stays manual even with a tool
Honesty requires saying it: part of the OSS remains handwork, or a decision no software can take off your hands.
- Corrections of earlier quarters. If you spot an error after filing, you do not fix it in the old return but in a later return, in a dedicated correction section; this is possible for up to three years. You make these entries manually in the portal.
- Negative country balances. If refunds in a country exceed sales in a quarter, the result is a negative amount that the current return cannot accept as such. You handle these cases manually in the portal; Faktwise lists the affected rows separately with a note.
- The EUR 10,000 decision. Whether and from when you switch to the destination-country principle is a tax decision. The background is in the basics guide; the decision itself you make with your German tax advisor.
- Reduced VAT rates. If your products are taxed at reduced rates in destination countries (books or food, for example), the standard rate is not enough. Faktwise calculates with the destination countries’ standard rates; clarify such product ranges with your German tax advisor in advance.
When doing it yourself is the wrong way
The workflow described here fits the most common case: shipping from a German warehouse to consumers in the EU. In some setups, however, the OSS return alone is no longer sufficient:
- Stock in foreign warehouses, for example Amazon FBA with inventory in Poland or the Czech Republic: deliveries from a warehouse to customers in the same country are domestic sales there and do not belong in the OSS return. The EU Commission makes clear that the OSS return does not replace national VAT obligations. As a rule you then need your own VAT registrations in the warehouse countries, and with that a full-service compliance provider or a tax advisor who covers those countries.
- Many special cases at once: if corrections, reduced rates and edge cases pile up every quarter, outsourced support is often the more economical choice.
In short: doing it yourself pays off with a simple setup, meaning one shipping country, standard rates, B2C. Once it gets more complex, bring in support before mistakes get expensive.
The quarterly workflow as a checklist
- Deadlines in the calendar: April 30, July 31, October 31, January 31, with no shift on weekends.
- Pull the quarter’s figures per country and rate: shipping country, B2C only, credit notes included.
- Check plausibility; test the finished BOP CSV beforehand with the free OSS check.
- In BOP, open the OSS-EU return: import the BOP CSV or type in the rows.
- Compare the amounts in the portal line by line, submit, file the confirmation.
- Transfer the VAT yourself, with Kassenzeichen and period, arriving by the due date.
FAQ
By when does the German OSS return have to be filed?
By the end of the month following the end of the quarter: April 30, July 31, October 31 and January 31, each for the preceding quarter.
Does the OSS deadline shift if it falls on a weekend?
No. Under the EU rules, the due date applies even when it falls on a weekend or public holiday.
Do I have to file if I sold nothing in a quarter?
Yes. As long as you are registered for the OSS, a Nullmeldung (nil return) must be filed as well.
Is the OSS tax debited automatically?
No. Direct debit is not possible; you transfer the amount yourself with your Kassenzeichen and the taxation period, so that it arrives at the Bundeskasse by the due date.
Faktwise takes on the grunt work of steps 2 to 4 in this workflow: the app detects OSS sales automatically, calculates with the destination country’s standard VAT rate, sums the quarter per country and rate, and creates the BOP CSV for import into the BZSt-Online-Portal. Free up to 5 invoices per month, above that a flat EUR 19/month, with a 14-day trial: try the demo or install Faktwise from the Shopify App Store. And as always: Faktwise is software, not tax advice. Deadlines, payments and tax decisions remain your responsibility; binding information comes from the BZSt, individual advice from your German tax advisor.