Reporting

Submit a French B2C report

Submit French daily sales or payment totals for transactions with private individuals.

POST
/api/v1/{companyId}/reporting/fr/b2c

Submit French daily sales or payment totals for transactions with private individuals. You do not need to create or submit a regulatory file yourself.

Use a sales report for the normal daily transaction totals, regardless of when customers pay. This endpoint accepts one sales summary per day, category and currency. The current integration supports taxable goods and taxable services.

Use a payment report only as an additional report for services using cash-basis VAT (TVA sur les encaissements), where VAT becomes due when the customer pays. Submit the sales report as usual, then submit the payment report for the day payment is received. Payment reports are only accepted for companies registered with VAT due on payment.

The company must be registered for French e-reporting first, through PUT /:companyId/reporting/fr/declarant. Reports for playground and test-network teams are recorded but not filed.

Choose a new, unique reference for every report, including corrections and cancellations. Retrying the exact same request with the same reference is safe: it returns the report filed the first time instead of filing a second one. A correction or cancellation acts on the report identified by the data in the request, and carries the optional action field.

A report is matched on the declarant and on the data that identifies the operation, and never on the reference: an invoice report and its payments on the invoice number, a daily sales total on the day, category and currency, and a daily payment total on the day and currency. Neither the issue date nor the payment date is part of how an invoice or its payment is matched. A correction replaces the report it matches in full, so send the complete report rather than the fields that changed, and a cancellation carries the complete report as well.

Both are refused with a 409 once the filing for that period has been assembled, which happens after the period ends rather than on the last day itself, and can happen before the report shows as filed. From then on the data of that period is with the tax administration: a new report for that period can still be submitted and is carried by a corrective filing, but changing or withdrawing a report that is already filed is done by the reporting service on request. Contact support with the reference of the report on file and its period.

When the reference of an earlier report is reused, the earlier report is returned with duplicate: true and a warning, and nothing is filed: the correction or cancellation still has to be sent under a new reference.

Follow a report through the reporting block of its document. It is final once final is true: filed with outcome code 300, superseded, or rejected. A report that shows as filed with an empty outcome code or 500 is still being processed by the tax administration.

A submitted report is recorded alongside your sent documents and counts towards your document quota.

Authorization

AuthorizationBasic <token>

Basic API key authentication. Create a new API key and secret in the Recommand dashboard.

In: header

Path Parameters

companyId*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Choose a sales report for normal daily B2C transaction totals. Choose a payment report only as an additional report for service payments using cash-basis VAT.

The normal daily report for sales to private individuals. It records the sale date, category, transaction count, amounts excluding VAT, and VAT totals. Submit it regardless of whether customers paid immediately or will pay later. This does not send invoices to consumers. The current integration supports taxable goods and taxable services only. A day, category and currency are reported once; use action: correct with a new reference to replace that report.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/api/v1/string/reporting/fr/b2c" \  -H "Content-Type: application/json" \  -d '{    "reference": "SALES-2026-07-01-GOODS",    "type": "sales",    "date": "2026-07-01",    "category": "goods",    "taxExclusiveAmount": "10000.00",    "taxAmount": "2000.00",    "transactionCount": 42,    "vatBreakdown": [      {        "percentage": "20.00",        "taxableAmount": "10000.00",        "taxAmount": "2000.00"      }    ]  }'
{  "success": true,  "id": "string",  "duplicate": true,  "warning": "string"}