The OSS scheme explained: how VAT works for EU sales
The OSS scheme explained: when does the €10,000 threshold apply, how does the Union scheme work, and how do you file your return with the Belastingdienst?
Mehmet Karabulut7 min read
Your own website takes payments through Mollie. The money arrives, but an invoice appears nowhere: your site does not create one, and an off-the-shelf plugin does not fit a site that you or an agency built from scratch. Yet the payment itself already holds much of what an invoice needs: the amount, the payment date, the customer and often the VAT details too. slimzaak's Mollie Facturatie extension turns that into a proper invoice. Below you can read how it works, what your site should put in the payment, and when this is not the right route.
Mollie is a payment provider. A payment there is proof that money changed hands, not an accounting document. An invoice needs more: a continuous invoice number, your company details, your customer's details and a VAT breakdown. If you want those requirements in one place, read our guide to making an invoice.
With a webshop platform such as Shopify or WooCommerce, the integration fills that gap: the order supplies the data and the invoice follows from it. A custom website has no such layer. There is only a payment, and it often holds more than you think: the amount, the time, a description, the billing address and, if your site sends it along, the product lines with their VAT rate.
Mollie Facturatie builds on that payment. Your site stays as it is; slimzaak reads what was paid from your Mollie account afterwards.
Mollie Facturatie is an app extension in slimzaak (its page is titled Mollie Invoicing in the English interface). You connect your own Mollie account through OAuth: you log in to Mollie and give slimzaak read access to your payments, refunds and Mollie invoices. slimzaak cannot pay or change anything in your Mollie account. You withdraw the access through Mollie, or with Disconnect in slimzaak.
After that, slimzaak fetches new payments every half hour; with Fetch now you do it straight away. Only paid payments count, and only those from live mode: slimzaak never sees test payments. The slimzaak interface is available in Dutch and English, with Dutch as the default; the labels below are the English ones.
Switch on the extension
Activate Mollie Facturatie under Apps in slimzaak. It is a paid extension.
Connect with Mollie
Log in to Mollie and give read access. Then you land back in slimzaak.
Link your profile to a store
If you have one Mollie profile, slimzaak attaches it to your manual store (we create one if you do not have one yet). With several profiles you choose which store each belongs to. A profile without a store is not invoiced.
Choose your start date and mode
By default everything paid from the moment of connecting counts; you can go back up to 60 days. The mode is Review first (default) or Automatic.
Check the first payment
Open a payment in the list and see who paid, which lines and which VAT rate will go on the invoice. If it is right, choose Invoice.
Your website does not have to pass anything to slimzaak, but the payment it creates at Mollie is the source of the invoice. The more you put in, the less you have to complete later. These are the fields slimzaak reads.
| Field in the payment | What slimzaak does with it | If it is missing |
|---|---|---|
| lines (description, quantity, totalAmount, vatRate, sku) | Each line becomes an invoice line with its own VAT rate. A sku that matches a product in slimzaak counts as sold. | One invoice line with the description and the amount paid; the rate comes from your own choice. |
| billingAddress (organizationName, givenName, familyName, streetAndNumber, postalCode, city, country, email) | Becomes the customer on the invoice. With a company name it is a business customer; the country decides the VAT regime, including OSS. | Without customer details the invoice goes to Consumer. If OSS is on and the country is missing, it becomes a draft. |
| metadata.vat_number | A business customer with a VAT number from another EU country: VAT reverse-charged, 0%. | The invoice gets the normal VAT rate. |
| description | Becomes the description on the invoice. A rate you choose once for a description is remembered; order numbers and capital letters do not count. | Mollie requires a description, so there is always one. Use the same description for the same product, so the remembered rate applies. |
| customerId (Mollie customer) | The same customer is recognised, so no duplicate customer record appears. | The customer is recognised by e-mail address. |
VAT is the part of an invoice you do not want to gamble on, and slimzaak does not gamble. The rate of a payment is decided in this order:
vatRate, the rate of each line applies.If none of these exists, for instance with lines that carry no rate, the invoice becomes a draft that says what is missing: the VAT rate or the customer's country. You fill it in and issue the invoice. So an issued invoice never carries a guessed rate.
The invoice is built from gross amounts: what your customer paid is what the invoice says, VAT included. For a customer outside the Netherlands, slimzaak looks at the country and the type of customer. A business customer from another EU country with a VAT number gets VAT reverse-charged (0%), a customer outside the EU gets 0%. If OSS is on in your settings, slimzaak converts the rate you set for a payment without lines into the rate of the consumer's country in the same group (standard or reduced). How that scheme works is explained in the OSS scheme for webshops.
Invoice date and payment status
The invoice date is the day your customer paid. An invoice that is issued straight away gets the Mollie payment recorded on it and so does not show up as outstanding among your debtors. If you first complete a draft, you mark the invoice as paid yourself afterwards.
As soon as you connect Mollie, slimzaak creates no invoices or expenses yet. Everything it finds goes on a list, with what would happen for each payment, for instance Becomes invoice + order. You choose, per payment or for a group at once: Invoice, Ignore or Link. That is a deliberate choice, because an issued invoice can no longer be deleted.
The list also helps with what you already have:
tr_…), we link it to the payment instead of making a second one. If there is an invoice for the same amount within a week of the payment, we suggest it as a link.When you are done reviewing, switch the mode to Automatic. New payments then become an invoice straight away and new Mollie invoices an expense straight away. What was already on the list keeps waiting for your choice.
An issued invoice stays
You cannot delete an issued invoice; you correct it with a credit note. So only switch on Automatic once the first invoices from the list are right.
An invoice is not the only thing that follows from a payment:
This extension does not fit every situation, and we would rather say so up front:
order_id in the metadata, or Order #1043 in the description), so nothing is invoiced twice. Only a manual store invoices a payment itself. If a profile also belongs to a webshop, a payment without an order waits up to three days for that order.If you only sell through a connected webshop or marketplace, you do not need this extension. If you also take payments on your own website, it fills exactly that gap.
The OSS scheme explained: when does the €10,000 threshold apply, how does the Union scheme work, and how do you file your return with the Belastingdienst?
Should you keep a cash book in Excel or go digital? And how do you create a credit note for a return? A practical guide with examples for freelancers.
Learn how to create an invoice the right way: mandatory details, templates in Word, Excel and PDF, free online tools, and automatic invoicing with slimzaak.
Filing a VAT return for your webshop? Follow this step-by-step guide: revenue by rate, input VAT, EU sales, and filing on time with the Belastingdienst.
Connect your store and see your first automatic invoice within minutes.
Free plan available · No credit card required · Cancel monthly