FluentCart - It's not 100% EU compliant
UPDATE:::
The issue has been identified as a bug and is currently being investigate by Shahjahan Jewel
Hey Friends, firstly - congratulations on the launch of FluentCart!! It really is a stunning piece of kit and I am certain that it's going to take the industry by storm.
I wanted to quickly jump in here as per the request of your support, as I have discovered that FluentCart isn't 100% compliant for Eu in terms of how it handles its Taxing.
Here's a brief rundown of whats happening:
- Store is located in Germany
- Customer is B2C - Prices displayed and paid are including VAT
- Customer is B2B and in Germany (store location) - Prices displayed and paid including VAT
- Customer is B2B and not in Germany - Prices are displayed NET and paid for NET (tax removed).
What FluentCart does is simply make the VAT% = 0. Which is not right. A 10€ product minus the vat should be something like €8,10 or something. Not the full 10€.
This is detailed here in the EU Directive 2006/112/EC, Article 138, and the German VAT Act (UStG §6a).
To comply with EU VAT law, the system should:
- Subtract the VAT from the total when a valid EU VAT ID is entered (so the buyer pays the net amount), and
- Display a note or line item stating that the reverse-charge mechanism applies.
This is the exact same problem SureCart had and they somehow didn't care enough to fix it. Hence why I am here - and I was so hoping that this would have solved it. WooCommerce Germanized manages to do it without any hassle.
Can we please, please , please take a serious look into this??
Thanks,
Shayne
Hi Shayne Thomas welcome to the community. One month ago, I had zero knowledge about EU tax. I have talked with a few of our group members from Europe and based on their feedbacks we built this version.
Let's keep the conversation going, and we definitely want to make it work for everyone.
Jorge de los Reyes & Natascha Vantuykom would you please share your input here.
Shahjahan Jewel thanks Shahjahan, I know how annoying and complicated the EU can be but I’ve run 2 ecomm stores here for 6 years and so I know what hurdles I had to jump over 😂
Shahjahan Jewel Great that it is in progress and will hopefully work soon.
I would like to add that the payment options you offer in the free version are both US based. I am sure I am not the only one that would like to be able to use a European based option, like Mollie in a free version. (Same for Fforms btw)
Shahjahan Jewel the handling of value-added tax (VAT) in digital business is very complex in Europe and the EU.
As it is currently implemented, it does not comply with legal requirements.
This issue will prevent 95% of potential Fluent Card users from using Fluent Card for their business.
Please seek professional advice and address this matter as soon as possible to make the product attractive to customers in the EU.
Another major issue is the creation of electronic invoices (e-invoices).
Since January 1, 2025, e-invoicing has been mandatory for B2B transactions. This feature is also not yet implemented in Fluent Card, which will discourage many businesses from using it.
Please note that these two aspects are essential for online shop operators, as failure to comply can result in very high penalties.
The WooCommerce plugin “Germanized” solves all of these problems for WooCommerce shops.
Shahjahan Jewel In Romania, e-invoices are now required for all transactions (B2B and B2C), except for those to customers in other countries.
The easy solution would be to have the option to disable native invoices in FluentCart and integrate a third-party invoicing provider that handles all legal requirements, including e-invoices, e-shipping, SAF-T, etc.
In Romania, oblio.eu is a great invoicing provider with an extensive API. Perhaps you could work with them to develop such an integration.
Hello Shahjahan Jewel and Shayne Thomas
The post is completely spot on (and quite related to the feedback Part III y posted last week).
As Shayne said, under the EU VAT Directive (2006/112/EC), intra-EU B2B transactions must be treated as VAT-exempt reverse-charge supplies, not simply “0% VAT.”
So the system should recalculate the net base price (e.g. €10 incl. VAT → €8.10 at 19%) and display a clear note such as:
“Reverse charge – VAT exempt”
That said, the way this appears depends on whether the store is configured as “tax included” or “tax excluded”- and that’s precisely where the edge case lies.
As we discussed earlier with the team (and as @nvanruykom noted):
- In B2B setups, where prices are normally tax-excluded, everything works correctly.
- In B2C setups, where prices are tax-included by design, the reverse-charge mechanism shouldn’t apply - except when the buyer identifies as a business with a valid VIES VAT ID, in which case the transaction must convert dynamically to B2B (net + reverse-charge notice).
As mentioned in Feedback – Part III (link), the correct implementation should always:
✅ show the full net/VAT breakdown, and
✅ include the reverse-charge reference when applicable.
Perhaps the ideal approach - as we also suggested - would be to keep the current global tax mode (included or excluded), while allowing merchants to override it per product.
This flexibility is essential for stores selling to both B2C and B2B audiences.
Also to note…, SureCart originally supported that per-product tax mode but later removed it in favor of global settings. For mixed-model merchants, that level of control is critical.
In short: the logic is correct - it just needs that extra flexibility so B2C and B2B sellers can both stay 100% compliant without workarounds :)
Still need to check the currents update son my side though!
Jorge de los Reyes Yay! This is spot on!!! Thank you!!! I get the confusion here as it's not often a business is both B2C and B2B. But I also imagine Plugin Sellers and the like are also B2B and B2C. There's lots of private people who are just running websites privately and not making coins off of them.
Instead of doing it on a per product basis, what about if we did the following:
-
User can choose to display Prices including or excluding Tax (as it is)
-
Another choice option, "Do you sell to both B2B and B2C customers?"; "Yes/no" (or even choose between B2C, B2B and Both).
-
If yes, then the logic would be as follows:
- All prices displayed are Gross (including Tax)
- If customer puts in Valid VAT ID from another EU member country, Net price is displayed on checkout and charged.
I can imagine it must be cumbersome if a store has 100s of products to manually go and adjust them. This way, I think there could be a system that would just reroute the logic based on the "yes/no" answer above.
Jorge de los Reyes Natascha Vantuykom - Have a look at Jorge de los Reyes 's reply.
Shayne Thomas sadly, a global “tax included”, won’t be suitable for most B2B workflows.
maybe a similar Logic to categories or alike could work.
Let’s leave this to the team. They already know the material part. And we have to take into account that it also needs to fit technically 😄
I’m sure they are already aware.
But of course, this debate is a must! So thank you for bringing it to the table!
Jorge de los Reyes @Shayne Thomas great summary and addition, however I would add another element, which is when we sell worldwide in multi-currency (what we do). In that case, even if we sell B2C, we don't want the VAT to be included, because it will put off US customers who don't have to pay VAT, but might have to pay their own sales tax, which varies depending on their state. The amount of tax doesn't depend only on where the business selling online is located, but also where the customer is located.
So currently we have all the prices in our online store set excluding any VAT and sales tax, as we have no way to know what should be added depending on the customer's location.
Paddle is set to add the relevant VAT/tax depending on the user location (VAT in the UK or EU, sales tax in the US or any other part of the world that needs to).
If a business customer enters a valid EU VAT number, then the EU VAT is deducted and the sales is made under the reverse charge mechanism (which should be speficied on the zero VAT rated invoice), but if it's a UK business customer, the VAT is NOT deducted even if they enter a valid UK VAT number, as they can claim it back through their VAT return.
Shahjahan Jewel All this is extremely complex, and it's imperative that FluentCart implements this properly before customers can switch to it. Luckily, we can use Paddle, so we know that all the tax questions will be handled properly. Please just make sure that it's possible to enter all the prices without any VAT, so that Paddle can handle adding the relevant VAT and sales tax, when relevant, as well as issuing the correct invoice. We don't want Fluentcart to issue any invoice in that case, as that can only be done properly by Paddle (which acts as a Merchant of Record and issues all the invoices to the customer). We sell wholesale to Paddle excluding VAT, and they handle each sale specifically for each customer, hence issue the invoice (the sale is from them, not from us). So please make sure it's possible to disable invoicing (we don't use EDD to send any invoice, again it's done by Paddle).
Paddle also allows to choose if we want the price that we have for each product to be considered including tax or excluding tax, which is great as it gives flexibility, but that happens on Paddle's side.
What would be also great would be to have separate settings for services without live human interaction (self-led online courses for example) and services with live human interaction (online courses with a live element such as group work, Q&As etc). Paddle can only handle the former (no human element), so if Fluentcart was able to handle online courses with a live human interaction, it would allow us to sell them (currently we can't). HOWEVER, the VAT rules are not the same for these (VAT doesn't have to be charged when there is a live human interaction, depending on the country of the seller and the country of the buyer, so that's another different set of questions.
Please not that if FluentCart doesn't behave as a Merchant of Record (like Paddle), the seller also has to report all the sales (for example through the one-stop-shop / MOSS mechanism). How does FluentCart help the seller to produce the reports that have to be included with this legally mandatory reporting? It's one thing for the seller to charge the correct amount (with/without VAT and sales tax), it's another one entirely to comply with the VAT reporting rules in each country and paying the right amount of VAT collected to the authorities (it's not for the seller to keep!).
That's one of the reasons why we are using Paddle. It's just too complicated for a small business to deal with all these rules and reporting. When using a Merchant of Record like Paddle, we let them handle all the headaches regarding not only how much tax/sales tax to charge to each customer depending on B2B, B2C and the customer's location, but also they deal with all the VAT reporting, payment and compliance. We are selling with no VAT wholesale to Paddle, a single company in Ireland under the reverse charge mechanism. For us, it's always B2C, there is never any VAT or sales tax involved, and we never collect any VAt or sales tax that we then need to report and pay to the authorities. Easy, no headache, and the whole legal and tax burden is on Paddle.
For FluentChart to act as a Merchant of Record would be fantastic, but that's a whole new business and you'll need to hire specialised tax experts, as the legislation changes all the time and involves hundreds of different rules, for each different country.
I hope this helps!
Great work Shahjahan Jewel,
Do you guys have plans of including Team/Group subscriptions, maybe in the near future.
Say you want to give a team of 5 access and when the subscription expires they lose access.
Similar to Teams and Groups for WooCommerce?
Shayne Thomas I've tested for Belgium B2B, and for me it is working as expected, when B2B customer outside Belgium enters valid VAT number, the tax is changed to 0%.
However, I have my store setup to show prices excluding tax, what is normal for B2B. I did not test it when prices are entered with tax included...
Shahjahan Jewel maybe you can check? I am in the middle of a critical project right now
Natascha Vantuykom Hi Natascha, thanks. Yes, so it's doing the same for me on my side. However, I am displaying my prices "including" tax. As I am not only selling to B2B, but also B2C. It's software for photographers (so there's hobbyists and professionals). In this case, we display the prices including Tax (with a VAT declaration), and then on checkout - the customer, if supplying a valid VAT ID and is external to the store location, should only pay the NET amount of that price.
Shahjahan Jewel I hope this is a bit more clear?
Shahjahan Jewel Jorge de los Reyes Natascha Vantuykom I forgot to clarify in the post description that the price changes with regards to the VAT happen on the checkout page. Not on the product pages themselves. They should be displayed with VAT at all times since we are catering to both B2C and B2B. If we did only B2B, then I would have set my prices to be displayed excluding tax. If you want to have a look at how it works, feel free to add a product to the cart and use a VAT number on checkout. https://rootspresets.com
Shayne Thomas so, you just want a label 'VAT reverse charged' under total when this applies?
What I see for the rest it works as expected, not?
Natascha Vantuykom Not quite. So in my example, the first price (139) is shown when a customer is checking out normally. B2C for example. The second one (116,01) is the total price being paid and charged when the customer puts in their VAT ID (and its valid). So in essence, they pay less as a business than as a B2C because of the agreement within the EU.
In your case, you have chosen to display prices excluding Tax. So 100€ would be 119€ on checkout. But that is not compliant in EU as all prices, in the shop for B2C, need to INCLUDE Tax. On the product pages, the price should be 119€. If they put in their VAT, it should remove the 19€, and charge them only 100€.
Shayne Thomas I really don't see the issue (sorry 🙈) you can select how to show prices in the shop entered with or without tax...
Natascha Vantuykom :D Im sorry for the confusion. I dont know how else to explain it. Let me try again:
- I am selling to B2C, and B2B. EU law states that whenever we sell to B2C, displayed prices in the shop must be including tax (vat).
- For this reason, I chose to display my prices including TAX.
- My prices display at 139€ including VAT. Perfect.
Now, what happens when a B2B customer comes to my shop and wants to purchase under their business name with VAT.
- B2B Customer comes, see's the listed prices including VAT in the store. Adds products to their cart and proceeds to the checkout page.
- B2B Customer fills out the checkout form, and puts their VAT ID into the box. It is valid. VAT is removed from the checkout price.
- The total checkout price, now without VAT, should be €116.01.
That is the correct way.
Your way, and what is currently happening is the following:
- B2B customer adds product to their cart, goes to checkout. Total being displayed is 139€
- B2B fills out all information, including their valid VAT, but now - price is STILL 139€. And only a declaration of "Vat reverse charge applied". This is wrong.
This only works if you display your prices EXCLUDING tax. When you have a business that is selling only to B2B, then that makes sense.
A B2B customer, upon entering their VAT ID on checkout in a store where prices are INCLUDING Tax, must be charged & pay ONLY the NET amount. €116.01 in this case for example.
Haha. I really dont know how else to explain this. To me, it's pretty simple and straight forward. The logic to me is:
If customer has = Valid VAT ID, then return 'Net Product Price' on checkout. Thats it :P Im so sorry for all of this. But this is a huge blocking point, not only for me - but for everyone in the EU that caters to both B2B and B2C.
Natascha Vantuykom This is a (Browser translated) snippet from Woocommerce Germanized that points out exactly what Im trying to do. Deduct the VAT before purchase (even when the price includes the TAX) (https://vendidero.de/doc/woocommerce-germanized/umsatzsteuer-id-check)
Shayne Thomas I just tested on your site, on checkout, price including VAT is shown, that is correct, not?
When I add my VAT number, price is shown WITHOUT VAT, that is how it should be, not?
So I do not see what is not working here (sorry again, just trying to help)
Natascha Vantuykom Yes! Thats right! So, before you put in the VAT - you saw the total price = 139€ right? Then, in your second screenshot after you put in your VAT, the total price dropped to = €116,81.
Thank you for your time Natascha! You're very helpful :)
Shayne Thomas yes, that is correct
But then what part is not working for you?
Natascha Vantuykom In FluentCart - if I put in a valid VAT Id from an another Eu country (i.e Belgium), the total price does not change to €116,81. It stays at €139.00 - That part. Thats wrong.
Shayne Thomas look at my screenshots, the price actually does change when I put in my Belgian vat number. Try to test it incognito
Natascha Vantuykom rootspresets.com is currently using Woocommerce & Woo Germanized. Its not FluentCart set up there already
Shayne Thomas aaaa okay, please share your FLuentCart site, then I test there
Natascha Vantuykom If you load up a demo of FluentCart and try the same thing, its not working. Roots Presets is a live site - I wouldn't install FluentCart on it just yet
Natascha Vantuykom Here is a demo of FluentCart. I have put in the VAT number, and the price is 100€ when it should, in fact, be 100-19% (€81)
Correction - I believe Belgium rate is 21%. But doesn't matter. It should still remove it from that Total price
Shayne Thomas you are correct, just tried on my testsite and it is a bug.
I was totally confused thinking the site that you shared was on FluentCart
Natascha Vantuykom Oh sorry about that. a Crucial bit of information that I left out. Glad to see that you spotted it too. perhaps you can pass this on to the team and get it looked at ASAP since it's quite a crucial thing to be compliant here in the EU.
Shayne Thomas Jewel is on it
Shahjahan Jewel Jorge de los Reyes - Natascha confirmed its a bug & can replicate it on her end.
Natascha Vantuykom Legend! <3 Thank you so much Natascha!
Shayne Thomas :-) you are welcome
Shayne Thomas (not sure why I can't seem to be able to reply to your post, sorry) Whether it's 19% or 21%, that's not the way to calculate the excl. VAT price (substracting the VAT rate from the incl. VAT price).
The actual amount is the amount such as when the VAT is added, you obtain the inc. VAT number, so in this case the excl. VAT price is 84.83 euros, not 81 euros. Heere is how it works:
To calculate the amount excluding VAT, you must divide the total price (including VAT) by 1 plus the VAT rate.
Here is the formula and calculation:
- Formula:
Price excluding VAT = Price including VAT / (1 + VAT Rate) - VAT Rate as a decimal: 19% = 0.19
- Calculation: 100 / (1 + 0.19) = £100 / 1.19
- Result: 84.03 (rounded to two decimal places)
The amount excluding VAT is 84.03 Euros
Screenplay Unlimited right! I think i just threw in some random numbers here as an example. Woo Germanized handles it accurately fortunately
Shayne Thomas yes, so does Paddle :)
Shayne Thomas Thanks for addressing this question/issue 👍
Theo Pleasure. I was really hoping that this wouldn't have been an issue. I know it's annoying but WooGermanized does it perfectly. I would LOVE it if they made FluentGermanized. Maybe we can bug them to do it?
Shayne Thomas You've taken the first step, my friend - thank you - I have faith they'll come through, thumbs up.
Theo Im sure they will - especially that this was brought up so soon. I had this back and forth with SureCart until they basically just told me to "F off" haha. Not directly but they just shrugged their shoulders.
@shaynetphotoThank you for the information! How can they! It's surprising how many Europeans must still be using SureCart.
Shahjahan Jewel we need an additional setting. Currently, we can choose if we want to enter the prices including or excluding tax. But that does not say anything about how we want to show prices on the frontend. There are valid (and legit) reasons to show net prices and calculate tax in the checkout only. Although the majority of shops targets non-businesses, showing gros prices will be the default. But some also need to show net prices with the notification that this is targeted only to businesses B2B.
Does the VAT issue apply to digital and tangible products as well as services?
Don't change your plugin. Make it open for major third Party Plugins handling all the laws. It will save your sanity. In germand it would be germanized or marketpress. In other european countries others.
They implement changing laws immediately.
Hello everyone, greetings from Slovakia. I would like to contribute to this topic. I hope it is understandable, my English is not perfect and I am helping myself a little.
In my opinion, the topic of VAT is extremely complicated in the EU (not to mention on a global scale). Perhaps one day there will be a situation when there will be one simple and harmonized worldwide VAT system.
Our case: we are a Slovak company that initially did not have a VAT ID number (i.e. we were not VAT payers). We only became VAT payers later. In my opinion, this is the first point that FluentCart should take into account in the future. It should be taken into account that starting entrepreneurs are often not VAT payers and, for example, sell a service for €100. If they buy goods from wholesalers — who are usually VAT payers — input VAT is an expense for the non-payer (he cannot deduct it). A non-payer of VAT may not charge VAT on the output; he only includes his costs (including non-applicable VAT) and margin in the selling price.
Therefore, I am inclined to the solution that in FluentCart prices excluding VAT are primarily entered and all calculations are based on this basis. In the initial setup, the operator would choose: I AM NOT a VAT payer / I AM a VAT payer — and tax rules would be pre-filled accordingly. This is how it works in accounting programs.
When it comes to accounting: the operator either processes the accounting himself or cooperates with an accounting firm (this is also our case). It is ideal when products and invoicing are synchronized with accounting. Here too, it is crucial to have prices excluding VAT as a starting point + clearly define whether the entrepreneur is a payer or not.
Regarding the display of prices for B2C: it should behave according to the operator's preference, but in practice it is necessary to have a built-in display switch "with VAT / without VAT" and at the same time respect that for consumers in the EU prices must be displayed with VAT in a clear and visible way. In WooCommerce, this is often solved by various add-ons, which can cause collisions - therefore it would be better if FluentCart had it natively.
We at plexcore have two centers. In one, we primarily focus on the B2B segment: among them are VAT non-payers (for whom it is appropriate to display prices with VAT, because they do not deduct it) and payers (who often prefer prices without VAT). In the second center, we also target B2B, but we have products that are also purchased by B2C customers - there it is appropriate to display prices with VAT.
Therefore, the starting price when setting up products should always be without VAT - it is the most universal for both non-payers and payers (as I described above).
I would also like to emphasize that Paddle-type services should be used purposefully: if the provider is a merchant of record, they take over the calculation and collection of VAT for you; however, if you want to have tax logic under control directly in the e-shop, such an external provider should not manage the main tax rules.
Another important element of FluentCart development is high-quality connectivity to external accounting systems, which it seems that the API will solve.
Finally, I would like to thank the Shahjahan Jewel & WPManageNinja, FluentCart teams for their commitment to changing the world of e-commerce on WordPress. I also appreciate the focus on EU issues and thank experienced store operators for their contributions Jorge de los Reyes , Natascha Vantuykom , Shayne Thomas
I wish us all pleasant and creative days.
Thanks - following, thumbs up 👍