Skip to content

Implement Cyprus tax regime - #934

Draft
xMigma wants to merge 5 commits into
invopop:mainfrom
xMigma:feat/cyprus-regime
Draft

xMigma wants to merge 5 commits into
invopop:mainfrom
xMigma:feat/cyprus-regime

Conversation

@xMigma

@xMigma xMigma commented Aug 20, 2026

Copy link
Copy Markdown

Summary

  • VAT (Value Added Tax / ΦΠΑ) with the four rates currently in force
    and their historical values:
    • 19% general
    • 9% higher reduced
    • 5% lower reduced
    • 3% super-reduced
  • Cyprus TIN normalization and format validation.
  • Invoice requirements and prescribed wording for special VAT scenarios.
  • Tests, an example invoice, generated regime data, and a changelog entry.

Implementation notes

  • Corrections remain unrestricted because the available guidance describes
    credit notes but does not establish that all corrections must use a specific
    document type.
  • The EUR 85 simplified retail invoice threshold is not enforced because GOBL's
    generic simplified tag does not represent all its eligibility conditions.
  • VAT representative details are not modelled because the invoice schema has no
    dedicated tax representative party.
  • TIN validation checks the published format only. The final letter is a control
    character, but no public validation algorithm was found.

Feedback on these scope decisions would be appreciated.

Sources

Pre-Review Checklist

  • Opened this PR as a draft
  • Read the CONTRIBUTING.md guide.
  • Performed a self-review of my code.
  • Added thorough tests with at least 90% code coverage.
  • Modified or created example GOBL documents to show my changes in use, if appropriate.
  • Added links to the source of the changes in tax regimes or addons, either structured or in the comments.
  • Run go generate . to ensure that the Schemas and Regime data are up to date.
  • Reviewed and fixed all linter warnings.
  • Been obsessive with pointer nil checks to avoid panics.
  • Updated the CHANGELOG.md with an overview of my changes.
  • Marked this PR as ready for review.

And if you are part of the org:

  • Requested a review from Copilot and fixed or dismissed (with a reason) all the feedback raised.
  • Requested a review from @samlown.

@codecov

codecov Bot commented Aug 24, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 97.26027% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 95.00%. Comparing base (8652979) to head (2e9df00).
⚠️ Report is 4 commits behind head on main.

Files with missing lines Patch % Lines
regimes/cy/tax_identity.go 86.66% 1 Missing and 1 partial ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             main     #934   +/-   ##
=======================================
  Coverage   94.99%   95.00%           
=======================================
  Files         327      330    +3     
  Lines       17732    17805   +73     
=======================================
+ Hits        16845    16916   +71     
- Misses        547      548    +1     
- Partials      340      341    +1     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@samlown samlown added the regime Related to a specific regime. label Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

regime Related to a specific regime.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants