Real-Time Reporting
Real-Time Reporting covers regimes where transaction data must reach a tax authority within a mandated window, separately from — or in aggregate alongside — e-invoicing: Spain's SII, and France's B2C e-reporting obligation. It's part of the same "Tax Reporting" solution and the same API surface as E-Invoicing; enabling a regime is a data toggle, not a new integration.
immediate (sent per-transaction) or batched (batch_auto / batch_review) — see Reporting obligations to configure which.Reporting obligations
Reporting obligations are user-enabled with an explicit start date — never auto-derived from your registrations or invoice data. Today there are two regime codes: es_sii (Spain SII) and fr_ereporting (France B2C e-reporting).
curl https://api.clearvo.io/v1/tax/reporting-obligations \
-H "x-api-key: csk_live_••••••••••••"
curl https://api.clearvo.io/v1/tax/reporting-obligations \
-X PATCH \
-H "x-api-key: csk_live_••••••••••••" \
-H "Content-Type: application/json" \
-d '{
"obligations": {
"es_sii": { "enabled": true, "effectiveFrom": "2026-01-01", "submissionMode": "batch_review" }
}
}'
| Field | Values | Description |
|---|---|---|
enabled | boolean | Enabling requires effectiveFrom. Disabling never requires it, and is never gated on registration. |
effectiveFrom | ISO date | The date the obligation starts applying. Required to enable |
submissionMode | immediate | batch_auto | batch_review | Defaults to batch_review on first enable. A change never affects an already-open batch — it applies from the next one. |
es_sii or fr_ereporting requires a current STANDARD tax registration in that country — otherwise the request is rejected with 400 REGISTRATION_REQUIRED and a fixUrl to add one via Compliance Radar's registration endpoint.Spain SII reporting batches
An entity on batch_auto or batch_review doesn't send each registro to AEAT individually — POST /invoices and POST /tax/calculate (with commit: true) return 202 ACCUMULATED with a batchId, and the record joins that batch instead.
curl "https://api.clearvo.io/v1/reporting-batches?status=ready_for_review" \
-H "x-api-key: csk_live_••••••••••••"
| Method | Path | Purpose |
|---|---|---|
| GET | /reporting-batches | List batches — filter with status: open, closed, ready_for_review, submitted, filed. |
| GET | /reporting-batches/{id} | Retrieve one batch, including its record list and report-by deadline. |
| POST | /reporting-batches/{id}/confirm | Approve a batch_review batch for submission to AEAT now. |
| POST | /reporting-batches/{id}/exclude | Remove a record from an open batch before it's submitted. |
Every batch carries its own report-by deadline (the earliest record's AEAT due date) and a server-computed overdueLabel once that's passed. Subscribe to the reporting_batch.* webhook events — ready-for-review, deadline-approaching, deadline-passed, overdue — instead of polling.
SII reconciliation
Reconciliation compares what Clearvo submitted to AEAT against AEAT's own records for a period, surfacing any registro AEAT shows that Clearvo doesn't (or vice versa) before it becomes a filing discrepancy.
| Method | Path | Purpose |
|---|---|---|
| GET | /sii/reconciliation | List reconciliation runs for the entity. |
| GET | /sii/reconciliation/{id} | Retrieve one run's full comparison detail. |