Format XML UBL 2.1
Le format technique derrière les factures PEPPOL. Comprenez comment vos données de facture sont structurées pour la communication de machine à machine.
Qu'est-ce que l'UBL ?
L'UBL (Universal Business Language) est une norme internationale de structuration des documents commerciaux tels que les factures. Considérez-le comme un modèle précis qui indique aux ordinateurs exactement où trouver chaque information — le numéro de facture, les montants, la TVA, les coordonnées du vendeur, etc.
Lorsque vous créez une facture dans aiDoks, nous convertissons automatiquement vos données dans ce format XML UBL. Cela garantit que tout système recevant votre facture peut la lire correctement, quel que soit le logiciel utilisé.
aiDoks génère automatiquement un XML UBL parfait à partir de votre saisie. Cette page s'adresse à ceux qui veulent comprendre ce qui se passe en coulisses ou qui doivent travailler avec les fichiers bruts.
Structure de la facture en un coup d'œil
Chaque facture PEPPOL contient ces sections principales, dans cet ordre :
Explication des éléments clés
Voici les parties les plus importantes d'une facture UBL et ce qu'elles contiennent :
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>Ces identifiants indiquent aux systèmes destinataires qu'il s'agit d'une facture conforme à PEPPOL BIS 3.0. Ils sont toujours identiques pour les factures standard — aiDoks les ajoute automatiquement.
<cbc:ID>INV-2025-001</cbc:ID>
<cbc:IssueDate>2025-01-29</cbc:IssueDate>
<cbc:DueDate>2025-02-28</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>Votre numéro de facture, la date d'émission, la date d'échéance, le type (380 = facture standard) et la devise. Les dates doivent être au format AAAA-MM-JJ.
<cac:AccountingSupplierParty> <cac:Party> <cbc:EndpointID schemeID="0191">EE123456789</cbc:EndpointID> <cac:PartyName> <cbc:Name>Your Company OÜ</cbc:Name> </cac:PartyName> <!-- Address, VAT number, registration... --> </cac:Party>
</cac:AccountingSupplierParty>Les coordonnées de votre entreprise. L'EndpointID avec schemeID est votre identifiant de participant PEPPOL — c'est ainsi que le réseau sait où livrer les réponses.
<cac:InvoiceLine> <cbc:ID>1</cbc:ID> <cbc:InvoicedQuantity unitCode="HUR">40</cbc:InvoicedQuantity> <cbc:LineExtensionAmount currencyID="EUR">3000.00</cbc:LineExtensionAmount> <cac:Item> <cbc:Name>Web Development Services</cbc:Name> </cac:Item> <cac:Price> <cbc:PriceAmount currencyID="EUR">75.00</cbc:PriceAmount> </cac:Price>
</cac:InvoiceLine>Chaque article que vous facturez. Comprend le numéro de ligne, la quantité (avec un code d'unité comme HUR pour les heures), le total de la ligne, la description de l'article et le prix unitaire. Vous pouvez avoir plusieurs éléments InvoiceLine.
Référence des codes courants
Schémas d'identifiant de participant PEPPOL
| Identifiant de schéma | Pays | Description |
|---|---|---|
0191 | Estonie | Numéro de TVA (EE + 9 chiffres) |
0192 | Estonie | Code du registre des entreprises (8 chiffres) |
0193 | Lettonie | Numéro de TVA (LV + 11 chiffres) |
0200 | Lituanie | Numéro de TVA (LT + 9 à 12 chiffres) |
9915 | Autriche | Numéro de TVA |
9930 | Italie | Numéro de TVA |
Codes de mode de paiement
30Virement bancaire (le plus courant)58Virement SEPA49Prélèvement automatique48Carte de créditComment fonctionne la validation
Avant qu'une facture puisse être envoyée via PEPPOL, elle doit passer plusieurs contrôles de validation :
Vérifie que la structure XML est correcte — tous les éléments requis sont présents, correctement imbriqués et utilisent les bons types de données.
Valide les règles métier — par exemple, que les montants de TVA correspondent aux valeurs calculées, que les champs requis sont remplis selon le contexte et que les valeurs de code sont valides.
Vérifie que tous les codes (devise, pays, unité, catégorie de TVA) proviennent des listes officielles approuvées par PEPPOL.
Confirme que les totaux de ligne s'additionnent correctement, que la TVA est calculée correctement et que le montant final à payer est exact.
aiDoks exécute toutes ces validations avant l'envoi. En cas d'erreurs, vous verrez des messages spécifiques expliquant ce qui doit être corrigé — généralement un champ manquant ou une valeur incorrecte.
Exemple de fichier de facture
Vous voulez voir un exemple complet ? Voici une facture PEPPOL valide minimale :
<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
<cbc:CustomizationID>urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0</cbc:CustomizationID>
<cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
<cbc:ID>INV-2025-001</cbc:ID>
<cbc:IssueDate>2025-01-29</cbc:IssueDate>
<cbc:DueDate>2025-02-28</cbc:DueDate>
<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>
<cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
<cac:AccountingSupplierParty>
<cac:Party>
<cbc:EndpointID schemeID="0191">EE123456789</cbc:EndpointID>
<cac:PartyName><cbc:Name>Seller Company OÜ</cbc:Name></cac:PartyName>
<cac:PostalAddress>
<cbc:StreetName>Main Street 1</cbc:StreetName>
<cbc:CityName>Tallinn</cbc:CityName>
<cbc:PostalZone>10001</cbc:PostalZone>
<cac:Country><cbc:IdentificationCode>EE</cbc:IdentificationCode></cac:Country>
</cac:PostalAddress>
<cac:PartyTaxScheme>
<cbc:CompanyID>EE123456789</cbc:CompanyID>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:PartyTaxScheme>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Seller Company OÜ</cbc:RegistrationName>
<cbc:CompanyID>12345678</cbc:CompanyID>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cbc:EndpointID schemeID="0192">87654321</cbc:EndpointID>
<cac:PartyName><cbc:Name>Buyer Company AS</cbc:Name></cac:PartyName>
<cac:PostalAddress>
<cbc:CityName>Tallinn</cbc:CityName>
<cac:Country><cbc:IdentificationCode>EE</cbc:IdentificationCode></cac:Country>
</cac:PostalAddress>
<cac:PartyLegalEntity>
<cbc:RegistrationName>Buyer Company AS</cbc:RegistrationName>
</cac:PartyLegalEntity>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">220.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="EUR">1000.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="EUR">220.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>22</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">1000.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">1220.00</cbc:TaxInclusiveAmount>
<cbc:PayableAmount currencyID="EUR">1220.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">10</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">1000.00</cbc:LineExtensionAmount>
<cac:Item>
<cbc:Name>Consulting Services</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>22</cbc:Percent>
<cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
</cac:ClassifiedTaxCategory>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
</cac:Price>
</cac:InvoiceLine>
</Invoice>