January 15, 2020

Help: Payment Flow + VAT + Price Display (EU corp)

David Klein @dakl

Heads up: this will be a rather long post. And I am looking for your honest feedback, suggestions and experience.

I have had to delay Hashr.io for the second time now, due to unresolved, missing or wrong payment flows. To be honest, I am sick and tired of this regulatory BS that is put on EU companies for SaaS business models.

What I want to achieve:

  • User visits the pricing page
  • User sees the price
  • User clicks on the button of the plan he wants
  • User steps through onboarding and payment
  • User receives invoice according to his/her chosen plan

What hinders me right now

  1. Regulation states: I need to show prices including VAT. This is no real biggie, but not complying could lead to hefty fines. I see other sites (from within the EU and the same country as me) just showing prices excluding VAT with an asterisk that states: "excluding EU VAT". Not quite sure why they do this and they just cope with the occasional fine by some random other company suing them? Right now, I show my prices including VAT and just substract the added VAT if the buyer is from a non-VAT country or a B2B customer from another EU country. This seems the most sensible approach, but could lead to prices being actually higher for B2C customers in EU countries with a higher VAT rate than mine.

How would you tackle this issue? From a conversion perspective and from a legal perspective?

  1. While onboarding my users I do ask where they are located. Based on that, I add another field to the onboarding form and ask for a VAT ID. If empty (B2C user) or non-valid (fakers), I charge my country's VAT rate. If valid (and from a EU VAT country) I charge 0% VAT (reverse charge).

MY COUNTRY == USER COUNTRY => 19% VAT
MY COUNTRY == EU COUNTRY => VALID VAT => 0% VAT (REVERSE CHARGE)
MY COUNTRY == EU COUNTRY => INVALID VAT => 19% VAT (MY COUNTRY'S VAT)
MY COUNTRY == NON-EU COUNTRY => NO VAT

Not quite sure about this though, references online state, that I actually have to charge my user's EU country's VAT rate instead of my country's VAT rate.

So Luxembourg 17%, Sweden 25%, Germany 19%, and so on. Some other SaaS players don't do this. At least I think they don't. I can't valide that.

Would love some more insight into this. How do you do it?

  1. It's tempting to just use a prepackaged payment provider to do this and just go for it, lean startup style. I have found none doing it right for EU SaaS businesses or they could theoretically do it with lots of API magic and coding on your end to be able to do it. Their main USP is gone, since implementing your own logic to Paddle, Chargebee or the many others isn't exactly faster or cheaper than just implementing the core Stripe API yourself.

So I have Chargebee a good hard look, and found that doing what a EU business needs to do to actually use them legally, it would be far simpler to integrate Stripe itself. And that even saves my roughly 300$/month plus an additional 0.6% on top of what Stripe charges. I fail to see a reason why to implement them and be locked-in for no additional benefit?

Please enlighten me here. Maybe I am missing some very essential thing here... ?

  1. If I go the the route of implementing the core Stripe API, what do I absolute need to make sure to save/get/document to comply with the VAT rules within the EU? After all "I ask my users where they are from". If I have to charge VAT based on their country (which maybe higher than the one my business is from), what would prevent a user to just Google a valid VAT ID (from any EU business Imprint page) and just use that to validate for 0% reverse charge? Would I be responsible for such a criminal act? There is no way for me to validate if used VAT ID REALLY BELONGS to the user or not.

It's a complete mess or I fail to understand it or I am missing something essential here. What is your take on this? How would you solve this?

  1. Regulation states I need to show prices in EURO. Well fuck. I want to show prices in US DOLLARS. The world uses USD, and I want to show and charge in US Dollars. Do you just use USD, charge in USD dollars and write on the Invoices the corresponding Euro values? What happens if conversion rates change? Do your users get different Euro values on each invoice? Do you charge in Euro instead and charge the same flat Euro value at time of onboarding? Or do you charge Euro values corresponding to the USD value at the time of charge?

Thanks, rant out.

Loading comments...