Skip to content
Back to work

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

Recognise one of these problems?

If any of this looks like the system you are living with, that is usually a good place to start a conversation.