Filtrer :

Démarrer la recherche

# Description du fichier XML généré

Ce chapitre décrit le fichier XML généré par Akuiteo qui pourrait être transmis via la plateforme CHORUS PRO.

Le type de flux attendu par la plateforme CHORUS PRO qui a été retenu pour la génération des fichiers XML par Akuiteo est le Flux structuré facture (E1). Toutes les données minimales nécessaires au traitement de factures par Chorus sont décrites dans des balises du fichier XML généré par Akuiteo. Les données attendues dans ce Flux structuré facture (E1) sont décrites dans l'Annexe EDI des spécifications externes fournies par CHORUS.

Un flux structuré facture peut contenir un ou plusieurs fichier XML. Chaque fichier correspond à une facture. Ce flux peut contenir au maximum 500 factures et a une taille maximale totale de 1 Go.

Un fichier XML contient :

- Des données structurées en XML qui représentent l'intégralité d’une facture ;
- Des pièces jointes constituées par des documents complémentaires, le cas échéant.

Les types de factures qui peuvent être gérées par Akuiteo correspondent uniquement aux modes de facturation suivants :

- A1 (dépôt d'une facture par un fournisseur)
- A2 (dépôt d'une facture déjà payée par un fournisseur)

Note

Les autres modes (A4, A7, A8, A9, A10, A12, A13, A14, A22) ne sont pas gérés dans Akuiteo.

Généralités de format de fichier

Tous les champs de type date sont sous le format AAAA-MM-JJ.

Les champs numériques sont exprimés par un nombre sur 19 positions, qui ne peut comporter plus de six décimales. Le séparateur utilisé pour les décimales est le "." point.

L'ordre des chapitres suivants représente l'ordre réel et la structure des balises du fichier XML.

Début du fichier - Généralités

<?xml version="1.0" encoding="UTF-8"?>

<Invoice xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDatatypes-2"
xmlns:ccts="urn:oasis:names:specification:ubl:schema:xsd:CoreComponentParameters-2"
xmlns:stat="urn:oasis:names:specification:ubl:schema:xsd:DocumentStatusCode-1.0"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:udt="urn:un:unece:uncefact:data:draft:UnqualifiedDataTypesSchemaModule:2"

xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"

xmlns:cec="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2">

<cec:UBLExtensions>

<cec:UBLExtension>

<cec:ExtensionContent>

<CategoryCode>A1</CategoryCode>

</cec:ExtensionContent>

</cec:UBLExtension>

</cec:UBLExtensions>

<cbc:UBLVersionID>2.1</cbc:UBLVersionID>

<cbc:ID>F1001_2016001</cbc:ID>

<cbc:CopyIndicator>false</cbc:CopyIndicator>

<cbc:IssueDate>2016-04-25</cbc:IssueDate>

<cbc:InvoiceTypeCode>380</cbc:InvoiceTypeCode>

<cbc:DocumentCurrencyCode>USD</cbc:DocumentCurrencyCode>

<cac:InvoicePeriod>

<cbc:StartDate>2016-01-01</cbc:StartDate>

<cbc:EndDate>2016-12-31</cbc:EndDate>

</cac:InvoicePeriod>

Balise | Règles
--- | ---
`<?xml version="1.0" encoding="UTF-8"?>` | Première ligne.
`Invoice` | Balise racine.
`CategoryCode` | Cadre (mode de facturation) : Valeur "A1" si le montant à régler est différent de zéro Valeur "A2" si le montant à régler est égal à zéro
`ID` | Numéro de la facture.
`CopyIndicator` | Valeur toujours égale à "false" car Akuiteo ne transmet jamais de facture duplicata à CHORUS PRO. Cette balise est visible uniquement si le pilote applicatif `CHORUS_BA_COMPLEM` est activé.
`IssueDate` | Date de la facture. La date d'émission de la facture doit être antérieure ou égale à la date de dépôt de la facture dans le système.
`InvoiceTypeCode` | Type de facture autorisé : Valeur "380" s'il s'agit d'une facture Valeur "381" s'il s'agit d'un avoir
`DocumentCurrencyCode` | Devise de la facture
`InvoicePeriod` | `StartDate` : Date de début de la période. Cette date de début est déterminée en prenant la date la plus ancienne parmi toutes celles renseignées dans le champ Période du des lignes de la facture. `EndDate` : Date de fin de la période. Cette date de fin est déterminée en prenant la date la plus récente parmi toutes celles renseignées dans le champ Au des lignes de la facture. La balise `InvoicePeriod` n'est pas présente s'il n'y a aucune période renseignée sur la facture.

Engagement

<cac:ContractDocumentReference>

<cbc:ID>123456789123</cbc:ID>

<cbc:DocumentTypeCode>Contrat</cbc:DocumentTypeCode>

</cac:ContractDocumentReference>

<cac:ContractDocumentReference>

<cbc:ID>123456789123</cbc:ID>

<cbc:DocumentTypeCode>Marché</cbc:DocumentTypeCode>

</cac:ContractDocumentReference>

<cac:OrderReference>

<cbc:ID>1400000000</cbc:ID>

</cac:OrderReference>

En fonction de la donnée renseignée, les balises suivantes sont ajoutées. Si aucune de ces 3 valeurs alphanumériques n'est renseignée, aucune balise n'est affichée.

Balise | Règles
--- | ---
`ContractDocumentReference` | Numéro de contrat.
`ContractDocumentReference > ID` | Champ Numéro de contrat dans l'onglet CHORUS des pièces de gestion vente.
`ContractDocumentReference > DocumentTypeCode` | Valeur "Contrat".
`ContractDocumentReference > IssueDate` | Champ Date d'effet dans l'onglet CHORUS des pièces de gestion vente. Balise affichée uniquement si la date est renseignée.
`ContractDocumentReference` | Numéro de marché.
`ContractDocumentReference > ID` | Champ Nom Marché dans l'onglet CHORUS des pièces de gestion vente.
`ContractDocumentReference > DocumentTypeCode` | Valeur "Marché".
`ContractDocumentReference > IssueDate` | Champ Date d'effet dans l'onglet CHORUS des pièces de gestion vente. Balise affichée uniquement si la date est renseignée.
`OrderReference` | Numéro d’engagement.
`OrderReference > ID` | Champ Numéro d'engagement dans l'onglet CHORUS des pièces de gestion vente.
`OrderReference > IssueDate` | Champ Date d'effet dans l'onglet CHORUS des pièces de gestion vente. Balise affichée uniquement si la date est renseignée.

Pièce jointe principale

<cac:AdditionalDocumentReference>

<cbc:ID>PJP_FACTURE_FC1708523.pdf</cbc:ID>

<cbc:DocumentTypeCode>application/pdf</cbc:DocumentTypeCode>

<cbc:DocumentType>01</cbc:DocumentType>

<cac:Attachment>

<cbc:EmbeddedDocumentBinaryObject mimeCode="application/zip">

G4BALWUAQAVAAAARkFDVFVSRV9GQzE3MDg1MjMucGRmnLoFWF1Ls

jYMITiEAMHdXbbgFtzdLchm4

</cbc:EmbeddedDocumentBinaryObject>

</cac:Attachment>

</cac:AdditionalDocumentReference>

Balise | Règles
--- | ---
`ID` | L'identifiant de la pièce jointe principale. La valeur de l'ID contient : PJP_ (en dur) + nom du fichier + extension .pdf PJP = pièce jointe principale
`DocumentTypeCode` | L'extension du fichier, qui doit contenir : application/pdf (en dur)
`DocumentType` | Le type du fichier, qui doit contenir la valeur "01". "01" = pièce jointe principale (facture/avoir)
`EmbeddedDocumentBinaryObject` | Contient la pièce jointe convertie au format Base64. La propriété `mimeCode="application/zip"` est codée en dur.

Pièces jointes complémentaires

<cac:AdditionalDocumentReference>

<cbc:ID>PJC_FACTURE_FC1708523_Annexe1.pdf</cbc:ID>

<cbc:DocumentTypeCode>application/pdf</cbc:DocumentTypeCode>

<cbc:DocumentType>02</cbc:DocumentType>

<cac:Attachment>

<cbc:EmbeddedDocumentBinaryObject mimeCode="application/zip">

G4BALWUAQAVAAAARkFDVFVSRV9GQzE3MDg1MjMucGRmnLoFWF1Ls

jYMITiEAMHdXbbgFtzdLchm4

</cbc:EmbeddedDocumentBinaryObject>

</cac:Attachment>

</cac:AdditionalDocumentReference>

Balise | Règles
--- | ---
`ID` | L'identifiant de la pièce jointe complémentaire. La valeur de l'ID contient : PJC_ (en dur) + nom du fichier + extension .pdf PJC = pièce jointe complémentaire
`DocumentTypeCode` | L'extension du fichier, qui doit contenir : application/pdf (en dur)
`DocumentType` | Le type du fichier, qui doit contenir la valeur "02". "02" = pièce jointe complémentaire
`EmbeddedDocumentBinaryObject` | Contient la pièce jointe convertie au format Base64. La propriété `mimeCode="application/zip"` est codée en dur.

Fournisseur

<cac:AccountingSupplierParty>

<cac:Party>

<cac:PartyIdentification>

<cbc:ID schemeName="1">00000000000347</cbc:ID>

</cac:PartyIdentification>

<cac:PartyName>

<cbc:Name>REC005FOURNISSEUR</cbc:Name>

</cac:PartyName>

<cac:PartyLegalEntity>

<cbc:RegistrationName>REC005FOURNISSEUR</cbc:RegistrationName>

<cac:RegistrationAddress>

<cbc:StreetName>rue Fictive</cbc:StreetName>

<cbc:CityName>La Poste</cbc:CityName>

<cbc:PostalZone>87016</cbc:PostalZone>

<cac:Country>

<cbc:IdentificationCode>FR</cbc:IdentificationCode>

</cac:Country>

</cac:RegistrationAddress>

</cac:PartyLegalEntity>

<cac:PartyTaxScheme>

<cbc:CompanyID>FR93 533 335 303</cbc:CompanyID>

<cac:TaxScheme>

<cbc:TaxTypeCode>TVA ENCAISSEMENT</cbc:TaxTypeCode>

</cac:TaxScheme>

</cac:PartyTaxScheme>

<cac:Contact>

<cbc:Note>REC005FOURNISSEUR</cbc:Note>

<cbc:Note>SAS</cbc:Note>

<cbc:Note>100000</cbc:Note>

</cac:Contact>

</cac:Party>

</cac:AccountingSupplierParty>

Balise | Règles
--- | ---
`PartyIdentification > ID schemeName="1"` | Numéro SIRET de la société de la facture.
`PartyName > Name` | Nom complet de la société.
`PartyLegalEntity > RegistrationName` | Nom complet de la société.
`PartyLegalEntity > RegistrationAddress > StreetName` | Adresse de la société. L’adresse de la société est obligatoire.
`PartyLegalEntity > RegistrationAddress > PostalZone` | Code postal de la société.
`PartyLegalEntity > RegistrationAddress > CityName` | Ville de la société.
`PartyLegalEntity > RegistrationAddress > Country > IdentificationCode` | Pays de la société.
`PartyTaxScheme > CompanyID` | Numéro de TVA intracommunautaire de la société.
`PartyTaxScheme > TaxScheme > TaxTypeCode` | Régime de TVA. La valeur est systématiquement "TVA ENCAISSEMENT".
`Contact > Note` | Nom complet de la société. Cette balise est visible uniquement si le pilote applicatif `CHORUS_BA_COMPLEM` est activé.
`Contact > Note` | Forme juridique de la société. Cette balise est visible uniquement si le pilote applicatif `CHORUS_BA_COMPLEM` est activé.
`Contact > Note` | Capital social de la société. Cette balise est visible uniquement si le pilote applicatif `CHORUS_BA_COMPLEM` est activé.

Débiteur (client)

<cac:AccountingCustomerParty>

<cac:Party>

<cac:PartyIdentification>

<cbc:ID schemeName="1">12345678200051</cbc:ID>

</cac:PartyIdentification>

<cac:PartyName>

<cbc:Name>CLI001CLIENT</cbc:Name>

</cac:PartyName>

<cac:PostalAddress>

<cbc:StreetName>1 rue Test</cbc:StreetName>

<cbc: AdditionalStreetName>Batiment A2

</cbc: AdditionalStreetName>

<cbc:CityName>Test</cbc:CityName>

<cbc:PostalZone>75000</cbc:PostalZone>

<cac:Country>

<cbc:IdentificationCode>FR</cbc:IdentificationCode>

</cac:Country>

</cac:PostalAddress>

</cac:Party>

<cac:AccountingContact>

<cbc:ID>SERVICE_DEST_EJ_OBL</cbc:ID>

<cbc:Name>nom du Service</cbc:Name>

</cac:AccountingContact>

</cac:AccountingCustomerParty>

Balise | Règles
--- | ---
`PartyIdentification > ID schemeName="1"` | Numéro SIRET du site de facturation.
`PartyName > Name` | Nom complet du site de facturation.
`PostalAddress > StreetName` | Adresse 1 du site de facturation.
`PostalAddress > AdditionalStreetName` | Adresse 2 du site de facturation.
`PostalAddress > CityName` | Ville du site de facturation.
`PostalAddress > PostalZone` | Code postal du site de facturation.
`PostalAddress > Country > IdentificationCode` | Pays du site de facturation.
`AccountingContact` | Code service. Bloc affiché uniquement si le code service est renseigné.
`AccountingContact > ID` | Champ Code service de l'onglet CHORUS du site client.
`AccountingContact > Name` | Champ Nom du service de l'onglet CHORUS du site client. Balise affichée uniquement si le nom est renseigné.

Paiement

<cac:PaymentMeans>

<cbc:PaymentMeansCode listID="UN/ECE 4461 Subset"

listAgencyID="NES" listAgencyName="Northern European Subset"

listName="Payment Means">30</cbc:PaymentMeansCode>

<cbc:PaymentDueDate>2016-04-26</cbc:PaymentDueDate>

<cbc:PaymentChannelCode>IBAN</cbc:PaymentChannelCode>

<cac: PayeeFinancialAccount>

<cbc: ID>DK121234123412343412</cbc: ID>

<cac: FinancialInstitutionBranch>

<cac: FinancialInstitution>

<cbc: ID>DKDKABCD</cbc: ID>

</cac: FinancialInstitution>

</cac: FinancialInstitutionBranch>

</cac: PayeeFinancialAccount>

</cac:PaymentMeans>

Balise | Règles
--- | ---
`PaymentMeansCode` | Valeur déterminée en fonction de la valeur du mode de règlement : "01" si non renseigné ou si AU (Autres) "10" si ES (Espèce) "20" si CH ou LC (Chèque) "30" si VI ou VD (Virement) "48" si CB (Prélèvement) "49" si PR, CB ou TR (Prélèvement) "97" si le montant à régler est égal à zéro (Report) dans le cas d'une facture ou d'un avoir déjà soldé(e)
`PaymentDueDate` | Première date de règlement prévue parmi les lignes d'échéance (lignes non réglées). Balise affichée uniquement si la date est renseignée.
`PaymentChannelCode` | Si la facture est issue d'un contrat : Coordonnées de la banque dont le code est renseigné dans le champ Journal de trésorerie du contrat Si la facture n'est pas issue d'un contrat : Coordonnées de la banque dont le code est renseigné dans le champ Journal de trésorerie du site client ou, si non renseigné, dans le champ Journal de banque renseigné sur la ligne de la prochaine échéance dans l'onglet Echéances. Si aucun de ces champs n'est renseigné : Les balises ne sont pas renseignées.
`PayeeFinancialAccount > ID`
`PayeeFinancialAccount > FinancialInstitutionBranch > ID`

Montants

<cac:LegalMonetaryTotal>

<cbc:TaxExclusiveAmount currencyID="USD">83.4000</cbc:TaxExclusiveAmount>

<cbc:TaxInclusiveAmount currencyID="USD">100.0800</cbc:TaxInclusiveAmount>

<cbc:PayableAmount currencyID="USD">100.0800</cbc:PayableAmount>

</cac:LegalMonetaryTotal>

La balise `CategoryCode` (voir Début du fichier - Généralités) peut avoir deux valeurs :

- Valeur "A1" si le montant à régler est différent de zéro
- Valeur "A2" si le montant à régler est égal à zéro

En fonction de cette valeur, la balise `PayableAmount` doit toujours être inférieure ou égale à `TaxInclusiveAmount`.

Balise | Règles
--- | ---
`TaxExclusiveAmount currencyID="???"` | Devise (en dur dans la balise) et valeur du montant hors taxe. Le signe du montant est inversé s'il s'agit d'un avoir (dans Akuiteo, un avoir est négatif alors qu'il est positif dans Chorus).
`TaxInclusiveAmount currencyID="???"` | Devise (en dur dans la balise) et valeur du montant avec taxe. Le signe du montant est inversé s'il s'agit d'un avoir (dans Akuiteo, un avoir est négatif alors qu'il est positif dans Chorus).
`PayableAmount currencyID="???"` | Devise (en dur dans la balise) et valeur du montant des échéances non réglées. Le signe du montant est inversé s'il s'agit d'un avoir (dans Akuiteo, un avoir est négatif alors qu'il est positif dans Chorus).

