New France e-invoicing mandate goes live September 2026 — our implementation is ready. See all mandates →
Real-Time Reporting

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.

Same base URL, same API key system as every Clearvo product. Spain SII submissions can run immediate (sent per-transaction) or batched (batch_auto / batch_review) — see Reporting obligations to configure which.
Real-Time Reporting

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 — List
curl https://api.clearvo.io/v1/tax/reporting-obligations \
  -H "x-api-key: csk_live_••••••••••••"
cURL — Enable Spain SII
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" }
    }
  }'
FieldValuesDescription
enabledbooleanEnabling requires effectiveFrom. Disabling never requires it, and is never gated on registration.
effectiveFromISO dateThe date the obligation starts applying. Required to enable
submissionModeimmediate | batch_auto | batch_reviewDefaults to batch_review on first enable. A change never affects an already-open batch — it applies from the next one.
Enabling 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.
Real-Time Reporting

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 — List batches awaiting review
curl "https://api.clearvo.io/v1/reporting-batches?status=ready_for_review" \
  -H "x-api-key: csk_live_••••••••••••"
MethodPathPurpose
GET/reporting-batchesList 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}/confirmApprove a batch_review batch for submission to AEAT now.
POST/reporting-batches/{id}/excludeRemove 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.

Real-Time Reporting

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.

MethodPathPurpose
GET/sii/reconciliationList reconciliation runs for the entity.
GET/sii/reconciliation/{id}Retrieve one run's full comparison detail.