Skip to content

Clean up tax categories#267

Closed
noplisu wants to merge 2 commits into
invopop:mainfrom
noplisu:gl-refactor-tax-rates
Closed

Clean up tax categories#267
noplisu wants to merge 2 commits into
invopop:mainfrom
noplisu:gl-refactor-tax-rates

Conversation

@noplisu
Copy link
Copy Markdown
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 thread regimes/pl/extensions.go Outdated
Comment on lines +49 to +50
i18n.EN: "Inter european trade",
i18n.PL: "Handel wewnątrzwspólnotowy.",
Copy link
Copy Markdown

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
Copy Markdown
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
Copy Markdown

@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
Comment thread regimes/pl/extensions.go Outdated
Comment thread regimes/pl/extensions.go Outdated
Comment thread regimes/pl/extensions.go Outdated
@noplisu noplisu force-pushed the gl-refactor-tax-rates branch from c6ddedf to cb4997e Compare April 17, 2024 15:18
Copy link
Copy Markdown
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.

Comment thread regimes/pl/extensions.go Outdated
},
{
Key: ExtKeyKSeFVATZero,
Key: ExtKeyKSeFVATRegion,
Copy link
Copy Markdown
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
Copy Markdown
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.

@noplisu noplisu force-pushed the gl-refactor-tax-rates branch from cb4997e to 0488855 Compare April 22, 2024 08:09
noplisu added 2 commits April 23, 2024 16:42
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
@noplisu noplisu force-pushed the gl-refactor-tax-rates branch from 0488855 to cedb0f9 Compare April 23, 2024 14:55
@noplisu noplisu requested a review from samlown April 24, 2024 08:37
@samlown
Copy link
Copy Markdown
Collaborator

samlown commented Apr 28, 2025

Closing this one. Hopefully Poland will sort out what they want to do with electronic invoices eventually.

@samlown samlown closed this Apr 28, 2025
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