Récapitulatif taxes

<cac:TaxTotal>

<cbc:TaxAmount currencyID="EUR">5.2</cbc:TaxAmount>

<cac:TaxSubtotal>

<cbc:TaxableAmount currencyID="EUR">24</cbc:TaxableAmount>

<cbc:TaxAmount currencyID="EUR">1.2</cbc:TaxAmount>

<cbc:Percent>5</cbc:Percent>

<cac:TaxCategory>

<cac:TaxScheme>

<cbc:TaxTypeCode>TVA</cbc:TaxTypeCode>

</cac:TaxScheme>

</cac:TaxCategory>

</cac:TaxSubtotal>

<cac:TaxSubtotal>

<cbc:TaxableAmount currencyID="EUR">20</cbc:TaxableAmount>

<cbc:TaxAmount currencyID="EUR">4</cbc:TaxAmount>

<cbc:Percent>20</cbc:Percent>

<cac:TaxCategory>

<cac:TaxScheme>

<cbc:TaxTypeCode>TVA</cbc:TaxTypeCode>

</cac:TaxScheme>

</cac:TaxCategory>

</cac:TaxSubtotal>

</cac:TaxTotal>

Toutes les lignes de facture avec un montant de taxe non vide sont regroupées par taux de taxe.

Chaque taux de taxe est regroupé dans une balise `TaxSubtotal` distincte.

