Salta ai contenuti

Germania — E-INVOICE DE (Unified API)

In Germania, fiskaly supporta l’invio e la ricezione di fatture elettroniche B2B. La fatturazione elettronica è regolata dal Ministero Federale delle Finanze (BMF — Bundesministerium der Finanzen). Tutte le fatture elettroniche devono essere conformi alla EN 16931, soddisfatta da formati come XRechnung, ZUGFeRD o Peppol BIS 3.0 Billing, e devono essere archiviate per 8 anni in un formato elettronico conforme (§14b UStG).

fiskaly genera fatture elettroniche conformi alla EN 16931 e le consegna tramite uno di due canali. Il canale si sceglie per ogni fattura sul destinatario (recipients[].invoicing): tramite e-mail — come ZUGFeRD o XRechnung — oppure tramite la rete PEPPOL, come XRechnung.

Le due direzioni si configurano in modo diverso:

Questa pagina tratta i requisiti specifici della Germania che integrano la Guida generale di integrazione passo dopo passo. Assicuratevi di avere a disposizione le seguenti informazioni del contribuente prima di procedere:

  • vat_id_number — Numero di identificazione IVA (Umsatzsteuer-ID)
  • credentials.tax_number — Numero fiscale in formato ELSTER (Steuernummer)
  • name — Denominazione legale registrata e nome commerciale dell’azienda o della persona fisica
  • address — Indirizzo legale registrato dell’azienda o della persona fisica

Invio di fatture elettroniche: requisiti del destinatario

Sezione intitolata “Invio di fatture elettroniche: requisiti del destinatario”

Per inviare una fattura elettronica, indicate il destinatario e il modo in cui deve raggiungerlo direttamente sul record della fattura. Quando create la fattura (TRANSACTION::INVOICE) con createRecord, aggiungete il destinatario al suo array recipients.

Come spiega la Guida generale di integrazione passo dopo passo, ogni destinatario deve essere di tipo BUSINESS e avere il blocco invoicing compilato. Oltre ai dati standard di ogni fattura elettronica (nome, indirizzo, identificazione fiscale del destinatario, righe della fattura e così via), per la Germania si aggiunge il canale di consegna sul destinatario:

  • recipients[].type = BUSINESS
  • recipients[].identification.type = VAT — la fattura elettronica tedesca identifica l’acquirente tramite la partita IVA
  • recipients[].invoicing.type = EMAIL o PEPPOL — il canale di consegna
  • recipients[].invoicing.email — (solo EMAIL) l’indirizzo e-mail del destinatario
  • recipients[].invoicing.format — (solo EMAIL, opzionale) il formato del documento
  • recipients[].invoicing.identifier — (solo PEPPOL) il PEPPOL Network Identifier del destinatario
invoicing.typeRichiesto ancheCome fiskaly effettua la consegna
EMAILinvoicing.emailVia e-mail a quell’indirizzo, come ZUGFeRD o XRechnung secondo invoicing.format.
PEPPOLinvoicing.identifierAll’endpoint PEPPOL del destinatario, come XRechnung — vedi la limitazione XRechnung.

Il canale si sceglie per ogni fattura e non una volta per destinatario — la stessa azienda può ricevere una fattura via e-mail e la successiva tramite PEPPOL.

In Germania la registrazione sulla rete PEPPOL è facoltativa: scegliete di attivarla System per System.

Indicatela sul System E_INVOICE_SERVICE con createSystem:

{
"content": {
"type": "E_INVOICE_SERVICE",
"location": { "id": "..." },
"software": { "...": "..." },
"registrations": [{ "type": "PEPPOL" }]
}
}

Oppure aggiungetela a un System esistente con updateSystem:

{
"content": {
"registrations": [{ "type": "PEPPOL" }]
}
}

Cosa comporta questa scelta:

  • registrations omesso — il System invia solo via e-mail. Non è necessario alcun Proof of Ownership e il System passa direttamente alla modalità OPERATIVE.
  • registrations include PEPPOL — è necessario un Proof of Ownership. Alla messa in servizio lo state del System diventa COMMISSIONED, ma la sua mode diventa DEGRADED, e il System riporta una voce di log che segnala l’assenza del Proof of Ownership.

Per portare il System alla modalità OPERATIVE, caricate il Proof of Ownership come descritto al passo 11 della guida generale di integrazione. La verifica richiede fino a 72 ore; al termine il System cambia stato automaticamente e la voce di log viene rimossa. Il contenuto richiesto del documento è descritto nella sezione Proof of Ownership.

Sul destinatario della vostra richiesta createRecord, impostate:

  • recipients[].invoicing.type = PEPPOL
  • recipients[].invoicing.identifier — il PEPPOL Network Identifier del destinatario

Sono necessarie due condizioni: il vostro System E_INVOICE_SERVICE deve essere registrato sulla rete PEPPOL (vedi Registrazione PEPPOL) e dovete disporre del PEPPOL Network Identifier del destinatario. Allo schema dell’identificativo pensa fiskaly.

Le fatture inviate in questo modo vengono generate come XRechnung. recipients[].invoicing.format non ha alcun ruolo qui: su questo canale il formato non è selezionabile.

Invio via e-mail: scelta del formato del documento

Sezione intitolata “Invio via e-mail: scelta del formato del documento”

Quando il canale è EMAIL, decidete quale formato del documento fiskaly genera. Impostatelo sullo stesso destinatario nella vostra richiesta createRecord, tramite recipients[].invoicing.format:

ValoreFormato
ZUGFERD_V2 (predefinito)ZUGFeRD — un documento ibrido: un PDF/A-3 leggibile dall’utente con l’XML strutturato incorporato al suo interno.
XRECHNUNG_V3XRechnung — una fattura XML puramente strutturata, senza livello PDF.

Il campo è opzionale: se lo omettete, fiskaly genera ZUGFERD_V2. Entrambi i formati sono conformi alla EN 16931.

La ricezione delle fatture in entrata avviene tramite PEPPOL e dipende quindi dalla stessa registrazione PEPPOL richiesta per l’invio tramite PEPPOL — Proof of Ownership verificato incluso. Un Taxpayer che invia solo via e-mail non può ricevere.

Quando registrate un Taxpayer tedesco su PEPPOL, fiskaly lo registra per impostazione predefinita sia per l’invio sia per la ricezione. Le fatture in entrata indirizzate al PEPPOL Identifier del System vengono associate a quel System e fiskaly crea per ognuna un Record di tipo E_INVOICE::RECEPTION.

Chiamate retrieveSystem per leggere compliance.state:

  • TRANSMISSION_RECEPTION — il System può inviare e ricevere.
  • TRANSMISSION_ONLY — il System può solo inviare.

Ogni fattura indirizzata al vostro Taxpayer viene ricevuta e archiviata automaticamente come Record — non esiste alcun webhook, quindi interrogate l’API per individuare quelle nuove:

  1. Chiamate listRecords e filtrate per E_INVOICE::RECEPTION.
  2. Per ogni nuovo Record chiamate retrieveRecord con compliance-artifact per ottenere l’XML firmato.

listRecords restituisce i Record più recenti (limit vale 10 per impostazione predefinita, dal più recente): tenete quindi traccia di quelli già elaborati.