Zum Inhalt springen

E-INVOICE IT für SIGN IT-Kunden

Dieser Leitfaden richtet sich an Kunden, die bereits über eine funktionierende SIGN IT-Integration verfügen und die italienische B2B-E-Rechnungsstellung (E-INVOICE IT) ergänzen möchten. Beide Produkte basieren auf derselben Unified API und teilen sich dieselbe Taxpayer- und Location-Struktur — es sind nur wenige Ergänzungen erforderlich.

Vor dem Start wird davon ausgegangen, dass Ihre Integration Folgendes umfasst:

  • Einen Taxpayer, der mit italienischen Fiskalisierungsdaten erstellt wurde (fiscalization.type=IT, tax_id_number, vat_id_number, credentials)
  • Den in Betrieb genommenen Taxpayer (state=COMMISSIONED, mode=OPERATIVE)
  • Ein FISCAL_DEVICE System, das auf der Location des Taxpayers in Betrieb genommen wurde
  • Einen INTENTION::TRANSACTIONTRANSACTION::RECEIPT Ablauf für fiskalische Belege

Nichts davon muss geändert werden. Die folgenden Schritte ergänzen E-INVOICE IT zum bestehenden Setup.

Zwei Ergänzungen am Taxpayer sind erforderlich, die SIGN IT allein nicht benötigt:

  • address.region — der italienische Provincia-Code (z. B. MI, RM) ist für die SDI-Übermittlung obligatorisch. Falls er noch nicht am Taxpayer gesetzt ist, fügen Sie ihn über updateTaxpayer hinzu.

  • fiscalization.registration — ein neuer Block mit Daten aus dem Registro delle Imprese / REA. Erforderliche Felder: company_id, office, entry, legal_form, capital, shareholder_status, liquidation_status. tax_regime ist optional (Standardwert ORDINARY). Dieser Block ist auf API-Ebene optional, wird aber vom SDI für registrierte Unternehmen verlangt und sollte beim Onboarding bereitgestellt werden.

Beispiel: PATCH /taxpayers/{taxpayer_id}
{
"content": {
"address": {
"region": "MI"
},
"fiscalization": {
"type": "IT",
"registration": {
"company_id": "MI12345678901234567",
"office": "MI",
"entry": "1234567",
"legal_form": "LIMITED_LIABILITY_COMPANY",
"capital": "10000.00",
"shareholder_status": "MULTIPLE_SHAREHOLDERS",
"liquidation_status": "NOT_IN_LIQUIDATION"
}
}
}
}

Schritt 2 — Ein zusätzliches System in Betrieb nehmen

Abschnitt betitelt „Schritt 2 — Ein zusätzliches System in Betrieb nehmen“

Verwenden Sie createSystem, um ein E_INVOICE_SERVICE System auf der Location des Taxpayers zu erstellen, und nehmen Sie es anschließend über updateSystem in Betrieb.

Schritt 3 — Den Rechnungs-Transaktionsablauf hinzufügen

Abschnitt betitelt „Schritt 3 — Den Rechnungs-Transaktionsablauf hinzufügen“

SIGN IT verwendet TRANSACTION::RECEIPT. E-INVOICE IT verwendet einen anderen Transaktionstyp im selben INTENTION::TRANSACTION Container:

  • B2B-Rechnung → erstellen Sie eine TRANSACTION::INVOICE, verknüpft mit dem E_INVOICE_SERVICE System
  • Gutschrift → erstellen Sie eine TRANSACTION::CORRECTION mit data.type=INVOICE, die über record.id auf die ursprüngliche Rechnung verweist

Anders als bei Beleg-Abläufen erfolgt das SDI-Ergebnis asynchron. Nach dem Erstellen der TRANSACTION::INVOICE fragen Sie den E_INVOICE::TRANSMISSION Record ab oder warten auf Aktualisierungen.

Alle drei Records erreichen ihren Endzustand gemeinsam:

RecordEndzustand
E_INVOICE::TRANSMISSIONCOMPLETED oder FAILED, mode=FINISHED
TRANSACTION::INVOICECOMPLETED oder FAILED, mode=FINISHED
INTENTION::TRANSACTIONCOMPLETED oder FAILED, mode=FINISHED

Im Fehlerfall ist der SDI-Ablehnungsgrund im Feld logs[].message aller drei Records verfügbar.

Weitere Details finden Sie unter How to check the status of an e-invoice auf unserer Support-Seite.

Fehler können in drei verschiedenen Phasen auftreten, jeweils mit unterschiedlichem Verhalten:

PhaseWannVerhalten
UAPI-Validierung (synchron)Ungültiges Payload4xx wird sofort zurückgegeben — es wird kein Record erstellt. Korrigieren Sie das Payload und versuchen Sie es erneut mit demselben INTENTION::TRANSACTION.
Invopop-Validierung (asynchron)Invopop lehnt ab, bevor das SDI erreicht wirdDie gesamte Kette erreicht state=FAILED — für einen erneuten Versuch ist eine neue Kette erforderlich.
SDI-Ablehnung (asynchron)SDI gibt NS zurückDie gesamte Kette erreicht state=FAILED — für einen erneuten Versuch ist eine neue Kette erforderlich.

Wenn das SDI NS (Notifica di Scarto) zurückgibt, ist die Rechnung rechtlich nicht existent:

  1. Lesen Sie logs[].message an einem der drei Records, um den SDI-Ablehnungsgrund zu erhalten
  2. Erstellen Sie eine neue INTENTION::TRANSACTION und eine neue TRANSACTION::INVOICE mit den korrigierten Daten
  3. Dieselbe document.number darf innerhalb von 5 Tagen nach der NS-Ablehnung erneut verwendet werden
  4. Die fehlgeschlagene Kette bleibt dauerhaft FAILED — sie wird zu Prüfzwecken aufbewahrt

Folgendes bleibt vollständig unberührt:

  • Der Inbetriebnahme-Ablauf des Taxpayers und die Fisconline-Anmeldedaten
  • Alle FISCAL_DEVICE Systeme und BRANCH Locations
  • Ihr bestehender INTENTION::TRANSACTIONTRANSACTION::RECEIPT Beleg-Ablauf

Was this page helpful?