Aller au contenu

Allemagne — E-INVOICE DE (Unified API)

En Allemagne, fiskaly prend en charge l’envoi et la réception de factures électroniques B2B. La facturation électronique est réglementée par le Ministère fédéral des Finances (BMF — Bundesministerium der Finanzen). Toutes les factures électroniques doivent être conformes à la norme EN 16931, satisfaite par des formats tels que XRechnung, ZUGFeRD ou Peppol BIS 3.0 Billing, et doivent être archivées pendant 8 ans dans un format électronique conforme (§14b UStG).

fiskaly génère des factures électroniques conformes à la norme EN 16931 et les transmet via l’un des deux canaux. Le canal est choisi par facture sur le destinataire (recipients[].invoicing) : par e-mail — au format ZUGFeRD ou XRechnung — ou via le réseau PEPPOL, au format XRechnung.

Les deux directions se configurent différemment :

Cette page couvre les exigences spécifiques à l’Allemagne qui complètent l’Intégration générale étape par étape. Assurez-vous de disposer des informations suivantes sur le contribuable avant de continuer :

  • vat_id_number — Numéro d’identification TVA (Umsatzsteuer-ID)
  • credentials.tax_number — Numéro fiscal au format ELSTER (Steuernummer)
  • name — Dénomination légale enregistrée et nom commercial de l’entreprise ou de la personne physique
  • address — Adresse légale enregistrée de l’entreprise ou de la personne physique

Envoi de factures électroniques : exigences relatives au destinataire

Section intitulée « Envoi de factures électroniques : exigences relatives au destinataire »

Pour envoyer une facture électronique, vous indiquez son destinataire et son mode d’acheminement directement sur l’enregistrement de la facture. Lorsque vous créez la facture (TRANSACTION::INVOICE) avec createRecord, ajoutez le destinataire à son tableau recipients.

Comme l’explique l’Intégration générale étape par étape, chaque destinataire doit être de type BUSINESS et son bloc invoicing doit être renseigné. Au-delà des informations standard de toute facture électronique (nom, adresse, identification fiscale du destinataire, lignes de facture, etc.), l’Allemagne ajoute le canal de transmission sur le destinataire :

  • recipients[].type = BUSINESS
  • recipients[].identification.type = VAT — la facture électronique allemande identifie l’acheteur par son numéro de TVA
  • recipients[].invoicing.type = EMAIL ou PEPPOL — le canal de transmission
  • recipients[].invoicing.email — (EMAIL uniquement) l’adresse e-mail du destinataire
  • recipients[].invoicing.format — (EMAIL uniquement, facultatif) le format du document
  • recipients[].invoicing.identifier — (PEPPOL uniquement) le PEPPOL Network Identifier du destinataire, sous la forme <code de schéma>:<valeur> — généralement 9930:<numéro de TVA> pour une entreprise allemande
invoicing.typeÉgalement requisMode de transmission par fiskaly
EMAILinvoicing.emailPar e-mail à cette adresse, au format ZUGFeRD ou XRechnung selon invoicing.format.
PEPPOLinvoicing.identifierVers le point d’accès PEPPOL du destinataire, au format XRechnung — voir la limitation XRechnung.

Vous choisissez le canal par facture et non une fois pour toutes par destinataire — la même entreprise peut recevoir une facture par e-mail et la suivante via PEPPOL.

En Allemagne, l’inscription au réseau PEPPOL est facultative : vous choisissez de l’activer System par System.

Renseignez-la sur le System E_INVOICE_SERVICE avec createSystem :

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

Ou ajoutez-la à un System existant avec updateSystem :

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

Ce qui découle de ce choix :

  • registrations omis — le System n’envoie que par e-mail. Aucun Proof of Ownership n’est nécessaire et le System passe directement en mode OPERATIVE.
  • registrations contient PEPPOL — un Proof of Ownership est requis. Lors de la mise en service, le state du System devient COMMISSIONED mais son mode devient DEGRADED, et le System porte une entrée de journal signalant l’absence du Proof of Ownership.

Pour faire passer le System en mode OPERATIVE, téléversez le Proof of Ownership comme décrit à l’étape 11 du guide d’intégration général. La vérification prend jusqu’à 72 heures ; une fois terminée, le System change d’état automatiquement et l’entrée de journal est supprimée. Le contenu attendu du document est décrit dans la section Proof of Ownership.

Sur le destinataire de votre requête createRecord, définissez :

  • recipients[].invoicing.type = PEPPOL
  • recipients[].invoicing.identifier — le PEPPOL Network Identifier du destinataire

Deux conditions préalables doivent être remplies : votre System E_INVOICE_SERVICE doit être inscrit au réseau PEPPOL (voir Inscription PEPPOL) et vous devez disposer du PEPPOL Network Identifier du destinataire. fiskaly se charge du schéma de l’identifiant.

Les factures transmises ainsi sont générées au format XRechnung. recipients[].invoicing.format n’intervient pas ici : sur ce canal, le format n’est pas sélectionnable.

Lorsque le canal est EMAIL, vous décidez quel format de document fiskaly génère. Définissez-le sur le même destinataire dans votre requête createRecord, via recipients[].invoicing.format :

ValeurFormat
ZUGFERD_V2 (par défaut)ZUGFeRD — un document hybride : un PDF/A-3 lisible par une personne, avec le XML structuré intégré à l’intérieur.
XRECHNUNG_V3XRechnung — une facture XML purement structurée, sans couche PDF.

Le champ est facultatif : si vous l’omettez, fiskaly génère ZUGFERD_V2. Les deux formats sont conformes à la EN 16931.

La réception des factures entrantes passe par PEPPOL et dépend donc de la même inscription PEPPOL que la transmission via PEPPOL — Proof of Ownership validé inclus. Un Taxpayer qui envoie uniquement par e-mail ne peut pas recevoir.

Lorsque vous inscrivez un Taxpayer allemand sur PEPPOL, fiskaly l’inscrit par défaut à l’envoi et à la réception. Les factures entrantes adressées au PEPPOL Identifier du System lui sont rattachées, et fiskaly crée pour chacune un Record de type E_INVOICE::RECEPTION.

Appelez retrieveSystem pour lire compliance.state :

  • TRANSMISSION_RECEPTION — le System peut envoyer et recevoir.
  • TRANSMISSION_ONLY — le System ne peut qu’envoyer.

Chaque facture adressée à votre Taxpayer est reçue et stockée automatiquement sous forme de Record — il n’y a pas de webhook, vous interrogez donc l’API pour détecter les nouvelles :

  1. Appelez listRecords et filtrez sur E_INVOICE::RECEPTION.
  2. Pour chaque nouveau Record, appelez retrieveRecord avec compliance-artifact pour obtenir le XML signé.

listRecords renvoie les Records les plus récents (limit vaut 10 par défaut, du plus récent au plus ancien) : suivez donc ceux que vous avez déjà traités.