Référence des règles de validation des e-factures

Recherchez n'importe quelle règle de validation d'e-facture par son ID : ce qu'elle vérifie, le test technique, quels formats l'imposent et comment corriger une infraction. Couvre le socle européen EN 16931, PEPPOL BIS 3.0, XRechnung et les profils CIUS nationaux, généré à partir du même schematron que celui exécuté par nos validateurs.

240règles documentées
220fatales (bloquantes)
13familles de règles

Affichage de240240règles

EN 16931 — core rules (59)

BR-01

fatal

Une facture doit comporter un identifiant de spécification (BT-24).

EN 16931CIIUBLBT-24
Test technique (XPath)
normalize-space(rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID) != ''
Valider selon cette règle

BR-02

fatal

Une facture doit comporter un numéro de facture (BT-1).

EN 16931CIIUBLBT-1
Test technique (XPath)
normalize-space(rsm:ExchangedDocument/ram:ID) != ''
Valider selon cette règle

BR-03

fatal

Une facture doit comporter une date d'émission de la facture (BT-2).

EN 16931CIIUBLBT-2
Test technique (XPath)
normalize-space(rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format='102']) != ''
Valider selon cette règle

BR-04

fatal

Une facture doit comporter un code de type de facture (BT-3).

EN 16931CIIUBLBT-3
Test technique (XPath)
normalize-space(rsm:ExchangedDocument/ram:TypeCode) != ''
Valider selon cette règle

BR-05

fatal

Une facture doit comporter un code de devise de la facture (BT-5).

EN 16931CIIUBLBT-5
Test technique (XPath)
normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode) != ''
Valider selon cette règle

BR-06

fatal

Une facture doit contenir le nom du vendeur (BT-27).

EN 16931CIIUBLBT-27
Test technique (XPath)
normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name) != ''
Valider selon cette règle

BR-07

fatal

Une facture doit contenir le nom de l'acheteur (BT-44).

EN 16931CIIUBLBT-44
Test technique (XPath)
normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name) != ''
Valider selon cette règle

BR-08

fatal

Une facture doit contenir l'adresse postale du vendeur.

EN 16931CIIUBL
Test technique (XPath)
rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress
Valider selon cette règle

BR-09

fatal

L'adresse postale du vendeur (BG-5) doit contenir un code de pays du vendeur (BT-40).

EN 16931CIIUBLBG-5BT-40
Test technique (XPath)
normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID) != ''
Valider selon cette règle

BR-10

fatal

Une facture doit contenir l'adresse postale de l'acheteur (BG-8).

EN 16931CIIUBLBG-8
Test technique (XPath)
rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress
Valider selon cette règle

BR-11

fatal

L'adresse postale de l'acheteur doit contenir un code de pays de l'acheteur (BT-55).

EN 16931CIIUBLBT-55
Test technique (XPath)
normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID) != ''
Valider selon cette règle

BR-12

fatal

Une facture doit comporter la somme des montants nets des lignes de facture (BT-106).

EN 16931CIIUBLBT-106
Test technique (XPath)
(ram:LineTotalAmount)
Valider selon cette règle

BR-17

fatal

Le nom du bénéficiaire (BT-59) doit être indiqué dans la facture si le bénéficiaire (BG-10) est différent du vendeur (BG-4).

EN 16931CIIUBLBT-59BG-10BG-4
Test technique (XPath)
(ram:Name) and (not(ram:Name = ../../ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name) and not(ram:ID = ../../ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:ID) and not(ram:SpecifiedLegalOrganization/ram:ID = ../../ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedLegalOrganization/ram:ID))
Valider selon cette règle

BR-18

fatal

Le nom du représentant fiscal du vendeur (BT-62) doit être indiqué dans la facture si le vendeur (BG-4) a un représentant fiscal (BG-11).

EN 16931CIIUBLBT-62BG-4BG-11
Test technique (XPath)
(ram:Name)
Valider selon cette règle

BR-19

fatal

L'adresse postale du représentant fiscal du vendeur (BG-12) doit être indiquée dans la facture si le vendeur (BG-4) a un représentant fiscal (BG-11).

EN 16931CIIUBLBG-12BG-4BG-11
Test technique (XPath)
(ram:PostalTradeAddress)
Valider selon cette règle

BR-20

fatal

L'adresse postale du représentant fiscal du vendeur (BG-12) doit contenir un code de pays du représentant fiscal (BT-69) si le vendeur (BG-4) a un représentant fiscal (BG-11).

EN 16931CIIUBLBG-12BT-69BG-4BG-11
Test technique (XPath)
(ram:PostalTradeAddress/ram:CountryID)
Valider selon cette règle

BR-21

fatal

Chaque ligne de facture (BG-25) doit comporter un identifiant de ligne de facture (BT-126).

EN 16931CIIUBLBG-25BT-126
Test technique (XPath)
normalize-space(ram:AssociatedDocumentLineDocument/ram:LineID) != ''
Valider selon cette règle

BR-22

fatal

Chaque ligne de facture (BG-25) doit comporter une quantité facturée (BT-129).

EN 16931CIIUBLBG-25BT-129
Test technique (XPath)
(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity)
Valider selon cette règle

BR-23

fatal

Une ligne de facture (BG-25) doit comporter un code d'unité de mesure de la quantité facturée (BT-130).

EN 16931CIIUBLBG-25BT-130
Test technique (XPath)
(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity/@unitCode)
Valider selon cette règle

BR-24

fatal

Chaque ligne de facture (BG-25) doit comporter un montant net de ligne de facture (BT-131).

EN 16931CIIUBLBG-25BT-131
Test technique (XPath)
(ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)
Valider selon cette règle

BR-25

fatal

Chaque ligne de facture (BG-25) doit contenir le nom de l'article (BT-153).

EN 16931CIIUBLBG-25BT-153
Test technique (XPath)
normalize-space(ram:SpecifiedTradeProduct/ram:Name) != ''
Valider selon cette règle

BR-26

fatal

Chaque ligne de facture (BG-25) doit contenir le prix net de l'article (BT-146).

EN 16931CIIUBLBG-25BT-146
Test technique (XPath)
(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount)
Valider selon cette règle

BR-29

fatal

Si la date de début (BT-73) et la date de fin (BT-74) de la période de facturation sont toutes deux fournies, la date de fin (BT-74) doit être postérieure ou égale à la date de début (BT-73).

EN 16931CIIUBLBT-73BT-74
Valider selon cette règle

BR-30

fatal

Si la date de début (BT-134) et la date de fin (BT-135) de la période de ligne de facture sont toutes deux fournies, la date de fin (BT-135) doit être postérieure ou égale à la date de début (BT-134).

EN 16931CIIUBLBT-134BT-135
Valider selon cette règle

BR-31

fatal

Chaque remise au niveau du document (BG-20) doit comporter un montant de remise au niveau du document (BT-92).

EN 16931CIIUBLBG-20BT-92
Test technique (XPath)
(../ram:ActualAmount)
Valider selon cette règle

BR-32

fatal

Chaque remise au niveau du document (BG-20) doit comporter un code de catégorie de TVA de la remise au niveau du document (BT-95).

EN 16931CIIUBLBG-20BT-95
Test technique (XPath)
(../ram:CategoryTradeTax[upper-case(ram:TypeCode) = 'VAT']/ram:CategoryCode)
Valider selon cette règle

BR-33

fatal

Chaque remise au niveau du document (BG-20) doit comporter un motif de remise (BT-97) ou un code de motif de remise (BT-98).

EN 16931CIIUBLBG-20BT-97BT-98
Test technique (XPath)
(../ram:Reason) or (../ram:ReasonCode)
Valider selon cette règle

BR-36

fatal

Chaque charge au niveau du document (BG-21) doit comporter un montant de charge au niveau du document (BT-99).

EN 16931CIIUBLBG-21BT-99
Test technique (XPath)
(../ram:ActualAmount)
Valider selon cette règle

BR-37

fatal

Chaque charge au niveau du document (BG-21) doit comporter un code de catégorie de TVA de la charge au niveau du document (BT-102).

EN 16931CIIUBLBG-21BT-102
Test technique (XPath)
(../ram:CategoryTradeTax[upper-case(ram:TypeCode) = 'VAT']/ram:CategoryCode)
Valider selon cette règle

BR-38

fatal

Chaque charge au niveau du document (BG-21) doit comporter un motif de charge (BT-104) ou un code de motif de charge (BT-105).

EN 16931CIIUBLBG-21BT-104BT-105
Test technique (XPath)
(../ram:Reason) or (../ram:ReasonCode)
Valider selon cette règle

BR-41

fatal

Chaque remise de ligne de facture (BG-27) doit comporter un montant de remise de ligne de facture (BT-136).

EN 16931CIIUBLBG-27BT-136
Test technique (XPath)
(../ram:ActualAmount)
Valider selon cette règle

BR-42

fatal

Chaque remise de ligne de facture (BG-27) doit comporter un motif de remise de ligne de facture (BT-139) ou un code de motif de remise de ligne de facture (BT-140).

EN 16931CIIUBLBG-27BT-139BT-140
Test technique (XPath)
(../ram:Reason) or (../ram:ReasonCode)
Valider selon cette règle

BR-43

fatal

Chaque charge de ligne de facture (BG-28) doit comporter un montant de charge de ligne de facture (BT-141).

EN 16931CIIUBLBG-28BT-141
Test technique (XPath)
(../ram:ActualAmount)
Valider selon cette règle

BR-44

fatal

