Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clean up tax categories #267

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

noplisu
Copy link
Contributor

@noplisu noplisu commented Apr 12, 2024

Dependencies

This PR is a dependency for invopop/gobl.ksef#14

Pull Request Summary

To handle additional tax categories we need to clean up tax categories and extensions. We want to handle tax categories for:

standard                      - tax.RateStandard
reduced                       - tax.RateReduced
super reduced                 - tax.RateSuperReduced
taxi                          - tax.RateSpecial + ExtKeyKSeFVATSpecial{taxi}
inside Poland 0%              - tax.RateZero
inside EU 0%                  - tax.RateZero
outside EU 0%                 - tax.RateZero
tax exempt                    - tax.RateExempt
tax not applicable outside EU - TaxRateNotPursuant
tax not applicable inside EU  - TaxRateNotPursuant

Additional values to determine which case it is will be determined in the gobl.ksef package

When do we use the zero tax rate

The regulations indicate situations in which a business entity may apply a 0% VAT rate for sales. It is essential for the seller to be an active VAT taxpayer. The 0% rate does not mean exemption from taxation. Sales made with a 0% VAT rate are still considered taxable. Despite no tax due, sales at a zero VAT rate should be reported in the VAT declaration. The 0% rate can be applied, among others, for the following activities:

  • Intra-Community Supply of Goods (ICS),
  • export of goods,
  • services related to maritime and air transport.

When do we use the tax exempt tax rate

The "ZW" VAT invoice is used by entrepreneurs who are not active VAT taxpayers, are exempt from taxation on goods and services on a subjective basis, or are active VAT taxpayers who provide VAT-exempt services. The "ZW" VAT invoice used by entrepreneurs for the sale of goods or services rendered does not allow for the deduction of VAT on purchases covered by "ZW". Activities exempt from tax include, for example:

  • delivery of own agricultural products,
  • educational services,
  • social assistance services,
  • financial and insurance intermediary services,
  • services related to sports and physical education.

When do we use the tax not applicable tax rate

The entrepreneur who includes the annotation "NP" in the field corresponding to the VAT rate on the invoice indicates that the sale to which the entry refers is not subject to taxation in Poland. The designation "NP" is an abbreviation for the phrase "not subject to." This situation occurs, for example, in the case of entrepreneurs who provide services related to export for foreign customers. Taxation will occur in the buyer's country. The "NP" annotation allows for the settlement of VAT on purchases covered by the entry.

@noplisu noplisu force-pushed the gl-refactor-tax-rates branch 2 times, most recently from 8b110a9 to 83aa114 Compare April 15, 2024 11:30
Comment on lines 49 to 50
i18n.EN: "Inter european trade",
i18n.PL: "Handel wewnątrzwspólnotowy.",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems to me that the word "trade" is used less often in this context and it is more about "transactions". I was inspired by this Polish website.

Suggested change
i18n.EN: "Inter european trade",
i18n.PL: "Handel wewnątrzwspólnotowy.",
i18n.EN: "Intra-EU Transactions",
i18n.PL: "Transakcje wewnątrzwspólnotowe",

I would wonder if this is a change in the right direction. I mean is the expansion of the shortcut:

WDT - Wewnątrzwspólnotowa dostawa towarów

Maybe we should keep WDT and use the above description?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't like the idea of keeping WDT because it is Polish specyfic shortcut and we would prefer to keep things more international. It is also specific for transporting goods where I want to make it more generic.

Copy link

@torrocus torrocus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally OK. It's worth considering the right names/descriptions.

@noplisu noplisu force-pushed the gl-refactor-tax-rates branch 2 times, most recently from be63c51 to c6ddedf Compare April 17, 2024 09:20
regimes/pl/extensions.go Outdated Show resolved Hide resolved
regimes/pl/extensions.go Outdated Show resolved Hide resolved
regimes/pl/extensions.go Outdated Show resolved Hide resolved
Copy link
Collaborator

@samlown samlown left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It strikes me that all of these things could be determined from the situation of the document... it might help to add examples.

@@ -34,34 +34,43 @@ var extensionKeys = []*cbc.KeyDefinition{
},
},
{
Key: ExtKeyKSeFVATZero,
Key: ExtKeyKSeFVATRegion,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could this not be determined from the customer's country?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably in most cases we could, but KSeF allows it not to be the case because it is more related to where the goods or services are provided than to who they are provided to.

To handle additional tax categories we need to clean up tax categories
and extensions. We want to handle tax categories for:
standard                      - tax.RateStandard
reduced                       - tax.RateReduced
super reduced                 - tax.RateSuperReduced
taxi                          - tax.RateSpecial + ExtKeyKSeFVATSpecial{taxi}
inside Poland 0%              - tax.RateZero + Supplier and Customer l10n.PL
inside EU 0%                  - tax.RateZero + Supplier or Customer in a EU country
outside EU 0%                 - tax.RateZero
tax exempt                    - tax.RateExempt
tax not applicable outside EU - TaxRateNotPursuant
tax not applicable inside EU  - TaxRateNotPursuant + Supplier or Customer in a EU country
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