How should GNU Taler handle taxes?

A good question was raised in person about taxes handling in GNU Taler so let me put it here.

For now, the Taler Merchant Backend doesn’t embed an internal logic for managing taxes because of the complexity of the topic and considering that this question is already handled by ERPs and e-Commerce platforms.

Now, how should the Merchant Backend handle this?

cc @fdold @oec @how

I would expect the backend to be able to accept a known series of taxes (e.g., per-country and per-product-category VAT percentages). They should be stored, like I believe they are currently, as absolute value in a JSON field.

The Merchant backend UI should indeed make visible the taxes from a legal perspective)

Now, my use-case has a

With my experience about taxes in Germany (based on my contribtions to Tryton ERP), I strongly suggest to not open this can of worms. Taxes are soooo complicated, you can not imagine.

For example in Germany VAT depends on (AFAIR):

  • the product or service
  • the registered office of the customer: in Germany, in the EU (or associated), other countries
  • the delivey address (country): same
  • whether customer has provided a VAT-ID
  • and a lot of special rules
2 Likes

I agree with @htgoebel: determining which tax applies is out of scope for GNU Taler. That must be done by the merchant prior to the purchase.

And regarding @how’s suggestion: GNU Taler communicates the tax details to the customer during purchase, as part of the contract terms, see the definition of a Product in an Order in the merchant API. That is, when a wallet “claims an order” (in the GNU Taler lingo), it will receive the contract terms as a response, potentially containing the tax details per product.

These tax details need to come from somewhere. If the merchant uses GNU Taler’s merchant backend with the included implementation of a product inventory, there the taxes can be defined per product:

If the product details come from another E-commerce system with Taler support, the tax must also be set in that system.

(NB: It turns out that GNU Taler’s own point-of-sales app, where a merchant use pre-defined products from a json-file, currently only allows to set a price for a product, but no tax. I have filed a bug.)

2 Likes