Skip to content

Conversation

@fthobe
Copy link
Contributor

@fthobe fthobe commented May 7, 2025

This is a first step to incorporate taxes into offers laying the ground work to define acceptance of sales tax reductions.

In many jurisdictions there are several reasons to be exempted from sales tax. Below some examples:

  • in many countries people with disability receive sales tax / vat discount (eg Italy blind people 4% instead of 22%);
  • the entire European union supports VAT exemption for businesses dealing directly (eg one company selling a service to another);
  • in the US sales tax can be exempted in many cases between businesses.

This is achieved through two booleans on offers:

  1. acceptsTaxExemptionsDisability allows businesses to markup disability sales tax reductions;
  2. acceptsTaxExemptionsBusiness allows businesses to markup B2B sales tax reductions;

This PR introduces the ability to markup sales tax exemption support for merchants.

Concerns (but does not solve): #380

In many jurisdictions there are several reasons to be exempted from sales tax. Below some examples: 

- the entire European union supports VAT exemption for businesses dealing directly (eg one company selling a service to another); 
- in the US sales tax can be exempted in many cases between businesses;
- in many countries people with disability receive sales tax / vat discount (eg Italy blind people 4% instead of 22%).

This PR introduces the ability to markup sales tax exemption support for merchants.
@fthobe fthobe changed the title Added support for VAT / sales tax reduction for Offers boolean to indicate sales tax exemption support for offers May 7, 2025
@fthobe
Copy link
Contributor Author

fthobe commented May 8, 2025

@alex-jansen this is a proposal to add some groundwork for VAT (the ability of the merchant to process orders without VAT / Sales tax).

Examples would be:

It would be for me a sensible first step, I have some questions though:

  1. locally sales taxes have different names (VAT in Europe, GST in India and many Asian countries, Sales Tax in the US), how could we account for the differences in naming this?
  2. What would be a good comment in your opinion?

It's a very atomic change, should it never the less go into pending first?

@github-actions
Copy link

This pull request is being nudged due to inactivity.

@github-actions github-actions bot added the no-pr-activity Discuss has gone quiet. Auto-tagging to encourage people to re-engage with the issue (or close it!). label Aug 19, 2025
@MatthiasWiesmann
Copy link
Contributor

I really don't think adding a flurry of booleans to Offer is the way to go.

I would suggest we define a separate object named TaxInformation or something similar which would contain various tax bits, but also meta-information, in particular:

  • Who this tax information applies to: where (country codes, zip codes in the US), who (people with disabilities, business, schools, etc). The second one would be a enum and that can be extended as we discover that shops painted red have a discount.

@github-actions github-actions bot removed the no-pr-activity Discuss has gone quiet. Auto-tagging to encourage people to re-engage with the issue (or close it!). label Dec 2, 2025
@fthobe
Copy link
Contributor Author

fthobe commented Dec 16, 2025

I really don't think adding a flurry of booleans to Offer is the way to go.

I would suggest we define a separate object named TaxInformation or something similar which would contain various tax bits, but also meta-information, in particular:

  • Who this tax information applies to: where (country codes, zip codes in the US), who (people with disabilities, business, schools, etc). The second one would be a enum and that can be extended as we discover that shops painted red have a discount.

Hey,

Ok, I am struggling in between what I'd like to see, what you'd like to see and what's possible:

Generally calculating taxes and shipping and displaying it on the frontend is "complicated". There are three approaches:

  • In the US you calculate taxes after you have a shipping address for consumers and B2B alike as even a zip code can be insufficient to calculate taxes precisely (yes, people have even been fined for that). There's an entire ecosystem of companies calculating taxes for eCommerce.
  • in Europe for consumer and mixed shops you usually calculate taxes for your country and if you ship intracomunity (other EU countries) or outside EU, you recalculate after shipping address
  • on B2B shops you don't show taxes at all in Europe as you assume businesses either do not pay them or pay at checkout and get them back.

Your multiple taxes system is great in theory, I just don't believe it's relevant for schema or structured data as the info will not be available.

@alex-jansen
Copy link
Contributor

The problem is still that these tax exemptions are often locale-dependent (e.g., as you mentioned the reduction for the blind in Italy), so should be specifiable by country (similar to how shipping costs are specified by destination). Just having a single exemption boolean at the Offer level cannot generally be sufficient.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants