Exemption cause coherence and recurring generation conflict
Three operations change: the invoice preview accepts an optional exemption_reason, saving or issuing an invoice with a VAT-free header cause and taxed lines answers 422 exemption_cause_contradicts_taxed_lines, and generating a recurring invoice can answer a retryable 409 recurring_presentation_activation_changed.
24 October 2026 — This release adds one field to the PDF template preview, one new
422 error to the invoice operations that save or issue a draft, and one new retryable
409 to the manual generation of a recurring invoice. No operation is added or removed.
Operations in this release
| Operation | operationId | MCP tool | What changes |
|---|---|---|---|
POST /v1/companies/{company}/pdf-template-previews | public-api.v1.pdf_template_previews.create | preview_pdf_template | New optional field source.form.document.exemption_reason. |
POST /v1/companies/{company}/recurring-invoices/{recurring_invoice}/generate | public-api.v1.recurring_invoices.generate | generate_recurring_invoice | New retryable 409 recurring_presentation_activation_changed. |
PATCH /v1/companies/{company}/invoices/{invoice} | public-api.v1.invoices.update | update_invoice | New 422 exemption_cause_contradicts_taxed_lines. |
POST /v1/companies/{company}/invoices/{invoice}/issue | public-api.v1.invoices.issue | issue_invoice | New 422 exemption_cause_contradicts_taxed_lines. |
POST /v1/companies/{company}/invoices/{invoice}/send | public-api.v1.invoices.send | send_invoice | New 422 exemption_cause_contradicts_taxed_lines when the send issues a draft. |
POST /v1/companies/{company}/invoices/{invoice}/mark-sent | public-api.v1.invoices.mark_sent | mark_invoice_as_sent | New 422 exemption_cause_contradicts_taxed_lines when it issues a draft. |
Preview with an exemption cause
source.form.document.exemption_reason is optional and only applies to document_type invoice.
It is the exemption cause of the invoice header. The catalogue is published by GET /v1/tax-catalog.
- Its legal mention opens the automatic legal mentions of the preview, exactly as it does when the invoice is saved.
- Omitting it, or sending
null, previews the invoice without a cause. - An unknown cause, or a cause sent on a quote, proforma or delivery note, is rejected.
- The preview does not reject a cause that contradicts the VAT of the lines. Saving the invoice does, with the error below.
preview_pdf_template takes the same field in the same place.
New error: exemption_cause_contradicts_taxed_lines
A draft invoice whose header carries an exemption cause that declares the operation without VAT (the exemptions of articles 20 to 26 and 140 bis of the LIVA, non-subject operations and reverse charge) cannot have an operation line, other than a disbursement, with a VAT rate above zero.
The response is 422 with error.code business_rule_violation and error.subcode
exemption_cause_contradicts_taxed_lines.
param is lines.N.tax_rate and line_index names the line.
The v1 API does not accept the header cause when it creates or edits an invoice, but it does edit and
issue drafts created in the application that keep it. That is where the error can appear: on
PATCH /v1/companies/{company}/invoices/{invoice} and on the operations that issue a draft
(issue, send and mark-sent). Documents already issued do not change.
What to do:
- Set the VAT of the line named in
paramto 0 %, or remove the exemption cause from the invoice. - For a mixed invoice, with lines with and without VAT, do not use a header cause. Declare the exemption
on each exempt line with
lines[].exemption_reason. - Repeat the request. Nothing was changed by the rejected one.
New retryable conflict: recurring_presentation_activation_changed
While POST /v1/companies/{company}/recurring-invoices/{recurring_invoice}/generate generates the invoice,
the company can switch its presentation system on or off twice in a row. The operation then answers
409 recurring_presentation_activation_changed.
- Nothing was written. No invoice was created and no occurrence was consumed.
- Repeat the request. It is a retryable conflict, not a business-rule violation.
- Idempotency. The response is not stored for replay: repeating the call with the same
Idempotency-Keyruns the generation again and does not duplicate the invoice.
generate_recurring_invoice returns the same error, so an assistant only has to call the tool again.
The table below lists the operations of this release.
Updated endpoints6
| Endpoint | Description |
|---|---|
POST/v1/companies/{company}/pdf-template-previews | Create a PDF template preview |
POST/v1/companies/{company}/recurring-invoices/{recurring_invoice}/generate | Generate an invoice from a recurring template |
PATCH/v1/companies/{company}/invoices/{invoice} | Update an invoice |
POST/v1/companies/{company}/invoices/{invoice}/issue | Issue an invoice |
POST/v1/companies/{company}/invoices/{invoice}/send | Send invoice by email |
POST/v1/companies/{company}/invoices/{invoice}/mark-sent | Mark an invoice as sent |