Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.invopop.com/llms.txt

Use this file to discover all available pages before exploring further.

E-reporting is in active development. The action names and read endpoints may change before the September 2026 mandate. Track the hub readiness matrix for status.
E-reporting covers everything that is out of scope for regulated e-invoicing (B2C sales, cross-border B2B, and any flow where one party is not registered in the Annuaire). Instead of routing each invoice individually, you record each invoice and payment, Invopop generates a Flux 10 XML for each closed reporting window, and sends it to the PPF. Reports will use the fr-ctc-flow10-v1 add-on (in active development), distinct from the fr-ctc-flow2-v1 add-on used for e-invoicing.

Sub-flows

Each recorded document is classified into one of four sub-flows based on supplier and customer SIREN:
FlowScope
10.1International B2B invoices
10.2International B2B payments
10.3Domestic B2C invoices
10.4Domestic B2C payments

Registration

Reporting is enabled at the SIREN level, separately from the Annuaire registration. A party can be registered for e-invoicing, e-reporting, or both. The register workflow collects a signature (auto-approved in sandbox). Every invoice and payment recorded later is attached to and aggregated for this party.

How it works

1

Set State → processing

Marks the silo entry as “Processing”.
2

Sign agreement

Generates a signature link for the supplier to sign.
3

Wait for approval

Pauses until the agreement is approved.
4

Register party for reporting

Enables the party for reporting,
5

Set State → registered

Marks the silo entry as “Registered”.

France register party for reporting workflow

Registers a party for e-reporting and collects the e-mandate signature.

Picking a VAT regime

If you have a single supplier, or all your suppliers have the same cadence, you can configure the Register party for reporting to a specific cadence. For multiple suppliers (whitelabel use cases) where different suppliers have different cadence, pass it as a job argument with key vat-regime when creating the job. When not stated, the default is real_normal_monthly.
VAT regimeargs.vat-regime
Monthly Actual (default)real_normal_monthly
Quarterly Actualreal_normal_quarterly
Simplified VATsimplified
Non-Established Taxpayerfranchise
The cadence must match the regime registered with the tax office, if in doubt check with your local accountant.

Recording

Every invoice and payment that needs reporting goes through a single Record workflow. The action looks at the supplier and customer SIRENs and files the document into the right sub-flow (10.1 to 10.4) ready for the next report. Wire this workflow as the default for both bill/invoice and bill/payment in your workspace.

How it works

1

Set State → processing

Marks the silo entry as “Processing”.
2

Record document for reporting

Classifies the document (10.1 / 10.2 / 10.3 / 10.4) and stores it for the next report.
3

Set State → recorded

Marks the silo entry as “Recorded”.

France record document for reporting workflow

Records an invoice or payment as a Flux 10 row, ready for the next periodic report.

Payments and the underlying invoice

For international B2B payments (10.2), set lines[i].document on the payment to the invoice it settles. The minimum reference is the invoice number and issue date:
{ "code": "INVOICE-NUMBER", "issue_date": "2026-05-15" }
This is what tells the record action to file the payment as 10.2 rather than 10.4, and lets GOBL allocate the cashed amount across the invoice’s VAT rates for you. For B2C payments (10.4), omit document entirely. Specify the tax breakdown directly on the payment line.

Exemption reasons

Lines using exempt, reverse-charge, intra-community, export, or outside-scope rates must include a free-text reason. Add it to the invoice’s tax block:
{
  "tax": {
    "notes": [
      {"cat": "VAT", "key": "intra-community", "text": "Exonération article 262 ter I du CGI — livraison intracommunautaire"}
    ]
  }
}
The key must match the rate used on the line. Lines on standard or zero rates do not need a note.

Submitting reports

A separate workflow bundles the records for a closed reporting window into a single Flux 10 report and sends it to the PPF. Invopop runs it automatically on the cadence set by the VAT regime — you do not need to trigger it.

How it works

1

Set State → processing

Marks the silo entry as “Processing”.
2

Generate document for reporting

Bundles the closed window’s records into a single report.
3

Send document for reporting

Submits the report to the PPF and waits for the acknowledgement.
4

Set State → filed

Marks the silo entry as “Filed”.

France send document for reporting workflow

Generates a periodic report and submits it to the PPF.
Register this workflow’s UUID as rw_id in your gov-fr app config so Invopop knows which workflow to run on the schedule.
You can also trigger this workflow manually against any registered party — useful for testing, or to bring a party up to date after onboarding.

Disabling reporting

When a party should no longer be reported on, run the disable workflow. The party remains on file for audit purposes, but no new records are accepted and no new reports are generated. Previously filed reports are unaffected.

How it works

1

Set State → processing

Marks the silo entry as “Processing”.
2

Disable Party for reporting

Disables reporting for the party.
3

Set State → Void

Marks the silo entry as “Void”.

France disable reporting workflow

Disables e-reporting for a registered party.
To change a party’s VAT regime, disable first and re-register with the new vat-regime argument.

Reading what’s filed

Four read endpoints expose submission status and the raw report XML, all scoped to the party’s silo entry id: GET /v1/reports/:silo_entry_id
Summary per kind (current window, next deadline, last filed report)
GET /v1/reports/:silo_entry_id/periods
Paginated history of filed periods (filter with ?kind=tx or ?kind=py)
GET /v1/reports/:silo_entry_id/periods/:period_id
A single period’s metadata
GET /v1/reports/:silo_entry_id/periods/:period_id/xml
The raw report XML sent to the PPF

FAQ

For TVA, file via DGFiP’s portal — Invopop does not generate CA3 yet. For e-reporting (Flow 10): submit via your Plateforme Agréée — Invopop’s e-reporting workflow batches transactions per period and submits to the PPF.
TVA: DGFiP’s EDI-TVA XML schema. E-reporting Flow 10: a structured JSON/XML payload defined by the PPF specification (currently in beta). Invopop emits Flow 10 via the upcoming fr-ctc-flow10-v1 GOBL addon.
Flow 10 e-reporting: 3× per month (every 10 days) for B2C and cross-border transactions. Lifecycle status (CDAR): per event, near real-time. Specific deadlines depend on the supplier’s tax filing cadence (monthly/quarterly).
Flow 10 uses a JSON envelope wrapping aggregated transaction data, defined in the PPF technical specification. Lifecycle CDAR payloads are XML messages exchanged over Peppol with structured status codes.
More available in our France FAQ section