August 28, 2015

VAT for SaaS businesses in the EU

At the beginning of this year the place-of-supply rules for the supply of digital goods and services changed.

Previously VAT was charged based on the location of the supplier, so a UK-based company would charge the UK rate of VAT to customers within the EU. This also meant that suppliers of digital goods could offer lower prices by moving their operations to countries with a lower VAT rate. This is exactly what Apple did by moving the iTunes store HQ to Luxembourg, and of course the tax man wasn’t happy.

As a “solution” the EU changed the place-of-supply rules for digital goods and services. Now VAT must be charged based on the location of the customer. Whilst this may keep the tax man happy, it sucks for small businesses. I’ve heard stories of companies completely shutting down their cross-border EU operations because of the implications this has on their bottom line.

Consumer products with a “fixed” price are the worst affected. Take my startup Fabrik as an example. We charge £6.90 a month for our personal plan. Let’s see how this breaks down depending on the customer location:

Location		VAT Rate	VAT			We Receive
United States	N/A			N/A			£6.90
United Kingdom	20%			£1.15		£5.75
Sweden			25%			£1.38		£5.52

Perhaps we should focus all of our efforts on growing our business in the US? Way to go EU!

So what is MOSS?

MOSS stands for Mini One Stop Shop and is a VAT scheme from HMRC that enables you to submit a single quarterly return rather than having to register for VAT in each EU member state.

Essentially it’s a spreadsheet that you send HMRC each quarter containing the name of each country, the total value of taxable supplies and the VAT owed. Here’s an example:

MOSS Return

Tracking customer location and VAT rate

In order to comply with EU regulatory requirements you need to prove your customer location. There are a few services that will handle this for you, for example, Taxamo - otherwise there’s a good chance you’re going to have to build this into your checkout / subscription process.

I had the joy of doing this in my Christmas holidays (yes we left it till the last minute). In order to comply we record the customer’s address, their credit card country of origin and their IP address. I believe this is enough but I’d recommend checking the HMRC site for full details.

In addition to storing the customer location you’ll need to know the VAT rate of every country in the EU. There’s a JSON web service that has all the EU member rates that you can consume directly or download. When we generate invoices we obtain the correct tax rate from this JSON file using the customer location.

With a database query and an Excel pivot table we can generate a report of everything we need to submit our MOSS returns:

VAT Report

Accounts, Accounts, Accounts

Typically payment providers like Stripe will transfer your funds every few days or weeks (you can actually configure the frequency with Stripe).

The problem is that it’s pretty difficult to know what the transferred amount consists of. For us it could consist of monthly or yearly subscriptions; for customers all over the world.

Bank stripe deposits

It’s time to get your accountant hat on.

Disclaimer: I’m not an accountant but my accountant assures me this is correct.

Bank Charges

First of all let’s cover bank charges. You should account for all your costs of sales, which includes the transaction charges from your payment provider.

We use Xero and typically just reconcile our bank transactions. Let’s assume that we’ve had 10 yearly subscriptions in the given period (8 UK customers and 2 German customers):

10 x £69 = £690

This is what we charge our customer (and therefore what we charge tax on) but it’s not what ends up in our bank. Instead we receive £673.52.

Stripe charge 1.9% + 0.20 for UK payments and 2.9% + 0.20 for international payments. So the breakdown is:

8 x UK Payments
Charge: 8 x ((69 x 0.019) + 0.2) = 12.08
Receive: (8 x 69) - 12.08 = £539.92

2 x DE Payments
Charge: 2 x ((69 x 0.029) + 0.2) = 4.40
Receive: (2 x 69) - 4.40 = £133.60

Total Received: £673.52

When we reconcile transactions in Xero we post them to the Sales account:

CR		SALES		£673.52

To account for the bank charges we need to credit the sales account and debit bank fees account. We do this in Xero with a Manual Journal:

CR		SALES				£16.48
DR		BANK FEES			£16.48

You may wonder what difference this makes since you’ll still come out with the same amount on your P&L. The point is that I want to know exactly how much we’re paying our payment processor. Otherwise these would just be “hidden” costs.


When we reconcile our subscription revenue in Xero we post the transactions to sales without VAT applied:

Posting sales with no VAT

Again this is because we don’t know whether this was a UK customer or not. It’s important to note that UK digital supplies should NOT be included on your MOSS return. They still belong on your normal UK VAT return.

Let’s assume that in the past quarter we’ve had 20 UK customers subscribe to a yearly subscription.

20 x £69 = £1380

Due to the bank charges adjustment above we can now assume that the full amount was posted to Sales i.e.:

CR 	SALES		£1380

But of course we’ve not accounted for UK VAT. We therefore need to create a journal entry that debits the £1380 from Sales and then credits the same amount back, but this time we include VAT:

Description				Account		Tax Rate	Debit		Credit
Subscription VAT UK		Sales		No VAT		£1380
Subscription VAT UK		Sales		20%						£1380

Doing this ensures that the VAT is applied correctly and will therefore be included on your VAT return.


EU VAT is a slightly different process. We want to account for the VAT but it shouldn’t be included on our UK VAT Return.

To make this possible in Xero, you need to create a Tax Rate for each EU member state that you supply digital goods to. You need to set your Tax Type to MOSS Sales. This ensures that the amounts will be included on your VAT audit report but not on your UK returns. Xero cover this in more detail here.

[Creating a new tax type in Xero]

Using the Excel spreadsheet I covered earlier we are able to get a breakdown of the taxable supplies to each EU member state. For each country we need to create a journal entry that debits the total amount from Sales and credits the same amount, including tax using the appropriate MOSS tax rate.

In Q2 of this year we had just one subscriber from Germany so I created the following journal entry:

[EU VAT adjustments in Xero]

Remember, you’ll need to do this for each EU country you’ve supplied goods to in the given period. Here’s all the journal entries I had to create for Q2 of this year:

[Posted MOSS journals in Xero]


  • Don’t assume your accountant has got this covered. I’ve come across a number of startups who were unaware of the place-of-supply changes.
  • You’ll need to do some development if you want to be fully compliant.
  • Prepare to crunch those numbers, or if you can, find someone else to do it.
  • Try and automate as much of the quarterly reporting as possible, it will make the entire process a little easier.

Finally, and perhaps to add a little insult to injury, here’s my latest invoice from Microsoft:

Microsoft and their lack of EU VAT compliance

Notice anything odd? How about the 23% rate of VAT they’re charging me even though I’m based in the UK!

Well done, Mr. Tax man. Well done.

© 2022 Ben Foster