Chaque charge de ligne de facture doit comporter un motif de charge de ligne de facture ou un code de motif de remise de ligne de facture.

EN 16931CIIUBL
Test technique (XPath)
(../ram:Reason) or (../ram:ReasonCode)
Valider selon cette règle

BR-45

fatal

Chaque ventilation de la TVA (BG-23) doit comporter un montant imposable de catégorie de TVA (BT-116).

EN 16931CIIUBLBG-23BT-116
Test technique (XPath)
(ram:BasisAmount)
Valider selon cette règle

BR-46

fatal

Chaque ventilation de la TVA (BG-23) doit comporter un montant de taxe de catégorie de TVA (BT-117).

EN 16931CIIUBLBG-23BT-117
Test technique (XPath)
(ram:CalculatedAmount)
Valider selon cette règle

BR-47

fatal

Chaque ventilation de la TVA (BG-23) doit être définie par un code de catégorie de TVA (BT-118).

EN 16931CIIUBLBG-23BT-118
Test technique (XPath)
(.[upper-case(ram:TypeCode) = 'VAT']/ram:CategoryCode)
Valider selon cette règle

BR-48

fatal

Chaque ventilation de la TVA (BG-23) doit comporter un taux de catégorie de TVA (BT-119), sauf si la facture n'est pas soumise à la TVA.

EN 16931CIIUBLBG-23BT-119
Test technique (XPath)
(.[upper-case(ram:TypeCode) = 'VAT']/ram:RateApplicablePercent) or (.[upper-case(ram:TypeCode) = 'VAT']/ram:CategoryCode = 'O')
Valider selon cette règle

BR-49

fatal

Une instruction de paiement (BG-16) doit indiquer le code de type de moyen de paiement (BT-81).

EN 16931CIIUBLBG-16BT-81
Test technique (XPath)
(ram:TypeCode)
Valider selon cette règle

BR-50

fatal

Un identifiant de compte de paiement (BT-84) doit être présent si des informations de virement (BG-17) sont fournies dans la facture.

EN 16931CIIUBLBT-84BG-17
Test technique (XPath)
(ram:IBANID) or (ram:ProprietaryID)
Valider selon cette règle

BR-51

fatal

Conformément aux normes de sécurité des paiements par carte, une facture ne doit jamais inclure le numéro de compte principal complet de la carte (BT-87).

EN 16931CIIUBLBT-87
Test technique (XPath)
string-length(ram:ID)<=10
Valider selon cette règle

BR-52

fatal

Chaque document justificatif supplémentaire (BG-24) doit contenir une référence de document justificatif (BT-122).

EN 16931CIIUBLBG-24BT-122
Test technique (XPath)
normalize-space(ram:IssuerAssignedID) != ''
Valider selon cette règle

BR-53

fatal

Si le code de devise comptable de la TVA (BT-6) est présent, le montant total de la TVA de la facture en devise comptable (BT-111) doit être fourni.

EN 16931CIIUBLBT-6BT-111
Test technique (XPath)
not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) or (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and (ram:TaxTotalAmount/@currencyID = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode = /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode))
Valider selon cette règle

BR-54

fatal

Chaque attribut d'article (BG-32) doit contenir un nom d'attribut d'article (BT-160) et une valeur d'attribut d'article (BT-161).

EN 16931CIIUBLBG-32BT-160BT-161
Test technique (XPath)
(ram:Description) and (ram:Value)
Valider selon cette règle

BR-55

fatal

Chaque référence de facture précédente (BG-3) doit contenir une référence de facture précédente (BT-25).

EN 16931CIIUBLBG-3BT-25
Test technique (XPath)
normalize-space(ram:IssuerAssignedID) != ''
Valider selon cette règle

BR-56

fatal

Chaque représentant fiscal du vendeur (BG-11) doit comporter un identifiant de TVA du représentant fiscal du vendeur (BT-63).

EN 16931CIIUBLBG-11BT-63
Test technique (XPath)
normalize-space(ram:SpecifiedTaxRegistration/ram:ID[@schemeID='VA']) != ''
Valider selon cette règle

BR-57

fatal

Chaque adresse de livraison (BG-15) doit contenir un code de pays de livraison (BT-80).

EN 16931CIIUBLBG-15BT-80
Test technique (XPath)
(ram:ShipToTradeParty/ram:PostalTradeAddress and normalize-space(ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID) != '') or not (ram:ShipToTradeParty/ram:PostalTradeAddress)
Valider selon cette règle

BR-61

fatal

Si le code de type de moyen de paiement (BT-81) correspond à un virement SEPA, un virement local ou un virement international non-SEPA, l'identifiant de compte de paiement (BT-84) doit être présent.

EN 16931CIIUBLBT-81BT-84
Test technique (XPath)
(ram:IBANID) or (ram:ProprietaryID)
Valider selon cette règle

BR-62

fatal

L'adresse électronique du vendeur (BT-34) doit comporter un identifiant de schéma.

EN 16931CIIUBLBT-34
Test technique (XPath)
normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication[1]/ram:URIID/@schemeID) != '' or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:URIUniversalCommunication)
Valider selon cette règle

BR-63

fatal

L'adresse électronique de l'acheteur (BT-49) doit comporter un identifiant de schéma.

EN 16931CIIUBLBT-49
Test technique (XPath)
normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication[1]/ram:URIID/@schemeID) != '' or not (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:URIUniversalCommunication)
Valider selon cette règle

BR-64

fatal

L'identifiant standard de l'article (BT-157) doit comporter un identifiant de schéma.

EN 16931CIIUBLBT-157
Test technique (XPath)
normalize-space(ram:SpecifiedTradeProduct/ram:GlobalID/@schemeID) != '' or not (ram:SpecifiedTradeProduct/ram:GlobalID)
Valider selon cette règle

BR-65

fatal

L'identifiant de classification de l'article (BT-158) doit comporter un identifiant de schéma.

EN 16931CIIUBLBT-158
Test technique (XPath)
normalize-space(ram:ClassCode/@listID) != '' or not (ram:ClassCode)
Valider selon cette règle

BR-66

fatal

Une facture ne doit contenir qu'un seul compte de carte de paiement au maximum (BG-18).

EN 16931CIIBG-18
Test technique (XPath)
(ram:ChargeIndicator)
Valider selon cette règle

EN 16931 — calculation rules (18)

BR-CO-03

fatal

La date d'exigibilité de la TVA (BT-7) et le code de date d'exigibilité de la TVA (BT-8) sont mutuellement exclusifs.

EN 16931CIIUBLBT-7BT-8
Test technique (XPath)
((//ram:TaxPointDate) and not(//ram:DueDateTypeCode)) or (not (//ram:TaxPointDate) and (//ram:DueDateTypeCode)) or (not (//ram:TaxPointDate) and not (//ram:DueDateTypeCode))
Valider selon cette règle

BR-CO-04

fatal

Chaque ligne de facture (BG-25) doit être catégorisée avec un code de catégorie de TVA de l'article facturé (BT-151).

EN 16931CIIUBLBG-25BT-151
Test technique (XPath)
(ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[upper-case(ram:TypeCode) = 'VAT']/ram:CategoryCode)
Valider selon cette règle

BR-CO-05

fatal

Le code de motif de remise au niveau du document (BT-98) et le motif de remise au niveau du document (BT-97) doivent indiquer le même type de remise.

EN 16931CIIUBLBT-98BT-97
Test technique (XPath)
true()
Valider selon cette règle

BR-CO-06

fatal

Le code de motif de charge au niveau du document (BT-105) et le motif de charge au niveau du document (BT-104) doivent indiquer le même type de charge.

EN 16931CIIUBLBT-105BT-104
Test technique (XPath)
true()
Valider selon cette règle

BR-CO-07

fatal

Le code de motif de remise de ligne de facture (BT-140) et le motif de remise de ligne de facture (BT-139) doivent indiquer le même type de motif de remise.

EN 16931CIIUBLBT-140BT-139
Test technique (XPath)
true()
Valider selon cette règle

BR-CO-08

fatal

Le code de motif de charge de ligne de facture (BT-145) et le motif de charge de ligne de facture (BT-144) doivent indiquer le même type de motif de charge.

EN 16931CIIUBLBT-145BT-144
Test technique (XPath)
true()
Valider selon cette règle

BR-CO-09

fatal

L'identifiant de TVA du vendeur (BT-31), l'identifiant de TVA du représentant fiscal du vendeur (BT-63) et l'identifiant de TVA de l'acheteur (BT-48) doivent comporter un préfixe conforme au code ISO 3166-1 alpha-2 permettant d'identifier le pays d'émission. Toutefois, la Grèce peut utiliser le préfixe 'EL'.

EN 16931CIIUBLBT-31BT-63BT-48
Test technique (XPath)
contains(' 1A AD AE AF AG AI AL AM AN AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BL BJ BM BN BO BQ BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CW CX CY CZ DE DJ DK DM DO DZ EC EE EG EH EL ER ES ET FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RE RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR ST SV SX SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF WS XI YE YT ZA ZM ZW ', concat(' ', substring(.,1,2), ' '))
Valider selon cette règle

BR-CO-10

fatal

La somme des montants nets des lignes de facture (BT-106) = Somme des montants nets des lignes de facture (BT-131).

EN 16931CIIUBLBT-106BT-131
Test technique (XPath)
xs:decimal(ram:LineTotalAmount) = round(xs:decimal(sum(../../ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)) * xs:decimal(100)) div xs:decimal(100)
Valider selon cette règle

BR-CO-11

fatal

La somme des remises au niveau du document (BT-107) = Somme des montants de remise au niveau du document (BT-92).

EN 16931CIIUBLBT-107BT-92
Test technique (XPath)
(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false()])and not (ram:AllowanceTotalAmount)) or ram:AllowanceTotalAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=false()]/ram:ActualAmount)* 10 * 10 ) div 100)
Valider selon cette règle

BR-CO-12

fatal

La somme des charges au niveau du document (BT-108) = Somme des montants de charge au niveau du document (BT-99).

EN 16931CIIUBLBT-108BT-99
Test technique (XPath)
(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true()])and not (ram:ChargeTotalAmount)) or ram:ChargeTotalAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true()]/ram:ActualAmount)* 10 * 10 ) div 100)
Valider selon cette règle

BR-CO-13

fatal

Le montant total de la facture hors TVA (BT-109) = Somme des montants nets des lignes de facture (BT-131) - Somme des remises au niveau du document (BT-107) + Somme des charges au niveau du document (BT-108).

EN 16931CIIUBLBT-109BT-131BT-107BT-108
Test technique (XPath)
(xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) - xs:decimal(ram:AllowanceTotalAmount) + xs:decimal(ram:ChargeTotalAmount)) *10 * 10) div 100) or ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) - xs:decimal(ram:AllowanceTotalAmount)) *10 * 10) div 100) and not (ram:ChargeTotalAmount)) or ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount) + xs:decimal(ram:ChargeTotalAmount)) *10 * 10) div 100) and not (ram:AllowanceTotalAmount)) or ((xs:decimal(ram:TaxBasisTotalAmount) = round((xs:decimal(ram:LineTotalAmount)) *10 * 10) div 100) and not (ram:ChargeTotalAmount) and not (ram:AllowanceTotalAmount))
Valider selon cette règle

BR-CO-15

fatal

Le montant total de la facture TTC (BT-112) = Montant total de la facture hors TVA (BT-109) + Montant total de la TVA de la facture (BT-110).

EN 16931CIIUBLBT-112BT-109BT-110
Test technique (XPath)
every $Currency in rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode satisfies ( count ( rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=$Currency] ) eq 1 and (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:GrandTotalAmount) = round( (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxBasisTotalAmount) + (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxTotalAmount[@currencyID=$Currency]))) * 10 * 10) div 100)) or (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:GrandTotalAmount) = (//ram:SpecifiedTradeSettlementHeaderMonetarySummation/xs:decimal(ram:TaxBasisTotalAmount)))
Valider selon cette règle

BR-CO-16

fatal

Le montant dû pour le paiement (BT-115) = Montant total de la facture TTC (BT-112) - Montant déjà payé (BT-113) + Montant d'arrondi (BT-114).

EN 16931CIIUBLBT-115BT-112BT-113BT-114
Test technique (XPath)
(xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount) + xs:decimal(ram:RoundingAmount)) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) + xs:decimal(ram:RoundingAmount)) and not (xs:decimal(ram:TotalPrepaidAmount))) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount))) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount)) and not (xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount)))
Valider selon cette règle

BR-CO-17

fatal

Le montant de taxe de catégorie de TVA (BT-117) = Montant imposable de catégorie de TVA (BT-116) x (Taux de catégorie de TVA (BT-119) / 100), arrondi à deux décimales.

EN 16931CIIUBLBT-117BT-116BT-119
Valider selon cette règle

BR-CO-18

fatal

Une facture doit comporter au moins un groupe de ventilation de la TVA (BG-23).

EN 16931CIIUBLBG-23
Test technique (XPath)
//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax
Valider selon cette règle

BR-CO-21

fatal

Chaque remise au niveau du document (BG-20) doit contenir un motif de remise au niveau du document (BT-97) ou un code de motif de remise au niveau du document (BT-98), ou les deux.

EN 16931CIIUBLBG-20BT-97BT-98
Test technique (XPath)
(../ram:Reason) or (../ram:ReasonCode)
Valider selon cette règle

BR-CO-22

fatal

Chaque charge au niveau du document (BG-21) doit contenir un motif de charge au niveau du document (BT-104) ou un code de motif de charge au niveau du document (BT-105), ou les deux.

EN 16931CIIUBLBG-21BT-104BT-105
Test technique (XPath)
(../ram:Reason) or (../ram:ReasonCode)
Valider selon cette règle

BR-CO-25

fatal

Si le montant dû pour le paiement (BT-115) est positif, soit la date d'échéance du paiement (BT-9), soit les conditions de paiement (BT-20) doivent être présentes.

EN 16931CIIUBLBT-115BT-9BT-20
Valider selon cette règle

EN 16931 — VAT category rules (16)

BR-AE-01

fatal

Une facture qui contient une ligne de facture, une remise au niveau du document ou une charge au niveau du document dont le code de catégorie de TVA est « Autoliquidation » doit contenir dans la ventilation de la TVA exactement un code de catégorie de TVA égal à « Autoliquidation de la TVA ».

EN 16931CIIUBL
Test technique (XPath)
(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='AE'])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='AE'])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode='AE'])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='AE'])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='AE']) or exists(//ram:CategoryTradeTax[ram:CategoryCode='AE'])))
Valider selon cette règle

BR-AE-02

fatal

Une facture qui contient une ligne de facture dont le code de catégorie de TVA de l'article facturé est « Autoliquidation » doit contenir l'identifiant de TVA du vendeur, l'identifiant d'immatriculation fiscale du vendeur et/ou l'identifiant de TVA du représentant fiscal du vendeur, ainsi que l'identifiant de TVA de l'acheteur et/ou l'identifiant d'immatriculation légale de l'acheteur.

EN 16931CIIUBL
Test technique (XPath)
(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = ('VA', 'FC')] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA']) and (//ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA'] or //ram:BuyerTradeParty/ram:SpecifiedLegalOrganization/ram:ID)
Valider selon cette règle

BR-AE-05

fatal

Dans une ligne de facture dont le code de catégorie de TVA de l'article facturé est « Autoliquidation », le taux de TVA de l'article facturé doit être 0 (zéro).

EN 16931CIIUBL
Test technique (XPath)
ram:RateApplicablePercent = 0
Valider selon cette règle

BR-AE-09

fatal

Le montant de taxe de catégorie de TVA dans une ventilation de la TVA dont le code de catégorie de TVA est « Autoliquidation » doit être 0 (zéro).

EN 16931CIIUBL
Test technique (XPath)
../ram:CalculatedAmount = 0
Valider selon cette règle

BR-AE-10

fatal

Une ventilation de la TVA avec le code de catégorie de TVA « Autoliquidation » doit comporter un code de motif d'exonération de TVA ou le texte de motif d'exonération de TVA « Autoliquidation ».

EN 16931CIIUBL
Test technique (XPath)
(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)
Valider selon cette règle

BR-E-01

fatal

Une facture qui contient une ligne de facture, une remise au niveau du document ou une charge au niveau du document dont le code de catégorie de TVA est « Exonéré de TVA » doit contenir exactement une ventilation de la TVA avec le code de catégorie de TVA égal à « Exonéré de TVA ».

EN 16931CIIUBL
Test technique (XPath)
(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='E'])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='E'])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode='E'])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='E'])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='E']) or exists(//ram:CategoryTradeTax[ram:CategoryCode='E'])))
Valider selon cette règle

BR-E-02

fatal

Une facture qui contient une ligne de facture dont le code de catégorie de TVA de l'article facturé est « Exonéré de TVA » doit contenir l'identifiant de TVA du vendeur, l'identifiant d'immatriculation fiscale du vendeur et/ou l'identifiant de TVA du représentant fiscal du vendeur.

EN 16931CIIUBL
Test technique (XPath)
/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = ('VA', 'FC')] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA']
Valider selon cette règle

BR-G-01

fatal

Une facture qui contient une ligne de facture, une remise au niveau du document ou une charge au niveau du document dont le code de catégorie de TVA est « Exportation hors UE » doit contenir dans la ventilation de la TVA exactement un code de catégorie de TVA égal à « Exportation hors UE ».

EN 16931CIIUBL
Test technique (XPath)
(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='G'])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='G'])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode='G'])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='G'])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='G']) or exists(//ram:CategoryTradeTax[ram:CategoryCode='G'])))
Valider selon cette règle

BR-G-02

fatal

Une facture qui contient une ligne de facture dont le code de catégorie de TVA de l'article facturé est « Exportation hors UE » doit contenir l'identifiant de TVA du vendeur ou l'identifiant de TVA du représentant fiscal du vendeur.

EN 16931CIIUBL
Test technique (XPath)
(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA'] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA'])
Valider selon cette règle

BR-IC-01

fatal

Une facture qui contient une ligne de facture, une remise au niveau du document ou une charge au niveau du document dont le code de catégorie de TVA est « Livraison intracommunautaire » doit contenir dans la ventilation de la TVA exactement un code de catégorie de TVA égal à « Livraison intracommunautaire ».

EN 16931CIIUBL
Test technique (XPath)
(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='K'])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='K'])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode='K'])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='K'])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='K']) or exists(//ram:CategoryTradeTax[ram:CategoryCode='K'])))
Valider selon cette règle

BR-IC-02

fatal

Une facture qui contient une ligne de facture dont le code de catégorie de TVA de l'article facturé est « Livraison intracommunautaire » doit contenir l'identifiant de TVA du vendeur ou l'identifiant de TVA du représentant fiscal du vendeur, ainsi que l'identifiant de TVA de l'acheteur.

EN 16931CIIUBL
Test technique (XPath)
(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA'] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA']) and //ram:BuyerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA']
Valider selon cette règle

BR-O-01

fatal

Une facture qui contient une ligne de facture, une remise au niveau du document ou une charge au niveau du document dont le code de catégorie de TVA est « Non soumis à la TVA » doit contenir exactement un groupe de ventilation de la TVA avec le code de catégorie de TVA égal à « Non soumis à la TVA ».

EN 16931CIIUBL
Test technique (XPath)
not(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='O']) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='O'])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='O']) or exists(//ram:CategoryTradeTax[ram:CategoryCode='O'])))
Valider selon cette règle

BR-S-01

fatal

Une facture qui contient une ligne de facture, une remise au niveau du document ou une charge au niveau du document dont le code de catégorie de TVA est « Taux normal » doit contenir dans la ventilation de la TVA au moins un code de catégorie de TVA égal à « Taux normal ».

EN 16931CIIUBL
Valider selon cette règle

BR-S-02

fatal

Une facture qui contient une ligne de facture dont le code de catégorie de TVA de l'article facturé est « Taux normal » doit contenir l'identifiant de TVA du vendeur, l'identifiant d'immatriculation fiscale du vendeur et/ou l'identifiant de TVA du représentant fiscal du vendeur.

EN 16931CIIUBL
Test technique (XPath)
/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = ('VA', 'FC')] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA']
Valider selon cette règle

BR-Z-01

fatal

Une facture qui contient une ligne de facture, une remise au niveau du document ou une charge au niveau du document dont le code de catégorie de TVA est « Taux zéro » doit contenir dans la ventilation de la TVA exactement un code de catégorie de TVA égal à « Taux zéro ».

EN 16931CIIUBL
Test technique (XPath)
(count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='Z'])=0 and count(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='Z'])=0 and count(//ram:CategoryTradeTax[ram:CategoryCode='Z'])=0) or ( count(//ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='Z'])=1 and (exists(//ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[ram:CategoryCode='Z']) or exists(//ram:CategoryTradeTax[ram:CategoryCode='Z'])))
Valider selon cette règle

BR-Z-02

fatal

Une facture qui contient une ligne de facture dont le code de catégorie de TVA de l'article facturé est « Taux zéro » doit contenir l'identifiant de TVA du vendeur, l'identifiant d'immatriculation fiscale du vendeur et/ou l'identifiant de TVA du représentant fiscal du vendeur.

EN 16931CIIUBL
Test technique (XPath)
/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = ('VA', 'FC')] or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA']
Valider selon cette règle

EN 16931 — decimal rules (14)

BR-DEC-01

fatal

Le nombre maximal de décimales autorisé pour le montant de remise au niveau du document (BT-92) est de 2.

EN 16931CIIUBLBT-92
Test technique (XPath)
string-length(substring-after(../ram:ActualAmount,'.'))<=2
Valider selon cette règle

BR-DEC-02

fatal

Le nombre maximal de décimales autorisé pour le montant de base de remise au niveau du document (BT-93) est de 2.

EN 16931CIIUBLBT-93
Test technique (XPath)
string-length(substring-after(../ram:BasisAmount,'.'))<=2
Valider selon cette règle

BR-DEC-05

fatal

Le nombre maximal de décimales autorisé pour le montant de charge au niveau du document (BT-99) est de 2.

EN 16931CIIUBLBT-99
Test technique (XPath)
string-length(substring-after(../ram:ActualAmount,'.'))<=2
Valider selon cette règle

BR-DEC-06

fatal

Le nombre maximal de décimales autorisé pour le montant de base de charge au niveau du document (BT-100) est de 2.

EN 16931CIIUBLBT-100
Test technique (XPath)
string-length(substring-after(../ram:BasisAmount,'.'))<=2
Valider selon cette règle

BR-DEC-09

fatal

Le nombre maximal de décimales autorisé pour la somme des montants nets des lignes de facture (BT-106) est de 2.

EN 16931CIIUBLBT-106
Test technique (XPath)
string-length(substring-after(ram:LineTotalAmount,'.'))<=2
Valider selon cette règle

BR-DEC-10

fatal

Le nombre maximal de décimales autorisé pour la somme des remises au niveau du document (BT-107) est de 2.

EN 16931CIIUBLBT-107
Test technique (XPath)
string-length(substring-after(ram:AllowanceTotalAmount,'.'))<=2
Valider selon cette règle

BR-DEC-11

fatal

Le nombre maximal de décimales autorisé pour la somme des charges au niveau du document (BT-108) est de 2.

EN 16931CIIUBLBT-108
Test technique (XPath)
string-length(substring-after(ram:ChargeTotalAmount,'.'))<=2
Valider selon cette règle

BR-DEC-12

fatal

Le nombre maximal de décimales autorisé pour le montant total de la facture hors TVA (BT-109) est de 2.

EN 16931CIIUBLBT-109
Test technique (XPath)
string-length(substring-after(ram:TaxBasisTotalAmount,'.'))<=2
Valider selon cette règle

BR-DEC-13

fatal

Le nombre maximal de décimales autorisé pour le montant total de la TVA de la facture (BT-110) est de 2.

EN 16931CIIUBLBT-110
Test technique (XPath)
not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode and . = round(. * 100) div 100) or not (@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode)]
Valider selon cette règle

BR-DEC-14

fatal

Le nombre maximal de décimales autorisé pour le montant total de la facture TTC (BT-112) est de 2.

EN 16931CIIUBLBT-112
Test technique (XPath)
string-length(substring-after(ram:GrandTotalAmount,'.'))<=2
Valider selon cette règle

BR-DEC-15

fatal

Le nombre maximal de décimales autorisé pour le montant total de la TVA de la facture en devise comptable (BT-111) est de 2.

EN 16931CIIUBLBT-111
Test technique (XPath)
not(ram:TaxTotalAmount) or ram:TaxTotalAmount[(@currencyID =/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode and . = round(. * 100) div 100) or not (/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:TaxCurrencyCode)]
Valider selon cette règle

BR-DEC-16

fatal

Le nombre maximal de décimales autorisé pour le montant déjà payé (BT-113) est de 2.

EN 16931CIIUBLBT-113
Test technique (XPath)
string-length(substring-after(ram:TotalPrepaidAmount,'.'))<=2
Valider selon cette règle

BR-DEC-17

fatal

Le nombre maximal de décimales autorisé pour le montant d'arrondi (BT-114) est de 2.

EN 16931CIIUBLBT-114
Test technique (XPath)
string-length(substring-after(ram:RoundingAmount,'.'))<=2
Valider selon cette règle

BR-DEC-18

fatal

Le nombre maximal de décimales autorisé pour le montant dû pour le paiement (BT-115) est de 2.

EN 16931CIIUBLBT-115
Test technique (XPath)
string-length(substring-after(ram:DuePayableAmount,'.'))<=2
Valider selon cette règle

PEPPOL BIS 3.0 (38)

PEPPOL-COMMON-R042

fatal

Le numéro d'organisation danois (CVR) doit être indiqué dans le format correct.

PEPPOL BIS 3.0UBL
Test technique (XPath)
(string-length(string()) = 10 and substring(string(), 1, 2) = 'DK' and string-length(translate(substring(string(), 3, 8), '1234567890', '')) = 0) or (string-length(string()) = 8) and (string-length(translate(substring(string(), 1, 8),'1234567890', '')) = 0)
Valider selon cette règle

PEPPOL-COMMON-R049

fatal

Le numéro d'organisation suédois doit être indiqué dans le format correct.

PEPPOL BIS 3.0UBL
Test technique (XPath)
string-length(normalize-space()) = 10 and string(number(normalize-space())) != 'NaN' and u:checkSEOrgnr(normalize-space())
Valider selon cette règle

PEPPOL-EN16931-R004

fatal

L'identifiant de spécification doit avoir la valeur 'urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0'.

PEPPOL BIS 3.0UBL
Test technique (XPath)
starts-with(normalize-space(cbc:CustomizationID/text()), 'urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0')
Valider selon cette règle

PEPPOL-EN16931-R005

fatal

Le code de devise comptable de la TVA doit être différent du code de devise de la facture lorsqu'il est fourni.

PEPPOL BIS 3.0XRechnung 3.xCIIUBL
Test technique (XPath)
not(normalize-space(text()) = normalize-space(../cbc:DocumentCurrencyCode/text()))
Valider selon cette règle

PEPPOL-EN16931-R043

fatal

La valeur de l'indicateur ChargeIndicator de la remise/charge doit être égale à 'true' ou 'false'.

PEPPOL BIS 3.0XRechnung 3.xUBL
Test technique (XPath)
normalize-space(cbc:ChargeIndicator/text()) = 'true' or normalize-space(cbc:ChargeIndicator/text()) = 'false'
Valider selon cette règle

PEPPOL-EN16931-R046

fatal

Le prix net de l'article doit être égal à (Prix brut - Montant de la remise) lorsque le prix brut est fourni.

PEPPOL BIS 3.0XRechnung 3.xCIIUBL
Test technique (XPath)
not(cbc:BaseAmount) or xs:decimal(../cbc:PriceAmount) = xs:decimal(cbc:BaseAmount) - xs:decimal(cbc:Amount)
Valider selon cette règle

PEPPOL-EN16931-R051

fatal

Tous les attributs currencyID doivent avoir la même valeur que le code de devise de la facture (BT-5), à l'exception du montant total de la TVA de la facture en devise comptable (BT-111).

