Skip to content
Back to News
Changelog

SDK 5.11.0 reads where a French payment report stands, and the DGFiP leg of a French send

sdkapi

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.