Checkout tax calculation

I’m not sure if this is actually a bug, but I’ll give it a try here and your perspectives.

I am currently using the latest MultiVendor version and plan to ship to different countries. It is so that the tax must be calculated according to the destination country. Especially for digital products.

For example, if the customer is in Germany, I have to add 19% tax to the product, although as a merchant in Austria I would actually have to add 20%.

If you store the price at CS-Cart as a price without tax, it works. BUT: I am not allowed to show prices without tax to the customers (they are end customers and not vendors/dealers).

So if I enter the price with tax, then this should be taken into account at checkout if the destination country changes. However, CS-Cart does this ONLY in the tax rate, not in the product price or in the final price of the shopping cart. The product price and the shopping cart price are always the same. Which is actually a bug. :face_with_raised_eyebrow: :thinking:

What do you guys think about this? :face_with_peeking_eye:


1 Like

So nobody has a problem with that? :face_with_raised_eyebrow:

I’m not sure what you mean exactly, but EU tax has been a problem since forever and I wrote many times about it, here as well as in the bugtracker and directly with cs-cart people. I had a very good email conversation with them some months ago though and it seems like they finally added a feature of keeping the same RRP incl VAT for each country, and then reducing the VAT that is current for the country the customer ordered from (e.g. 19% for Germany, 20% for Austria).

Are you using the latest version?

I mean that the products are actuelly entered with tax (20% for Austria) in my storefront/marketplace. For a delivery country other than Austria, this 20% tax must be deducted from the price and then added with the correct tax of the delivery country (eg 19% for Germany). The gross price of each product (!) must therefore change.

Currently only included tax amounts change. :weary: :frowning_face: You can see this in the gif i posted.

So for this example in the picture/gif:
Austrian product with delivery country Austria to 8720 Austria (20%):
Product price: EUR 15,- (20% tax with 2,5 EUR included) +.
Shipping: EUR 10,90 (20% tax with 1,82 EUR included) =
Shopping cart total = EUR 25,9 (sum of tax included: 4,32 EUR)

This fits and works correctly in CS-Cart. :+1: :+1: :+1:
But if the delivery country changes to Germany:

Austrian product with delivery country Germany to 10117 Brandenburg (19%):

Original product price: EUR 15,- (20% tax with 2,5 EUR included)
Correct product price:
EUR 15/1,20 = EUR 12,5 Price without tax.
EUR 12,5 * 1,19 (for Germany) = 14,88 (19% tax with 2,38 EUR included)

Original shipping: EUR 10,90 (20% tax with 1,82 EUR included)
Correct shipping:
EUR 10,90/1,20 = EUR 9,08 Price without tax.
EUR 9,08 * 1,19 (for Germany) = 10,81 (19% tax with 1,73 EUR included)

Correct tax included (for destination country Germany) = EUR 3,55
Correct shopping cart total (for destination country Germany) = EUR 25,69

Not EUR 25,9 or 15,9 or 10,9 or 4,13 :-1: :-1: :weary: :tired_face:
This is completely wrong and a very serious bug.

I am using the last current version.

In my opinion there is a field missing in the backend, with which tax rate from which country the product price was entered, so that cs-cart can calculate the correct taxes in the shopping cart. How hard can it be?

So, if I get it right, the prices incl VAT keep the same? For some (many) stores this would actually work the best:

A product costs 15 euro incl VAT. Say we want this price to be 15 Euro incl vat in Germany as well as Austria. In your case, If a German customer orders, the price excl vat could be raised slightly (more profit for you and keeping the same nice price of 15 euro instead of 14.88 for the customer).

Is it doing what I wrote above? Or something else again entirely?

UPDATE: I was only just now able to see your gif. I can’t click it to see it larger but copied and pasted the url. This looks indeed very strange… I would post this in the bugtracker.

Yes, the prices including tax remain the same at checkout, although this cannot/must not be the case. For this small amount it is only a few cents, but for products over EUR 100,- it is already a few Euros and it is forbidden according to EU regulation.

I have discussed this entirely with Simtech and the changes for my multi-vendor installation here would be between USD 4500 and 8000.

However, I don’t see that in my area as this is a clear bug on the part of CS-Cart. The tax and price calculation when using prices with tax is wrong.

I asked here: Eu Vat One Stop Shop - #2 by gijoy which seems to be related.

1 Like

@CS-Cart_team What is your opinion on this topic? :thinking:

I asked similar back in August, and the answer was basically the way it worked form em was a bug (but I was happy it worked that way for 12 years) so they said they fixed a 10 year old bug that no one was bothered about and when they did, it breaks for people like us.

@johnbol1 I’m afraid i’ve lost track of which part of the post is considered a quote and which is not. But do i understand correctly that they also referred you to simtech for a bug to get a modification?

sorry yes, I had a problem getting the [quote] tags to work

Hello, @ronnydee.

First of all, thank you for the detailed explanation and especially the GIF. It demonstrated the issue perfectly and was extremely helpful. I couldn’t have asked for more info.

It’ll take me a wall of text to address all the points brought up in this topic. So I’ll put the important part here, at the beginning. Unfortunately, I don’t think I can classify it as a “bug”. As in, “something that absolutely doesn’t work as designed, and that we guarantee to fix within 45 days”.

I’ll explain why below.