PEPPOL BIS 3.0UBLBT-5BT-111
Test technique (XPath)
@currencyID = $documentCurrencyCode
Valider selon cette règle

PEPPOL-EN16931-R054

fatal

Un seul total de taxe sans sous-totaux de taxe doit être fourni lorsque le code de devise fiscale est fourni.

PEPPOL BIS 3.0XRechnung 3.xCIIUBL
Test technique (XPath)
count(cac:TaxTotal[not(cac:TaxSubtotal)]) = (if (cbc:TaxCurrencyCode) then 1 else 0)
Valider selon cette règle

PEPPOL-EN16931-R055

fatal

Le montant total de la TVA de la facture et le montant total de la TVA de la facture en devise comptable doivent avoir le même signe opérationnel.

PEPPOL BIS 3.0XRechnung 3.xCIIUBL
Test technique (XPath)
not(cbc:TaxCurrencyCode) or (cac:TaxTotal/cbc:TaxAmount[@currencyID=normalize-space(../../cbc:TaxCurrencyCode)] <= 0 and cac:TaxTotal/cbc:TaxAmount[@currencyID=normalize-space(../../cbc:DocumentCurrencyCode)] <= 0) or (cac:TaxTotal/cbc:TaxAmount[@currencyID=normalize-space(../../cbc:TaxCurrencyCode)] >= 0 and cac:TaxTotal/cbc:TaxAmount[@currencyID=normalize-space(../../cbc:DocumentCurrencyCode)] >= 0)
Valider selon cette règle

PEPPOL-EN16931-R101

fatal

L'élément Référence de document ne peut être utilisé que pour l'objet de ligne de facture.

PEPPOL BIS 3.0XRechnung 3.xCIIUBL
Test technique (XPath)
(not(cac:DocumentReference) or (cac:DocumentReference/cbc:DocumentTypeCode='130'))
Valider selon cette règle

PEPPOL-EN16931-R110

fatal

La date de début de la période de ligne doit être comprise dans la période de facturation.

PEPPOL BIS 3.0XRechnung 3.xCIIUBL
Test technique (XPath)
xs:date(text()) >= xs:date(../../../cac:InvoicePeriod/cbc:StartDate)
Valider selon cette règle

PEPPOL-EN16931-R111

fatal

La date de fin de la période de ligne doit être comprise dans la période de facturation.

PEPPOL BIS 3.0XRechnung 3.xCIIUBL
Test technique (XPath)
xs:date(text()) <= xs:date(../../../cac:InvoicePeriod/cbc:EndDate)
Valider selon cette règle

PEPPOL-EN16931-R120

fatal

Le montant net de la ligne de facture doit être égal à (Quantité facturée * (Prix net de l'article / quantité de base du prix de l'article) + Somme des montants de charge de la ligne de facture - somme des montants de remise de la ligne de facture.

PEPPOL BIS 3.0XRechnung 3.xUBL
Test technique (XPath)
u:slack($lineExtensionAmount, ($quantity * ($priceAmount div $baseQuantity)) + $chargesTotal - $allowancesTotal, 0.02)
Valider selon cette règle

PEPPOL-EN16931-R121

fatal

La quantité de base doit être un nombre positif supérieur à zéro.

PEPPOL BIS 3.0XRechnung 3.xCIIUBL
Test technique (XPath)
not(cac:Price/cbc:BaseQuantity) or xs:decimal(cac:Price/cbc:BaseQuantity) > 0
Valider selon cette règle

PEPPOL-EN16931-R130

fatal

Le code d'unité de la quantité de base du prix doit être le même que celui de la quantité facturée.

PEPPOL BIS 3.0XRechnung 3.xCIIUBL
Test technique (XPath)
not($hasQuantity) or @unitCode = $quantity/@unitCode
Valider selon cette règle

XRechnung (Germany) (31)

BR-DE-1

fatal

La facture doit contenir les INSTRUCTIONS DE PAIEMENT (BG-16).

XRechnung 3.xCIIUBLBG-16
Test technique (XPath)
rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans
Valider selon cette règle

BR-DE-5

fatal

Le point de contact du vendeur (BT-41) doit être fourni.

XRechnung 3.xCIIUBLBT-41
Test technique (XPath)
(ram:PersonName,ram:DepartmentName)[boolean(normalize-space(.))]
Valider selon cette règle

BR-DE-6

fatal

Le numéro de téléphone de contact du vendeur (BT-42) doit être fourni.

XRechnung 3.xCIIUBLBT-42
Test technique (XPath)
ram:TelephoneUniversalCommunication/ram:CompleteNumber[boolean(normalize-space(.))]
Valider selon cette règle

BR-DE-7

fatal

L'adresse électronique de contact du vendeur (BT-43) doit être fournie.

XRechnung 3.xCIIUBLBT-43
Test technique (XPath)
ram:EmailURIUniversalCommunication/ram:URIID[boolean(normalize-space(.))]
Valider selon cette règle

BR-DE-10

fatal

La ville de livraison (BT-77) doit être fournie lorsque le groupe ADRESSE DE LIVRAISON (BG-15) est fourni.

XRechnung 3.xCIIUBLBT-77BG-15
Test technique (XPath)
ram:CityName[boolean(normalize-space(.))]
Valider selon cette règle

BR-DE-11

fatal

Le code postal de livraison (BT-78) doit être fourni lorsque le groupe ADRESSE DE LIVRAISON (BG-15) est fourni.

XRechnung 3.xCIIUBLBT-78BG-15
Test technique (XPath)
ram:PostcodeCode[boolean(normalize-space(.))]
Valider selon cette règle

BR-DE-14

fatal

Le taux de la catégorie de TVA (BT-119) doit être fourni.

XRechnung 3.xCIIUBLBT-119
Test technique (XPath)
ram:RateApplicablePercent[boolean(normalize-space(.))]
Valider selon cette règle

BR-DE-15

fatal

La référence de l'acheteur (BT-10) doit être fournie. Pour les factures au secteur public allemand, il s'agit du Leitweg-ID.

XRechnung 3.xCIIUBLBT-10
Test technique (XPath)
rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerReference[boolean(normalize-space(.))]
Valider selon cette règle

BR-DE-16

fatal

Lorsqu'un code de catégorie de TVA S, Z, E, AE, K, G, L ou M est utilisé, au moins l'un des éléments suivants doit être fourni : numéro de TVA du vendeur (BT-31), identifiant d'enregistrement fiscal du vendeur (BT-32) ou REPRÉSENTANT FISCAL DU VENDEUR (BG-11).

XRechnung 3.xCIIUBLBT-31BT-32BG-11
Test technique (XPath)
not((rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode = 'VAT' and rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M')) or (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax = 'VAT' and rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge/ram:CategoryTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M')) or (rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:TypeCode = 'VAT' and rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax/ram:CategoryCode = ('S', 'Z', 'E', 'AE', 'K', 'G', 'L', 'M'))) or ((rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID='VA' or @schemeID='FC'][boolean(normalize-space(.))], rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTaxRepresentativeTradeParty))
Valider selon cette règle

BR-DE-17

warning

Le code de type de facture (BT-3) ne doit utiliser que ces codes UNTDID 1001 : 326, 380, 381, 384, 389, 875, 876, 877.

XRechnung 3.xCIIUBLBT-3
Test technique (XPath)
rsm:ExchangedDocument/ram:TypeCode = ('326', '380', '384', '389', '381', '875', '876', '877')
Valider selon cette règle

BR-DE-18

fatal

Les conditions d'escompte (Skonto) indiquées dans les conditions de paiement (BT-20) doivent respecter le format prescrit #SKONTO#.

XRechnung 3.xCIIUBLBT-20
Test technique (XPath)
every $line in rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description[1]/tokenize(. , '(\r?\n)')[starts-with( normalize-space(.) , '#')] satisfies matches ( normalize-space ($line), $XR-SKONTO-REGEX ) and matches( rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:Description[1]/tokenize(. , '#.+#')[last()], '^\s*\n' )
Valider selon cette règle

BR-DE-19

warning

L'identifiant du compte de paiement (BT-84) doit contenir un IBAN valide lorsque le code de type de moyen de paiement (BT-81) exige un virement SEPA (code 58).