Balise | Règles
--- | ---
`TaxAmount` | Montant total des taxes.
`TaxSubtotal` | Balise répétée autant de fois qu'il y a de taux de taxe différents.
`TaxSubtotal > TaxableAmount` | Somme du prix hors taxe pour toutes les lignes concernées de la facture.
`TaxSubtotal > TaxAmount` | Somme du montant de la taxe pour toutes les lignes concernées de la facture.
`TaxSubtotal > Percent` | Pourcentage de taxe pour les lignes concernées de la facture. Ce pourcentage est affichée sans le caractère "%".
`TaxSubtotal > TaxCategory > TaxScheme > TaxTypeCode` | Type de taxe. La valeur "TVA" est utilisée.

Lignes

<cac:InvoiceLine>

<cbc:ID>1</cbc:ID>

<cbc:InvoicedQuantity unitCode="EA">1</cbc:InvoicedQuantity>

<cbc:LineExtensionAmount currencyID="USD">

83.4000</cbc:LineExtensionAmount>

<cac:Item>

<cbc:Description>Descriptif de la ligne de facture</cbc:Description>

<cbc:Name>Prestation intellectuelle</cbc:Name>

<cac:StandardItemIdentification>

<cbc:ID>PRESTATIONS</cbc:ID>

</cac:StandardItemIdentification>

