Skip to content

Refuse to issue an invoice without the details the law requires - #623

Open
clstaudt wants to merge 1 commit into
cancel-reminders-with-invoicefrom
refuse-invoice-without-mandatory-details
Open

clstaudt wants to merge 1 commit into
cancel-reminders-with-invoicefrom
refuse-invoice-without-mandatory-details

Conversation

@clstaudt

@clstaudt clstaudt commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Invoices and their EN16931 XML could go out without the seller's VAT or tax number, without either party's address, and, with an e-invoice profile on, without payment terms. The XML still passed schema validation, so nothing looked wrong.

  • Check: before an invoice, deposit, final invoice or reminder gets a number, Tuttle checks these details and names what's missing: "Add your VAT number or tax number and Central Services' address before issuing this invoice."
  • Outside the scope of VAT: the invoice may not show a VAT number (BR-O-02), so it needs the tax number.
  • E-invoice: the contract needs a payment term; 0 days counts.
  • IBAN and due date stay optional on the PDF. The XML's buyer address is now the one the PDF prints. The demo user gets a tax number.

馃 Generated with Claude Code

@clstaudt
clstaudt added this pull request to stack #608 October 18, 2026 20:21
An invoice went out without the seller's VAT number or tax number, or
without the seller's or the client's address, and nobody was told: the
PDF left the lines out, and the e-invoice XML still passed schema
validation. An e-invoice for a contract without a term of payment broke
EN16931 the same way.

Before an invoice, deposit invoice, final invoice or reminder is
created, Tuttle now checks these details and refuses with one message
that names what to add. With an e-invoice profile on, the contract's
term of payment is required too. An invoice outside the scope of VAT
needs the tax number, since it may not show the VAT number. The
e-invoice now states the address the PDF shows, which is the invoicing
contact's when it has one. The demo user gets a tax number for its
dollar invoices.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@clstaudt
clstaudt force-pushed the refuse-invoice-without-mandatory-details branch from 8f1e3a5 to f218b6d Compare October 20, 2026 13:25
@clstaudt

Copy link
Copy Markdown
Contributor Author

Review:

  • Which law?
  • The app does not enforce legal requirements, so do not refuse to issue, but raise a warning.

This branch has not been deployed

No deployments
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.

1 participant