SDIInterop — Italian E-Invoicing Integration
A reusable integration layer for electronic invoicing with the Italian Revenue Agency: XML generation, schema validation, retries and a dead-letter queue.
Client work — source not public
- Type
- Integration
- Period
- 2023
- Status
- In production
- Role
- Software Engineer
The problem
Italian businesses must exchange invoices electronically through the Revenue Agency’s interchange system. It is not optional, the format is strict, and the failure mode is bureaucratic: nothing is rejected at the moment of sending — it comes back later as a notice with a code. An invoice that silently fails to arrive is a compliance problem, not a support ticket.
What I built
A reusable module rather than an integration rewritten inside each product: submission, receipt of notices, and status tracking, behind an interface the host application implements against its own invoice model.
The step that carries most of the value is validating each document against the official schemas locally, before it goes anywhere — which turns a rejection that would arrive days later into an immediate error with a line number. Anything that cannot be delivered ends up somewhere a person will look, because in a legal obligation the unacceptable outcome is not a failure, it is silence.
Where it stands
Ran in production on real electronic invoices, and removed manual submission along with the transcription errors that came with it. A regulatory change is now one fix rather than several.
What I did
- Designed a modular integration layer covering submission, receipt and status tracking
- Implemented XML generation and validation against the official schemas before anything is sent
- Built retry with backoff and a dead-letter queue, so a rejection is visible rather than lost
- Made the module reusable across several client applications rather than re-integrated each time
Impact
- Handled real electronic invoices in production
- Manual submission and its transcription errors removed from the process
Stack
- .NET
- XML
- REST
- Retry & DLQ
- Compliance