Currently, CS-Cart price mechanism works this way:

  • There is the product price itself.

  • There are two types of taxes (depending on whether the tax has the “Price includes tax” checkbox ticked):

    • Taxes included in the price. We assume that the product price you enter already includes this tax. Its value changes depending on the tax amount.

      In CS-Cart 4.15.1, we fixed an old and oft-brought-up issue: when the price was included in the tax, it wasn’t subtracted for tax-exempt customers (i.e. legal entities or someone outside the EU).

      This change didn’t affect countries, because some of our clients wanted to keep the single price across all EU countries (even though the rates differ per country). They probably wanted it to be extra-safe and avoid any hint of price discrimination.

      Besides, it’d be fair to show actual prices to German customers everywhere (not only at checkout).And that change is technically huge, and will affect product filters, discount percentages, and many other aspects of CS-Cart. We’d also have to consider possible performance issues.

    • Taxes not included in the price. They can be displayed on the product, category, and checkout pages as an addendum to the price.

      The way I see it, they could also work for your situation, if prices on the product page weren’t like

      ($110.00 incl. tax)

      But rather:

      $110 incl. tax

      That way, you’d be able to have a different price for Germany and Austria depending on the tax. But again, product filters, promotions, etc. would need to be “taught” that it’s not $100, but rather $110. That’s a big change.

Currently the product price (and what the customer actually pays) stays the same for, say, Austria and Germany at checkout. It’s the displayed size of the tax that changes at checkout. Just as @ronnydee has shown on the GIF.

The price decreases by the amount of the tax only if the customer has the “Tax exempt” checkbox. Previously that wasn’t the case; that’s a topic that was brought up back in the day very often.

Fixed, the post should look better now.


I checked the GIF again, and indeed I also agree with Ikoshkin and this would actually work perfectly for me… @ronnydee the gross price IS changing, right? When the tax for Germany changes. Because less taxes are included in the calculation. So… you can keep your nice price of 15 euro for the product for both Austria, Germany, and other EU countries, and cs-cart will automatically change the included amount of tax according to the countries tax rate.
This is in full compliance with EU law as far as I can tell. There is no price discrimination between countries, and the amount of tax included per order is correct and can go to the OSS system like this without any edit. Or am I missing something?

I see what you are doing as well (calculating it from your Austrian brutto price), but I think cs-carts way makes more sense… because you won’t have weird / ugly prices (which sell less) like in this case a 14.88 product for a German customer. It will just be 15 euro as well and the tax included will be a little bit less. Another positive thing is the price the customer will pay in the end doesn’t change when cs-cart knows the customers is from another country, which might scare away customers. Imagine someone shopping, seeing a product for 15 euro, then logging in as an Italian customer and suddenly have to pay more. That would reduce your conversion rate a lot.


Oh, I totally forgot the “keeping the prices beautiful (and uniform)” part. Thanks for reminding me of that. Right now, only tax-exempt customers might get strange-looking prices at checkout (but “much cheaper”, and hence “beautiful too”) :slight_smile:


Hi guys,

i’m sorry that my answer took a while, but i clarified it with the responsible authorities on the side. Indeed, you are allowed to display the same gross price everywhere and the tax behind it is allowed to change. It’s just that the trader has to be aware that his profit margin is variable as a result.

In this respect, the solution is acceptable to me, even if i personally find it strange.

Thank you for the great discussions, answers and views.
Has helped me a lot :slightly_smiling_face:

Best regards

1 Like

We are working on a B2B marketplace.
The Tax-exempt is based on the sellers country and the buyers country.

  1. Seller in Poland (23% VAT) - Buyer in Germany = 0% VAT on product & shipping
  2. Seller in Poland (23% VAT) - Buyer in Poland = 23% VAT on product & shipping

The Tax-exempt option (an option that can only be installed on individual customers
seperatly only, and not user groups?) is in this case useless, right?

Because the tax-exempt option deduct VAT on the purchase, but what if the Seller & Buyer
is in the same country - where VAT should be applied?
How does the Tax-exept option know when to apply or deduct VAT?

For the moment, the “Tax-exempt” setting is indeed applicable to individual users, not groups. By itself, the setting doesn’t know when to apply or deduct VAT. It is just the mechanism for doing so, which we improved in 4.15.1. Because without it, there was no point going further with taxes.

Whether on not a customer is VAT exempt depends on a lot of factors. Some of our clients requested VAT number validation through VIES, and it also depends on the country of seller and buyer, as you pointed out.

This could warrant a separate add-on (something that we may consider for a future version of CS-Cart). For the time being, I’ve found at least one such add-on at our Add-on Market:

Unfortunately, its developers don’t seem to sell it through our marketplace, so I can’t say for sure if they still offer it or have updated it for the latest versions. But if they’re still around, it may be worth a shot.


We have this addon, works… Ok.
They are working with an update since it’s not compatiblee with the core/theme (latest version) at the moment.

As for the future, a connection to VIES is the best option to go - also the safest.
I belive this function (together with real invoices for Marketplace Fee by Stripe payments (Destenation charges) as well), is the focus points of CS-cart. Tax/VAT is an very important part, if you shall be abel to call it a B2C & B2B marketplace software.

Oh I wish so much cs-cart would take the VAT much more seriously. We have done so much custom work in this regard.
Also indeed a VIES lookup etc etc. Since proper vat handling is not native it keeps on the level of being workarounds and makes us seriously doubt our future with cs-cart.