Anyone who has managed electronic invoicing in Spain knows the rhythm: create an invoice, submit it to the AEAT’s SII system, wait for the response, move to the next one. When you’re filing a handful of invoices per week, it’s a minor annoyance. When you’re processing hundreds per month — which is routine for any mid-sized Spanish business — the one-at-a-time approach becomes a genuine bottleneck.
Odoo has quietly changed how its SII connector works. Invoices are now chunked into batches and submitted to the tax authority in groups rather than individually. The web service response handling has been rebuilt to map results back to individual documents within each batch, so businesses still get per-invoice status without the per-invoice overhead.
How Spain’s SII System Works
The Suministro Inmediato de Información(SII) is Spain’s near-real-time invoice reporting system, operated by the AEAT (Agencia Estatal de Administración Tributaria). Since 2017, businesses above a certain revenue threshold must report every invoice to the tax authority within four days of issuance. The system accepts structured XML submissions through a SOAP web service, and each submission receives a response indicating success, partial acceptance, or rejection with specific error codes.
The SII API was always capable of receiving multiple invoices in a single call. But many ERP connectors, including Odoo’s previous implementation, opted for the simpler approach of sending invoices one at a time. Simpler to build, simpler to debug, but wasteful when the volume is there.
What Batch Processing Changes
The updated connector groups invoices into safe batch sizes before submission. Rather than making a hundred separate API calls for a hundred invoices, the system might make five or ten calls depending on the batch size limits. Each batch is structured as a single XML payload containing multiple invoice records, and the AEAT response maps each result to its source document.
Odoo’s response parser has been rewritten to handle this multiplexed format. When a batch comes back with mixed results — say, eight accepted and two rejected — the system correctly associates each status with the right invoice. Accepted invoices get marked as submitted. Rejected ones get their specific error codes logged so accountants can fix and resubmit them individually without re-processing the entire batch.
Why This Matters for Month-End Processing
The four-day submission window means most Spanish businesses submit invoices continuously throughout the month. But reconciliation, late adjustments, and credit notes often pile up toward month-end. A business that issues 200 invoices in the last week of the month was previously looking at 200 individual API calls, each with its own network overhead, authentication handshake, and response wait time.
Batch processing compresses that into a fraction of the calls. Beyond raw speed, it also reduces the surface area for transient failures. A single API call that times out means one batch to retry, not a cascade of individual retries that can clog the submission queue and push invoices past their four-day deadline.
The Send Wizard Gets Smarter
The invoice sending wizard in Odoo’s accounting module now coordinates with the batch engine. When an accountant selects multiple invoices and hits Send, the system automatically groups them into compliant batches rather than processing them sequentially. The wizard still shows individual results, but the underlying transmission is batched for efficiency.
This is a workflow improvement that most users won’t consciously notice — the interface looks the same. But the accountant who used to start a bulk submission and wait ten minutes while Odoo worked through a queue will find the same operation finishing in a fraction of the time.
Implications for Other Country Localizations
Spain isn’t the only country with real-time invoice reporting requirements. Italy, Mexico, India, Saudi Arabia, and a growing list of jurisdictions mandate electronic invoice submission to tax authorities. The batch processing pattern that Odoo has implemented for SII — chunk, submit, parse multiplexed responses — is architecturally reusable. Whether it gets applied to other localizations remains to be seen, but the groundwork is there.
For Spanish businesses on Odoo, the change is straightforward: the same invoices, the same compliance requirements, the same submission deadlines — just fewer API calls and faster throughput when volume spikes.