Workflow
This page describes the end-to-end workflow for submitting e-reporting data (flows 10.1 - 10.4) and for tracking the resulting report through to its submission to the Portail Public de Facturation (PPF).
Prerequisite: VAT regime configuration
Before any transaction can be reported, the VAT regime of the legal entity (SIREN) must be configured. The reporting frequency (monthly, bimonthly, etc.) and the submission deadlines to the PPF are derived from this setting.
The VAT regime can be set in either of two ways:
- through the guided KYC/KYB onboarding procedure on the web dashboard;
- through the API:
PUT /legal-entities/{legalEntityUuid}/vat-regime
{
"vatRegime": "MONTHLY"
}
1. Submit a transaction
Each transaction (or transaction payment) is submitted individually through the endpoint matching its flow:
| Flow | Content | Endpoint |
|---|---|---|
| 10.1 | B2B international invoice data | POST /legal-entities/{legalEntityUuid}/b2b-transactions |
| 10.2 | Payment of a B2B international invoice | POST /legal-entities/{legalEntityUuid}/b2b-payments |
| 10.3 | B2C transaction data | POST /legal-entities/{legalEntityUuid}/b2c-transactions |
| 10.4 | Payment of a B2C transaction | POST /legal-entities/{legalEntityUuid}/b2c-payments |
Example - submit a B2C transaction
POST /legal-entities/{legalEntityUuid}/b2c-transactions
{
"transactionDate": "2023-01-01",
"transactions": [
{
"categoryCode": "TPS1",
"taxableTotalAmount": "100.00",
"taxTotalAmount": "20.00",
"taxDetails": [
{
"taxableAmount": "string",
"taxAmount": "string",
"percent": "20.0",
"taxCategoryCode": "S"
}
],
"currency": "EUR",
"taxPaymentOption": "invoice"
}
],
"registerId": "REG123",
"storeId": "STORE456",
"closureId": "CLOSURE789"
}
The call returns 202 Accepted with the identifier of the submitted transaction and its initial status:
{
"uuid": "019e7384-4322-7359-83ef-8e14833a7142",
"status": "WAITING",
"siren": "123456789",
"transactionDate": "2026-07-21",
"transactionCount": 5,
"registerId": "REG01",
"storeId": "STORE01",
"closureId": "CLO01",
"cancelledAt": "",
}
From this point, the transaction status evolves asynchronously.
2. Webhook events
Two webhook event types are available to track e-reporting activity end to end. Both are configured as usual through the event-destinations resource:
POST /event-destinations
{
"event": "ereporting.report.status",
"target": "https://example.com/webhooks/e-reporting",
"delivery": "webhook",
"status": "active",
"authType": "header",
"authKey": "X-Auth",
"authToken": "mysecret"
}
ereporting.entry.status
Tracks the status of each submitted transaction or payment (an "entry") and its association with a report. It fires both when an entry is accepted and assigned to a report, and when an entry is found invalid.
{
"eventId": "019e91c2-1a3f-7ab0-9c21-5824b2656b1a",
"eventType": "ereporting.entry.status",
"legalEntityUuid": "01990000-0000-7000-8000-000000000001",
"type": "b2b-transaction",
"entryUuid": "019e7384-03ca-75fe-a830-bbea235853b1",
"reportUuid": "019e7384-2243-7359-83ef-8e14833a7142",
"status": "ACCEPTED"
}
The type field identifies the kind of entry (b2b-transaction, b2b-payment, b2c-transaction, b2c-payment). When an entry is rejected as invalid, reportUuid is omitted and status reflects the rejection (REJECTED).
ereporting.report.status
Tracks the lifecycle of a report as a whole, from its creation up to its outcome at the PPF: CREATED, SUBMITTED, ACCEPTED, REJECTED. The event also carries the report's data when it is first created.
{
"eventId": "019e91b7-f799-7df7-a469-4824b2656b0e",
"eventType": "ereporting.report.status",
"legalEntityUuid": "01990000-0000-7000-8000-000000000001",
"reportUuid": "019e7384-2243-7359-83ef-8e14833a7142",
"status": "CREATED"
}
3. Read endpoints
Independently of the webhooks above, the reports and their content can be retrieved on demand at any time.
List reports for a legal entity
GET /legal-entities/{legalEntityUuid}/reports
[
{
"uuid": "019e7384-2243-7359-83ef-8e14833a7142",
"periodStart": "2026-01-01",
"periodEnd": "2026-01-31",
"status": "CREATED",
"submissionDeadline": "2026-02-10T08:00:00Z"
},
{
"uuid": "019c33ac-98a0-7239-985a-96e6c33ac8fa",
"periodStart": "2025-12-01",
"periodEnd": "2025-12-31",
"status": "ACCEPTED",
"submissionDeadline": "2026-01-10T08:00:00Z"
}
]
Filter the entries of a report
It's possible to retrieve the content of a report by filtering the collection endpoints by reportUuid, the identifier returned in the ereporting.entry.status webhook or in the entries themselves.
To reconstruct the full content of a report, the four endpoints must be queried separately (one per entry type) with the same reportUuid.