The gateway gained three fields for French invoices this week. Until today the SDK dropped them: they existed in the HTTP response and never reached your code. 5.11.0 copies them. Nothing is removed, and no call changes its result except the date check below.
Where a payment report stands
markAs(id, "paid") files the collection report French VAT on services
requires. Its answer used to be the last thing you saw. invoices.getStatus(id)
now carries paymentReport once a report exists:
await peppol.invoices.markAs(invoiceId, "paid");
const { paymentReport } = await peppol.invoices.getStatus(invoiceId);
// { status: "processed", id: "6e675e95-…", updatedAt: "2026-09-27T17:02:05.003Z" }
submitted means the provider accepted the report, processed that it
processed it. Neither says the tax administration received it: that leg has
not been observed yet, even in the provider's sandbox. failed is a refusal you
can retry. interrupted means an attempt got no answer and the report may
already be filed: calling markAs again within 30 minutes of the first attempt
returns that report instead of filing another. After that, and for
unconfirmed or provider_failed, contact support; calling again files
nothing. The status is typed as an open union, so a value added later reaches
you rather than being dropped. Details:
payment reporting.
The DGFiP leg of a French send
A French regulated send has two legs: the invoice's data reported to the
administration, and the delivery to your buyer. With includeEvidence,
invoices.getStatus(id) now carries clearing once the first leg happened:
const { clearing } = await peppol.invoices.getStatus(invoiceId, { includeEvidence: true });
// { authority: "FR-DGFiP", network: "fr-dgfip", reference: "FFE0111A_PPF250_…" }
It says the administration was informed, never that the buyer received the
invoice. The flow itself is served by invoices.getAs(id, "clearing"); a
non-French send answers 404.
The date of the credited invoice
A credit note can now name the issue date of the invoice it credits, with
invoiceReferenceDate (YYYY-MM-DD) next to invoiceReference. It is optional
in general and required on a French credit note, whose rule BR-FR-CO-05
ignores a reference without its date; the API refuses such a credit note with
400 invoices.france_credit_note_reference_invalid before anything is sent.
validateInvoice() now checks its format:
validateInvoice({ ...creditNote, invoiceReferenceDate: "01/09/2026" }).errors;
// 5.10.0 → []
// 5.11.0 → [{ field: "invoiceReferenceDate",
// message: "Invalid credited invoice date format: \"01/09/2026\"",
// suggestion: "Use ISO 8601: YYYY-MM-DD" }]
Upgrade with npm install @getpeppr/sdk@5.11.0. The full list is in the
CHANGELOG.md shipped with the package.