XRechnung 3.xCIIUBLBT-84BT-81
Test technique (XPath)
not(ram:TypeCode = '58') or matches(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')), '^[A-Z]{2}[0-9]{2}[a-zA-Z0-9]{0,30}$') and xs:integer(string-join(for $cp in string-to-codepoints(concat(substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),5),upper-case(substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),1,2)),substring(normalize-space(replace(ram:PayeePartyCreditorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),3,2))) return (if($cp > 64) then string($cp - 55) else string($cp - 48)),'')) mod 97 = 1
Valider selon cette règle

BR-DE-20

warning

L'identifiant du compte débité (BT-91) doit contenir un IBAN valide lorsque le code de type de moyen de paiement (BT-81) exige un prélèvement SEPA (code 59).

XRechnung 3.xCIIUBLBT-91BT-81
Test technique (XPath)
not(ram:TypeCode = '59') or matches(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')), '^[A-Z]{2}[0-9]{2}[a-zA-Z0-9]{0,30}$') and xs:decimal(string-join(for $cp in string-to-codepoints(concat(substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),5),upper-case(substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),1,2)),substring(normalize-space(replace(ram:PayerPartyDebtorFinancialAccount/ram:IBANID, '([ \n\r\t\s])', '')),3,2))) return (if($cp > 64) then string($cp - 55) else string($cp - 48)),'')) mod 97 = 1
Valider selon cette règle

BR-DE-21

warning

L'identifiant de spécification (BT-24) doit correspondre syntaxiquement à l'identifiant de la norme XRechnung.

XRechnung 3.xCIIUBLBT-24
Test technique (XPath)
ram:GuidelineSpecifiedDocumentContextParameter/ram:ID = $XR-CIUS-ID or ram:GuidelineSpecifiedDocumentContextParameter/ram:ID = $XR-EXTENSION-ID
Valider selon cette règle

BR-DE-22

fatal

L'attribut « filename » de chaque élément EmbeddedDocumentBinaryObject doit être unique.

XRechnung 3.xCIIUBL
Test technique (XPath)
count(//ram:AdditionalReferencedDocument) = count(//ram:AdditionalReferencedDocument[not(./ram:AttachmentBinaryObject/@filename = preceding-sibling::ram:AdditionalReferencedDocument/ram:AttachmentBinaryObject/@filename)])
Valider selon cette règle

BR-DE-23-a

fatal

Lorsque le code de type de moyen de paiement (BT-81) est un code de virement (30, 58), VIREMENT (BG-17) doit être fourni.

XRechnung 3.xCIIUBLBT-81BG-17
Test technique (XPath)
ram:PayeePartyCreditorFinancialAccount
Valider selon cette règle

BR-DE-23-b

fatal

Lorsque le code de type de moyen de paiement (BT-81) est un code de virement (30, 58), BG-18 et BG-19 ne doivent pas être fournis.

XRechnung 3.xCIIUBLBT-81BG-18BG-19
Test technique (XPath)
not(ram:ApplicableTradeSettlementFinancialCard) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANID)
Valider selon cette règle

BR-DE-24-a

fatal

Lorsque le code de type de moyen de paiement (BT-81) est un code de paiement par carte (48, 54, 55), exactement une INFORMATION DE CARTE DE PAIEMENT (BG-18) doit être fournie.

XRechnung 3.xCIIUBLBT-81BG-18
Test technique (XPath)
ram:ApplicableTradeSettlementFinancialCard
Valider selon cette règle

BR-DE-24-b

fatal

Lorsque le code de type de moyen de paiement (BT-81) est un code de paiement par carte (48, 54, 55), BG-17 et BG-19 ne doivent pas être fournis.

XRechnung 3.xCIIUBLBT-81BG-17BG-19
Test technique (XPath)
not(ram:PayeePartyCreditorFinancialAccount) and not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANID)
Valider selon cette règle

BR-DE-25-a

fatal

Lorsque le code de type de moyen de paiement (BT-81) est un code de prélèvement (59), exactement un PRÉLÈVEMENT (BG-19) doit être fourni.

XRechnung 3.xCIIUBLBT-81BG-19
Test technique (XPath)
/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradePaymentTerms/ram:DirectDebitMandateID or /rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:CreditorReferenceID or ram:PayerPartyDebtorFinancialAccount/ram:IBANID
Valider selon cette règle

BR-DE-25-b

fatal

Lorsque le code de type de moyen de paiement (BT-81) est un code de prélèvement (59), BG-17 et BG-18 ne doivent pas être fournis.

XRechnung 3.xCIIUBLBT-81BG-17BG-18
Test technique (XPath)
not(ram:PayeePartyCreditorFinancialAccount) and not(ram:ApplicableTradeSettlementFinancialCard)
Valider selon cette règle

BR-DE-26

warning

Lorsque le code de type de facture (BT-3) est 384 (facture corrigée), la RÉFÉRENCE À LA FACTURE PRÉCÉDENTE (BG-3) doit être présente au moins une fois.

XRechnung 3.xCIIUBLBT-3BG-3
Test technique (XPath)
not(rsm:ExchangedDocument/ram:TypeCode = 384) or (rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument)
Valider selon cette règle

BR-DE-27

warning

Le numéro de téléphone de contact du vendeur (BT-42) doit contenir au moins trois chiffres.

XRechnung 3.xCIIUBLBT-42
Test technique (XPath)
matches(normalize-space(ram:TelephoneUniversalCommunication/ram:CompleteNumber), $XR-TELEPHONE-REGEX)
Valider selon cette règle

BR-DE-28

warning

L'adresse électronique de contact du vendeur (BT-43) doit contenir exactement un caractère @, entouré d'au moins deux caractères de chaque côté et non adjacent à un espace ou à un point ; un point ne doit pas être en première ni en dernière position.

XRechnung 3.xCIIUBLBT-43
Test technique (XPath)
matches(normalize-space(ram:EmailURIUniversalCommunication/ram:URIID), $XR-EMAIL-REGEX)
Valider selon cette règle

BR-DE-30

fatal

Lorsque PRÉLÈVEMENT (BG-19) est présent, l'identifiant de créancier attribué par la banque (BT-90) doit être fourni.

XRechnung 3.xCIIUBLBG-19BT-90
Test technique (XPath)
(($BT-89-path or $BT-91-path) and $BT-90-path) or $BG-19-not-existing
Valider selon cette règle

BR-DE-31

fatal

Lorsque PRÉLÈVEMENT (BG-19) est présent, l'identifiant du compte débité (BT-91) doit être fourni.

XRechnung 3.xCIIUBLBG-19BT-91
Test technique (XPath)
(($BT-89-path or $BT-90-path) and $BT-91-path) or $BG-19-not-existing
Valider selon cette règle

National CIUS (DK) (13)

DK-R-002

fatal

Les fournisseurs danois doivent fournir une entité légale (numéro CVR).

PEPPOL BIS 3.0UBL
Test technique (XPath)
(normalize-space(cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID/text()) != '')
Valider selon cette règle

DK-R-003

warning

Les fournisseurs danois doivent fournir un identifiant d'entité légale (numéro CVR) lorsque le code de classification de l'article est TST.

PEPPOL BIS 3.0UBL
Test technique (XPath)
not((cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode/@listID = 'TST') and not((cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode/@listVersionID = '19.05.01') or (cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode/@listVersionID = '19.0501') or (cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode/@listVersionID = '26.08.01') or (cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode/@listVersionID = '26.0801') ) )
Valider selon cette règle

DK-R-004

fatal

Les fournisseurs danois doivent fournir un texte de motif lorsque le code de motif de remise/charge est ZZZ.

PEPPOL BIS 3.0UBL
Test technique (XPath)
not((cbc:AllowanceChargeReasonCode = 'ZZZ') and not(((string-length(normalize-space(cbc:AllowanceChargeReason/text())) = 4) and (number(cbc:AllowanceChargeReason) >= 0) and (number(cbc:AllowanceChargeReason) <= 9999)) or (((cbc:AllowanceChargeReason and contains(cbc:AllowanceChargeReason, '#') and not(starts-with(cbc:AllowanceChargeReason, '#')) and not(ends-with(cbc:AllowanceChargeReason, '#')))) ) ) )
Valider selon cette règle

DK-R-005

fatal

Pour les fournisseurs danois, les codes de moyen de paiement suivants sont autorisés : 1, 10, 31, 42, 48, 49, 50, 58, 59, 93 et 97.

PEPPOL BIS 3.0UBL
Test technique (XPath)
contains(' 1 10 31 42 48 49 50 58 59 93 97 ', concat(' ', cbc:PaymentMeansCode, ' '))
Valider selon cette règle

DK-R-006

fatal

Pour les fournisseurs danois, le compte bancaire et les numéros d'acheminement sont obligatoires pour le paiement par virement bancaire.

PEPPOL BIS 3.0UBL
Test technique (XPath)
not(((cbc:PaymentMeansCode = '31') or (cbc:PaymentMeansCode = '42')) and not((normalize-space(cac:PayeeFinancialAccount/cbc:ID/text()) != '') and (normalize-space(cac:PayeeFinancialAccount/cac:FinancialInstitutionBranch/cbc:ID/text()) != '')) )
Valider selon cette règle

DK-R-007

fatal

Pour les fournisseurs danois, l'identifiant PaymentMandate et l'identifiant du compte du vendeur sont obligatoires pour le prélèvement.

PEPPOL BIS 3.0UBL
Test technique (XPath)
not((cbc:PaymentMeansCode = '49') and not((normalize-space(cac:PaymentMandate/cbc:ID/text()) != '') and (normalize-space(cac:PaymentMandate/cac:PayerFinancialAccount/cbc:ID/text()) != '')) )
Valider selon cette règle

DK-R-008

fatal

Pour les fournisseurs danois, le numéro de compte principal de la carte de paiement est obligatoire pour le paiement par carte.

PEPPOL BIS 3.0UBL
Test technique (XPath)
not((cbc:PaymentMeansCode = '50') and not(((substring(cbc:PaymentID, 1, 3) = '01#') or (substring(cbc:PaymentID, 1, 3) = '04#') or (substring(cbc:PaymentID, 1, 3) = '15#')) and matches(cac:PayeeFinancialAccount/cbc:ID, '^[0-9]{7,8}$') ) )
Valider selon cette règle

DK-R-009

fatal

Pour les fournisseurs danois, le nom du titulaire de la carte de paiement est obligatoire pour le paiement par carte.

PEPPOL BIS 3.0UBL
Test technique (XPath)
not((cbc:PaymentMeansCode = '50') and ((substring(cbc:PaymentID, 1, 3) = '04#') or (substring(cbc:PaymentID, 1, 3) = '15#')) and not(string-length(cbc:PaymentID) = 19) )
Valider selon cette règle

DK-R-010

fatal

Pour les fournisseurs danois, l'identifiant FinancialInstitutionBranch est obligatoire pour le type de paiement 93.

PEPPOL BIS 3.0UBL
Test technique (XPath)
not((cbc:PaymentMeansCode = '93') and not(((substring(cbc:PaymentID, 1, 3) = '71#') or (substring(cbc:PaymentID, 1, 3) = '73#') or (substring(cbc:PaymentID, 1, 3) = '75#')) and (string-length(cac:PayeeFinancialAccount/cbc:ID/text()) = 8) ) )
Valider selon cette règle

DK-R-011

fatal

Pour les fournisseurs danois, l'identifiant PayeeFinancialAccount est obligatoire pour le type de paiement 93.

PEPPOL BIS 3.0UBL
Test technique (XPath)
not((cbc:PaymentMeansCode = '93') and ((substring(cbc:PaymentID, 1, 3) = '71#') or (substring(cbc:PaymentID, 1, 3) = '75#')) and not((string-length(cbc:PaymentID) = 18) or (string-length(cbc:PaymentID) = 19)) )
Valider selon cette règle

DK-R-013

fatal

Pour les fournisseurs danois, seules les valeurs positives sont autorisées pour la quantité facturée (InvoicedQuantity).

PEPPOL BIS 3.0UBL
Test technique (XPath)
not((boolean(cbc:ID)) and (normalize-space(cbc:ID/@schemeID) = '') )
Valider selon cette règle

DK-R-014

fatal

Pour les fournisseurs danois, le code de devise du document (DocumentCurrencyCode) doit correspondre au code de devise fiscale (TaxCurrencyCode) lorsqu'il est fourni.

PEPPOL BIS 3.0UBL
Test technique (XPath)
not(((boolean(cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID)) and (normalize-space(cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID/@schemeID) != '0184')) )
Valider selon cette règle

DK-R-016

fatal

Pour les avoirs danois avec un acheteur danois, une référence de facture précédente doit être fournie.

PEPPOL BIS 3.0UBL
Test technique (XPath)
not((boolean(/ubl-creditnote:CreditNote) and ($DKCustomerCountry = 'DK')) and (number(cac:LegalMonetaryTotal/cbc:PayableAmount/text()) < 0) )
Valider selon cette règle

National CIUS (GR) (17)

GR-R-001-2

fatal

Lorsque le fournisseur est grec, le premier segment de l'identifiant de la facture doit être un identifiant fiscal valide de 9 chiffres.

PEPPOL BIS 3.0UBL
Test technique (XPath)
string-length(normalize-space($IdSegments[1])) = 9 and u:TinVerification($IdSegments[1]) and ($IdSegments[1] = /*/cac:AccountingSupplierParty/cac:Party/cac:PartyTaxScheme[cac:TaxScheme/cbc:ID = 'VAT']/substring(cbc:CompanyID, 3, 9) or $IdSegments[1] = /*/cac:TaxRepresentativeParty/cac:PartyTaxScheme[cac:TaxScheme/cbc:ID = 'VAT']/substring(cbc:CompanyID, 3, 9) )
Valider selon cette règle

GR-R-003

fatal

Pour les fournisseurs grecs, le numéro de TVA doit commencer par « EL » et être un numéro TIN valide.

PEPPOL BIS 3.0UBL
Test technique (XPath)
substring(.,1,2) = 'EL' and u:TinVerification(substring(.,3))
Valider selon cette règle

GR-R-004-1

fatal

Lorsque le fournisseur est grec, il doit y avoir un numéro MARK.

PEPPOL BIS 3.0UBL
Test technique (XPath)
count(cac:AdditionalDocumentReference[cbc:DocumentDescription = '##M.AR.K##'])=1
Valider selon cette règle

GR-R-006

fatal

Pour les acheteurs grecs, la facture doit contenir leur numéro de TVA.

PEPPOL BIS 3.0UBL
Test technique (XPath)
count(cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'VAT']/cbc:CompanyID)=1 and substring(cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'VAT']/cbc:CompanyID,1,2) = 'EL' and u:TinVerification(substring(cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'VAT']/cbc:CompanyID,3))
Valider selon cette règle