<cac:ClassifiedTaxCategory>

<cbc:Percent>20</cbc:Percent>

</cac:ClassifiedTaxCategory>

</cac:Item>

<cac:Price>

<cbc:PriceAmount currencyID="USD">83.4000</cbc:PriceAmount>

<cbc:BaseQuantity unitCode="EA">1</cbc:BaseQuantity>

</cac:Price>

</cac:InvoiceLine>

</Invoice>

Balise | Règles
--- | ---
`ID` | Numéro de ligne. Les lignes sont numérotées par ordre croissant. Si toutes les lignes d'un titre ou d'un pack sont non éditables, ces lignes sont regroupées. Dans ce cas, le plus petit numéro de ligne est utilisé pour le regroupement.
`InvoicedQuantity` | Quantité de la ligne, toujours fixée à "1". Si toutes les lignes d'un pack sont non éditables, ces lignes sont regroupées. Dans ce cas, la quantité de la ligne correspond à la quantité du pack.
`LineExtensionAmount currencyID="???"` | Devise (en dur dans la balise) et valeur du montant de la ligne. Le signe du montant est inversé s'il s'agit d'un avoir (dans Akuiteo, un avoir est négatif alors qu'il est positif dans Chorus). Si toutes les lignes d'un titre ou d'un pack sont non éditables, ces lignes sont regroupées. Dans ce cas, la somme des montants des lignes est utilisée pour le regroupement.
`Item > Description` | Suite du libellé de la ligne, tronquée à 1000 caractères. Si toutes les lignes d'un titre ou d'un pack sont non éditables, ces lignes sont regroupées. Dans le cas d'un titre, cette description est vide pour le regroupement. Pour le pack, la suite du libellé du pack est utilisée.
`Item > Name` | Libellé de la ligne, tronqué à 40 caractères. Si toutes les lignes d'un titre ou d'un pack sont non éditables, ces lignes sont regroupées. Dans ce cas, le libellé du titre ou du pack est utilisé.
`Item > StandardItemIdentification > ID` | Référence produit, tronquée à 40 caractères. Cette balise est visible uniquement si le pilote applicatif `CHORUS_BA_COMPLEM` est activé.
`Item > ClassifiedTaxCategory > Percent` | Taux de taxe.
`Price > PriceAmount currencyID="???"` | Devise (en dur dans la balise) et valeur du montant de la ligne (prix unitaire). Le signe du montant est inversé s'il s'agit d'un avoir (dans Akuiteo, un avoir est négatif alors qu'il est positif dans Chorus). Si toutes les lignes d'un titre sont non éditables, ces lignes sont regroupées. Dans ce cas, le montant unitaire correspond à la somme des montants du regroupement. Si toutes les lignes d'un pack sont non éditables, ces lignes sont regroupées. Dans ce cas, le montant unitaire correspond à : somme des montants des lignes du regroupement / quantité du pack (résultat arrondi à 4 décimales).
`Price > BaseQuantity` | Quantité associée au prix unitaire, toujours fixée à "1".

Note

Si le pilote applicatif `CHORUS_BA_COMPLEM` est activé, le regroupement des lignes non éditables d'un titre ou d'un pack n'est pas effectué.