GR-R-008-2

fatal

Lorsque le fournisseur est grec, il ne doit pas y avoir plus d'une URL de facture.

PEPPOL BIS 3.0UBL
Test technique (XPath)
(count(cac:AdditionalDocumentReference[cbc:DocumentDescription = '##INVOICE|URL##']) = 0 ) or (count(cac:AdditionalDocumentReference[cbc:DocumentDescription = '##INVOICE|URL##']) = 1 )
Valider selon cette règle

GR-R-009

fatal

Les fournisseurs grecs qui envoient une facture via le réseau PEPPOL doivent utiliser un numéro TIN correct comme adresse électronique.

PEPPOL BIS 3.0UBL
Test technique (XPath)
./@schemeID='9933' and u:TinVerification(.)
Valider selon cette règle

GR-R-010

fatal

Les fournisseurs grecs qui envoient une facture via le réseau PEPPOL à un acheteur grec doivent utiliser un numéro TIN correct comme adresse électronique.

PEPPOL BIS 3.0UBL
Test technique (XPath)
./@schemeID='9933' and u:TinVerification(.)
Valider selon cette règle

National CIUS (IS) (6)

IS-R-002

fatal

Si le vendeur est islandais, la facture doit contenir l'identifiant légal du vendeur.

PEPPOL BIS 3.0UBL
Test technique (XPath)
exists(cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID) and cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID/@schemeID = '0196'
Valider selon cette règle

IS-R-003

fatal

Si le vendeur est islandais, la facture doit contenir son adresse avec le nom de rue et le code postal.

PEPPOL BIS 3.0UBL
Test technique (XPath)
exists(cac:AccountingSupplierParty/cac:Party/cac:PostalAddress/cbc:StreetName) and exists(cac:AccountingSupplierParty/cac:Party/cac:PostalAddress/cbc:PostalZone)
Valider selon cette règle

IS-R-004

fatal

Si le vendeur et l'acheteur sont islandais, la facture doit contenir l'identifiant légal islandais de l'acheteur.

PEPPOL BIS 3.0UBL
Test technique (XPath)
exists(cac:Party/cac:PartyLegalEntity/cbc:CompanyID) and cac:Party/cac:PartyLegalEntity/cbc:CompanyID/@schemeID = '0196'
Valider selon cette règle

IS-R-005

fatal

Si le vendeur et l'acheteur sont islandais, la facture doit contenir l'adresse de l'acheteur avec le nom de rue et le code postal.

PEPPOL BIS 3.0UBL
Test technique (XPath)
exists(cac:Party/cac:PostalAddress/cbc:StreetName) and exists(cac:Party/cac:PostalAddress/cbc:PostalZone)
Valider selon cette règle

IS-R-006

fatal

Si le vendeur est islandais et que le moyen de paiement est le prélèvement, un identifiant PayeeFinancialAccount valide doit être fourni.

PEPPOL BIS 3.0UBL
Test technique (XPath)
exists(cac:PaymentMeans[cbc:PaymentMeansCode = '9']/cac:PayeeFinancialAccount/cbc:ID) and string-length(normalize-space(cac:PaymentMeans[cbc:PaymentMeansCode = '9']/cac:PayeeFinancialAccount/cbc:ID)) = 12 or not(exists(cac:PaymentMeans[cbc:PaymentMeansCode = '9']))
Valider selon cette règle

IS-R-007

fatal

Si le vendeur est islandais et que le moyen de paiement est le virement bancaire, un identifiant PayeeFinancialAccount valide doit être fourni.

PEPPOL BIS 3.0UBL
Test technique (XPath)
exists(cac:PaymentMeans[cbc:PaymentMeansCode = '42']/cac:PayeeFinancialAccount/cbc:ID) and string-length(normalize-space(cac:PaymentMeans[cbc:PaymentMeansCode = '42']/cac:PayeeFinancialAccount/cbc:ID)) = 12 or not(exists(cac:PaymentMeans[cbc:PaymentMeansCode = '42']))
Valider selon cette règle

National CIUS (IT) (4)

IT-R-001

fatal

Pour les fournisseurs italiens, BT-32 doit avoir une longueur minimale de 11 et une longueur maximale de 16.

PEPPOL BIS 3.0UBLBT-32
Test technique (XPath)
matches(normalize-space(cbc:CompanyID),'^[A-Z0-9]{11,16}$')
Valider selon cette règle

National CIUS (NL) (9)

NL-R-001

fatal

Pour les fournisseurs des Pays-Bas, si le document est un avoir, il doit contenir une référence de facture.

PEPPOL BIS 3.0UBL
Test technique (XPath)
/*/cac:BillingReference/cac:InvoiceDocumentReference/cbc:ID
Valider selon cette règle

NL-R-002

fatal

Pour les fournisseurs des Pays-Bas, l'adresse du fournisseur doit contenir le nom de rue, la ville et le code postal.

PEPPOL BIS 3.0UBL
Test technique (XPath)
cbc:StreetName and cbc:CityName and cbc:PostalZone
Valider selon cette règle

NL-R-003

fatal

Pour les fournisseurs des Pays-Bas, l'identifiant d'entité légale doit être un numéro KVK ou OIN (schemeID 0106 ou 0190).

PEPPOL BIS 3.0UBL
Test technique (XPath)
(contains(concat(' ', string-join(@schemeID, ' '), ' '), ' 0106 ') or contains(concat(' ', string-join(@schemeID, ' '), ' '), ' 0190 ')) and (normalize-space(.) != '')
Valider selon cette règle

NL-R-004

fatal

Pour les fournisseurs des Pays-Bas, si le client est aux Pays-Bas, l'adresse du client doit contenir le nom de rue, la ville et le code postal.

PEPPOL BIS 3.0UBL
Test technique (XPath)
cbc:StreetName and cbc:CityName and cbc:PostalZone
Valider selon cette règle

NL-R-005

fatal

Pour les fournisseurs des Pays-Bas, si le client est aux Pays-Bas, l'identifiant d'entité légale du client doit être un numéro KVK ou OIN.

PEPPOL BIS 3.0UBL
Test technique (XPath)
(contains(concat(' ', string-join(@schemeID, ' '), ' '), ' 0106 ') or contains(concat(' ', string-join(@schemeID, ' '), ' '), ' 0190 ')) and (normalize-space(.) != '')
Valider selon cette règle

NL-R-006

fatal

Pour les fournisseurs des Pays-Bas, si le représentant fiscal est aux Pays-Bas, l'adresse du représentant doit contenir le nom de rue, la ville et le code postal.

PEPPOL BIS 3.0UBL
Test technique (XPath)
cbc:StreetName and cbc:CityName and cbc:PostalZone
Valider selon cette règle

NL-R-007

fatal

Pour les fournisseurs des Pays-Bas, le fournisseur doit indiquer un moyen de paiement si le paiement va du client au fournisseur.

PEPPOL BIS 3.0UBL
Test technique (XPath)
(/ubl-invoice:Invoice and xs:decimal(cbc:PayableAmount) <= 0.0) or (/ubl-creditnote:CreditNote and xs:decimal(cbc:PayableAmount) >= 0.0) or (//cac:PaymentMeans)
Valider selon cette règle

NL-R-008

fatal

Pour les fournisseurs des Pays-Bas, le code de moyen de paiement doit être 30, 48, 49, 57, 58 ou 59.

PEPPOL BIS 3.0UBL
Test technique (XPath)
normalize-space(cbc:PaymentMeansCode) = '30' or normalize-space(cbc:PaymentMeansCode) = '48' or normalize-space(cbc:PaymentMeansCode) = '49' or normalize-space(cbc:PaymentMeansCode) = '57' or normalize-space(cbc:PaymentMeansCode) = '58' or normalize-space(cbc:PaymentMeansCode) = '59'
Valider selon cette règle

NL-R-009

fatal

Pour les fournisseurs des Pays-Bas, si une référence de ligne de commande est utilisée, il doit y avoir une référence de commande au niveau du document.

PEPPOL BIS 3.0UBL
Test technique (XPath)
exists(/*/cac:OrderReference/cbc:ID)
Valider selon cette règle

National CIUS (NO) (2)

NO-R-001

fatal

Les fournisseurs norvégiens doivent fournir un numéro de TVA au format correct (12 chiffres + 'MVA').

PEPPOL BIS 3.0UBL
Test technique (XPath)
cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'VAT']/substring(cbc:CompanyID, 1, 2)='NO' and matches(cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'VAT']/substring(cbc:CompanyID,3), '^[0-9]{9}MVA$') and u:mod11(substring(cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'VAT']/cbc:CompanyID, 3, 9)) or not(cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'VAT']/substring(cbc:CompanyID, 1, 2)='NO')
Valider selon cette règle

NO-R-002

warning

Pour les fournisseurs norvégiens, la plupart des émetteurs de factures sont tenus d'ajouter « Foretaksregisteret » à leur immatriculation.

PEPPOL BIS 3.0UBL
Test technique (XPath)
normalize-space(cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'TAX']/cbc:CompanyID) = 'Foretaksregisteret'
Valider selon cette règle

National CIUS (SE) (13)

SE-R-001

fatal

Pour les fournisseurs suédois, les numéros de TVA suédois doivent comporter 14 caractères.

PEPPOL BIS 3.0UBL
Test technique (XPath)
string-length(normalize-space(cac:PartyTaxScheme[cac:TaxScheme/cbc:ID = 'VAT']/cbc:CompanyID)) = 14
Valider selon cette règle

SE-R-002

fatal

Pour les fournisseurs suédois, les 12 derniers caractères des numéros de TVA suédois doivent être numériques.

PEPPOL BIS 3.0UBL
Test technique (XPath)
string(number(substring(cac:PartyTaxScheme[cac:TaxScheme/cbc:ID = 'VAT']/cbc:CompanyID, 3, 12))) != 'NaN'
Valider selon cette règle

SE-R-005

fatal

Pour les fournisseurs suédois, lors de l'utilisation de l'identifiant d'immatriculation fiscale du vendeur, « Godkand for F-skatt » doit être indiqué.

PEPPOL BIS 3.0UBL
Test technique (XPath)
normalize-space(upper-case(.)) = 'GODKÄND FÖR F-SKATT'
Valider selon cette règle

SE-R-006

fatal

Pour les fournisseurs suédois, seuls les taux de TVA standard de 6, 12 ou 25 sont utilisés.

PEPPOL BIS 3.0UBL
Test technique (XPath)
number(cbc:Percent) = 25 or number(cbc:Percent) = 12 or number(cbc:Percent) = 6
Valider selon cette règle

SE-R-007

warning

Pour les fournisseurs suédois utilisant Plusgiro, l'identifiant de compte doit être numérique.

PEPPOL BIS 3.0UBL
Test technique (XPath)
string(number(normalize-space(.))) != 'NaN'
Valider selon cette règle

SE-R-008

warning

Pour les fournisseurs suédois utilisant Bankgiro, l'identifiant de compte doit être numérique.

PEPPOL BIS 3.0UBL
Test technique (XPath)
string(number(normalize-space(.))) != 'NaN'
Valider selon cette règle

SE-R-009

warning

Pour les fournisseurs suédois utilisant Bankgiro, l'identifiant de compte doit comporter 7 à 8 caractères.

PEPPOL BIS 3.0UBL
Test technique (XPath)
string-length(normalize-space(.)) = 7 or string-length(normalize-space(.)) = 8
Valider selon cette règle

SE-R-010

warning

Pour les fournisseurs suédois utilisant Plusgiro, l'identifiant de compte doit comporter 2 à 8 caractères.

PEPPOL BIS 3.0UBL
Test technique (XPath)
string-length(normalize-space(.)) >= 2 and string-length(normalize-space(.)) <= 8
Valider selon cette règle

SE-R-011

warning

Pour les fournisseurs suédois utilisant le Bankgiro ou le Plusgiro suédois, la manière correcte de l'indiquer est d'utiliser le code 30 pour PaymentMeans et l'identifiant FinancialInstitutionBranch avec le code SE:BANKGIRO ou SE:PLUSGIRO.

PEPPOL BIS 3.0UBL
Test technique (XPath)
false()
Valider selon cette règle

SE-R-012

warning

Pour les transactions nationales entre partenaires commerciaux suédois, le virement doit être indiqué par PaymentMeansCode="30".

PEPPOL BIS 3.0UBL
Test technique (XPath)
false()
Valider selon cette règle

SE-R-013

fatal

Le dernier chiffre d'un numéro d'organisation suédois doit être valide selon l'algorithme de Luhn.

PEPPOL BIS 3.0UBL
Test technique (XPath)
u:checkSEOrgnr(normalize-space(cbc:CompanyID))
Valider selon cette règle

Foire aux questions

Qu'est-ce qu'une règle de validation PEPPOL / EN 16931 ?

C'est une règle métier (identifiée par un code tel que BR-CO-13 ou PEPPOL-EN16931-R008) qu'une e-facture doit respecter pour être valide selon la norme européenne EN 16931 ou un CIUS national comme PEPPOL BIS 3.0 ou XRechnung. Les validateurs exécutent ces règles, exprimées en schematron, sur le XML de la facture.

Que signifie une règle « fatale » par rapport à un « avertissement » ?

Une règle fatale doit être respectée, sinon le destinataire rejette la facture. Un avertissement signale une erreur probable mais ne bloque pas la facture. La plupart des règles BR-* et PEPPOL-* sont fatales ; quelques-unes sont des avertissements.

Comment corriger une infraction de règle comme BR-CO-13 ?

Lisez le message de la règle : il indique exactement quels termes métier (codes BT-/BG-) doivent être présents ou doivent s'additionner. Corrigez ces champs dans votre facture, puis revalidez. aiDoks affiche l'ID et le message de la règle en échec pour chaque facture téléversée.

Quels formats utilisent ces règles ?

EN 16931 est le socle commun. PEPPOL BIS 3.0, XRechnung, Factur-X/ZUGFeRD et les profils CIUS nationaux (Allemagne, Danemark, Suède, Italie, Pays-Bas et autres) ajoutent leurs propres règles. Cette page les couvre tous.

Et si ma règle n'est pas listée ici ?

Pas d'inquiétude : cette page met en avant les règles les plus courantes, mais notre validateur contrôle toujours votre facture par rapport à l'ensemble complet des règles (toutes les règles EN 16931, PEPPOL, XRechnung et Factur-X, y compris les contrôles de syntaxe et de listes de codes non listés ici). Téléversez votre facture et vous obtiendrez chaque règle applicable, listée sur cette page ou non.

Arrêtez de deviner pourquoi votre facture a échoué

Téléversez votre facture UBL, CII ou Factur-X et aiDoks signale chaque règle en échec avec son ID et son message – gratuit, sans inscription.