Referencia de reglas de validación de e-facturas

Busque cualquier regla de validación de e-factura por su ID: qué comprueba, la prueba técnica, qué formatos la exigen y cómo corregir una infracción. Cubre el núcleo europeo EN 16931, PEPPOL BIS 3.0, XRechnung y perfiles CIUS nacionales, generado a partir del mismo schematron que ejecutan nuestros validadores.

209reglas documentadas
196fatal (bloqueante)
12familias de reglas

Mostrando209209reglas

EN 16931 — core rules (59)

BR-01

fatal

Una factura debe tener un identificador de especificación (BT-24).

EN 16931CIIUBLBT-24
Prueba técnica (XPath)
normalize-space(rsm:ExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID) != ''
Validar contra esta regla

BR-02

fatal

Una factura debe tener un número de factura (BT-1).

EN 16931CIIUBLBT-1
Prueba técnica (XPath)
normalize-space(rsm:ExchangedDocument/ram:ID) != ''
Validar contra esta regla

BR-03

fatal

Una factura debe tener una fecha de emisión (BT-2).

EN 16931CIIUBLBT-2
Prueba técnica (XPath)
normalize-space(rsm:ExchangedDocument/ram:IssueDateTime/udt:DateTimeString[@format='102']) != ''
Validar contra esta regla

BR-04

fatal

Una factura debe tener un código de tipo de factura (BT-3).

EN 16931CIIUBLBT-3
Prueba técnica (XPath)
normalize-space(rsm:ExchangedDocument/ram:TypeCode) != ''
Validar contra esta regla

BR-05

fatal

Una factura debe tener un código de moneda (BT-5).

EN 16931CIIUBLBT-5
Prueba técnica (XPath)
normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:InvoiceCurrencyCode) != ''
Validar contra esta regla

BR-06

fatal

Una factura debe contener el nombre del vendedor (BT-27).

EN 16931CIIUBLBT-27
Prueba técnica (XPath)
normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:Name) != ''
Validar contra esta regla

BR-07

fatal

Una factura debe contener el nombre del comprador (BT-44).

EN 16931CIIUBLBT-44
Prueba técnica (XPath)
normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:Name) != ''
Validar contra esta regla

BR-08

fatal

Una factura debe contener la dirección postal del vendedor.

EN 16931CIIUBL
Prueba técnica (XPath)
rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress
Validar contra esta regla

BR-09

fatal

La dirección postal del vendedor (BG-5) debe contener el código de país del vendedor (BT-40).

EN 16931CIIUBLBG-5BT-40
Prueba técnica (XPath)
normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:SellerTradeParty/ram:PostalTradeAddress/ram:CountryID) != ''
Validar contra esta regla

BR-10

fatal

Una factura debe contener la dirección postal del comprador (BG-8).

EN 16931CIIUBLBG-8
Prueba técnica (XPath)
rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress
Validar contra esta regla

BR-11

fatal

La dirección postal del comprador debe contener el código de país del comprador (BT-55).

EN 16931CIIUBLBT-55
Prueba técnica (XPath)
normalize-space(rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeAgreement/ram:BuyerTradeParty/ram:PostalTradeAddress/ram:CountryID) != ''
Validar contra esta regla

BR-16

fatal

Una factura debe tener al menos una línea de factura (BG-25).

EN 16931CIIUBLBG-25
Prueba técnica (XPath)
//ram:IncludedSupplyChainTradeLineItem
Validar contra esta regla

BR-17

fatal

El nombre del beneficiario (BT-59) debe indicarse en la factura si el beneficiario (BG-10) es distinto del vendedor (BG-4).

EN 16931CIIUBLBT-59BG-10BG-4
Prueba técnica (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))
Validar contra esta regla

BR-18

fatal

El nombre del representante fiscal del vendedor (BT-62) debe indicarse en la factura si el vendedor (BG-4) tiene un representante fiscal (BG-11).

EN 16931CIIUBLBT-62BG-4BG-11
Prueba técnica (XPath)
(ram:Name)
Validar contra esta regla

BR-19

fatal

La dirección postal del representante fiscal del vendedor (BG-12) debe indicarse en la factura si el vendedor (BG-4) tiene un representante fiscal (BG-11).

EN 16931CIIUBLBG-12BG-4BG-11
Prueba técnica (XPath)
(ram:PostalTradeAddress)
Validar contra esta regla

BR-20

fatal

La dirección postal del representante fiscal del vendedor (BG-12) debe contener el código de país del representante fiscal (BT-69) si el vendedor (BG-4) tiene un representante fiscal (BG-11).

EN 16931CIIUBLBG-12BT-69BG-4BG-11
Prueba técnica (XPath)
(ram:PostalTradeAddress/ram:CountryID)
Validar contra esta regla

BR-21

fatal

Cada línea de factura (BG-25) debe tener un identificador de línea (BT-126).

EN 16931CIIUBLBG-25BT-126
Prueba técnica (XPath)
normalize-space(ram:AssociatedDocumentLineDocument/ram:LineID) != ''
Validar contra esta regla

BR-22

fatal

Cada línea de factura (BG-25) debe tener una cantidad facturada (BT-129).

EN 16931CIIUBLBG-25BT-129
Prueba técnica (XPath)
(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity)
Validar contra esta regla

BR-23

fatal

Una línea de factura (BG-25) debe tener un código de unidad de medida para la cantidad facturada (BT-130).

EN 16931CIIUBLBG-25BT-130
Prueba técnica (XPath)
(ram:SpecifiedLineTradeDelivery/ram:BilledQuantity/@unitCode)
Validar contra esta regla

BR-24

fatal

Cada línea de factura (BG-25) debe tener un importe neto de línea (BT-131).

EN 16931CIIUBLBG-25BT-131
Prueba técnica (XPath)
(ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)
Validar contra esta regla

BR-25

fatal

Cada línea de factura (BG-25) debe contener el nombre del artículo (BT-153).

EN 16931CIIUBLBG-25BT-153
Prueba técnica (XPath)
normalize-space(ram:SpecifiedTradeProduct/ram:Name) != ''
Validar contra esta regla

BR-26

fatal

Cada línea de factura (BG-25) debe contener el precio neto del artículo (BT-146).

EN 16931CIIUBLBG-25BT-146
Prueba técnica (XPath)
(ram:SpecifiedLineTradeAgreement/ram:NetPriceProductTradePrice/ram:ChargeAmount)
Validar contra esta regla

BR-29

fatal

Si se indican tanto la fecha de inicio (BT-73) como la fecha de fin (BT-74) del periodo de facturación, la fecha de fin debe ser posterior o igual a la fecha de inicio.

EN 16931CIIUBLBT-73BT-74
Validar contra esta regla

BR-30

fatal

Si se indican tanto la fecha de inicio (BT-134) como la fecha de fin (BT-135) del periodo de la línea, la fecha de fin debe ser posterior o igual a la fecha de inicio.

EN 16931CIIUBLBT-134BT-135
Validar contra esta regla

BR-31

fatal

Cada descuento a nivel de documento (BG-20) debe tener un importe de descuento (BT-92).

EN 16931CIIUBLBG-20BT-92
Prueba técnica (XPath)
(../ram:ActualAmount)
Validar contra esta regla

BR-32

fatal

Cada descuento a nivel de documento (BG-20) debe tener un código de categoría de IVA del descuento (BT-95).

EN 16931CIIUBLBG-20BT-95
Prueba técnica (XPath)
(../ram:CategoryTradeTax[upper-case(ram:TypeCode) = 'VAT']/ram:CategoryCode)
Validar contra esta regla

BR-33

fatal

Cada descuento a nivel de documento (BG-20) debe tener un motivo de descuento (BT-97) o un código de motivo (BT-98).

EN 16931CIIUBLBG-20BT-97BT-98
Prueba técnica (XPath)
(../ram:Reason) or (../ram:ReasonCode)
Validar contra esta regla

BR-36

fatal

Cada cargo a nivel de documento (BG-21) debe tener un importe de cargo (BT-99).

EN 16931CIIUBLBG-21BT-99
Prueba técnica (XPath)
(../ram:ActualAmount)
Validar contra esta regla

BR-37

fatal

Cada cargo a nivel de documento (BG-21) debe tener un código de categoría de IVA del cargo (BT-102).

EN 16931CIIUBLBG-21BT-102
Prueba técnica (XPath)
(../ram:CategoryTradeTax[upper-case(ram:TypeCode) = 'VAT']/ram:CategoryCode)
Validar contra esta regla

BR-38

fatal

Cada cargo a nivel de documento (BG-21) debe tener un motivo de cargo (BT-104) o un código de motivo (BT-105).

EN 16931CIIUBLBG-21BT-104BT-105
Prueba técnica (XPath)
(../ram:Reason) or (../ram:ReasonCode)
Validar contra esta regla

BR-41

fatal

Cada descuento de línea de factura (BG-27) debe tener un importe de descuento (BT-136).

EN 16931CIIUBLBG-27BT-136
Prueba técnica (XPath)
(../ram:ActualAmount)
Validar contra esta regla

BR-42

fatal

Cada descuento de línea de factura (BG-27) debe tener un motivo de descuento (BT-139) o un código de motivo (BT-140).

EN 16931CIIUBLBG-27BT-139BT-140
Prueba técnica (XPath)
(../ram:Reason) or (../ram:ReasonCode)
Validar contra esta regla

BR-43

fatal

Cada cargo de línea de factura (BG-28) debe tener un importe de cargo (BT-141).

EN 16931CIIUBLBG-28BT-141
Prueba técnica (XPath)
(../ram:ActualAmount)
Validar contra esta regla

BR-44

fatal

Cada cargo de línea de factura debe tener un motivo de cargo o un código de motivo de descuento.

EN 16931CIIUBL
Prueba técnica (XPath)
(../ram:Reason) or (../ram:ReasonCode)
Validar contra esta regla

BR-45

fatal

Cada desglose de IVA (BG-23) debe tener un importe imponible por categoría de IVA (BT-116).

EN 16931CIIUBLBG-23BT-116
Prueba técnica (XPath)
(ram:BasisAmount)
Validar contra esta regla

BR-46

fatal

Cada desglose de IVA (BG-23) debe tener un importe de impuesto por categoría de IVA (BT-117).

EN 16931CIIUBLBG-23BT-117
Prueba técnica (XPath)
(ram:CalculatedAmount)
Validar contra esta regla

BR-47

fatal

Cada desglose de IVA (BG-23) debe definirse mediante un código de categoría de IVA (BT-118).

EN 16931CIIUBLBG-23BT-118
Prueba técnica (XPath)
(.[upper-case(ram:TypeCode) = 'VAT']/ram:CategoryCode)
Validar contra esta regla

BR-48

fatal

Cada desglose de IVA (BG-23) debe tener un tipo de IVA (BT-119), salvo cuando la factura no esté sujeta a IVA.

EN 16931CIIUBLBG-23BT-119
Prueba técnica (XPath)
(.[upper-case(ram:TypeCode) = 'VAT']/ram:RateApplicablePercent) or (.[upper-case(ram:TypeCode) = 'VAT']/ram:CategoryCode = 'O')
Validar contra esta regla

BR-49

fatal

Una instrucción de pago (BG-16) debe especificar el código de tipo de medio de pago (BT-81).

EN 16931CIIUBLBG-16BT-81
Prueba técnica (XPath)
(ram:TypeCode)
Validar contra esta regla

BR-50

fatal

Debe existir un identificador de cuenta de pago (BT-84) si la factura incluye información de transferencia (BG-17).

EN 16931CIIUBLBT-84BG-17
Prueba técnica (XPath)
(ram:IBANID) or (ram:ProprietaryID)
Validar contra esta regla

BR-51

fatal

Conforme a las normas de seguridad de pagos con tarjeta, una factura nunca debe incluir el número completo de la tarjeta principal (BT-87).

EN 16931CIIUBLBT-87
Prueba técnica (XPath)
string-length(ram:ID)<=10
Validar contra esta regla

BR-52

fatal

Cada documento adicional de soporte (BG-24) debe contener una referencia (BT-122).

EN 16931CIIUBLBG-24BT-122
Prueba técnica (XPath)
normalize-space(ram:IssuerAssignedID) != ''
Validar contra esta regla

BR-53

fatal

Si se indica el código de moneda contable del IVA (BT-6), debe indicarse el importe total de IVA en moneda contable (BT-111).

EN 16931CIIUBLBT-6BT-111
Prueba técnica (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))
Validar contra esta regla

BR-54

fatal

Cada atributo de artículo (BG-32) debe contener un nombre de atributo (BT-160) y un valor de atributo (BT-161).

EN 16931CIIUBLBG-32BT-160BT-161
Prueba técnica (XPath)
(ram:Description) and (ram:Value)
Validar contra esta regla

BR-55

fatal

Cada referencia a factura previa (BG-3) debe contener una referencia (BT-25).

EN 16931CIIUBLBG-3BT-25
Prueba técnica (XPath)
normalize-space(ram:IssuerAssignedID) != ''
Validar contra esta regla

BR-56

fatal

Cada representante fiscal del vendedor (BG-11) debe tener un identificador de IVA (BT-63).

EN 16931CIIUBLBG-11BT-63
Prueba técnica (XPath)
normalize-space(ram:SpecifiedTaxRegistration/ram:ID[@schemeID='VA']) != ''
Validar contra esta regla

BR-57

fatal

Cada dirección de entrega (BG-15) debe contener un código de país de entrega (BT-80).

EN 16931CIIUBLBG-15BT-80
Prueba técnica (XPath)
(ram:ShipToTradeParty/ram:PostalTradeAddress and normalize-space(ram:ShipToTradeParty/ram:PostalTradeAddress/ram:CountryID) != '') or not (ram:ShipToTradeParty/ram:PostalTradeAddress)
Validar contra esta regla

BR-61

fatal

Si el código de tipo de medio de pago (BT-81) indica transferencia SEPA, transferencia local o transferencia internacional no SEPA, debe existir el identificador de cuenta de pago (BT-84).

EN 16931CIIUBLBT-81BT-84
Prueba técnica (XPath)
(ram:IBANID) or (ram:ProprietaryID)
Validar contra esta regla

BR-62

fatal

La dirección electrónica del vendedor (BT-34) debe tener un identificador de esquema.

EN 16931CIIUBLBT-34
Prueba técnica (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)
Validar contra esta regla

BR-63

fatal

La dirección electrónica del comprador (BT-49) debe tener un identificador de esquema.

EN 16931CIIUBLBT-49
Prueba técnica (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)
Validar contra esta regla

BR-64

fatal

El identificador estándar del artículo (BT-157) debe tener un identificador de esquema.

EN 16931CIIUBLBT-157
Prueba técnica (XPath)
normalize-space(ram:SpecifiedTradeProduct/ram:GlobalID/@schemeID) != '' or not (ram:SpecifiedTradeProduct/ram:GlobalID)
Validar contra esta regla

BR-65

fatal

El identificador de clasificación del artículo (BT-158) debe tener un identificador de esquema.

EN 16931CIIUBLBT-158
Prueba técnica (XPath)
normalize-space(ram:ClassCode/@listID) != '' or not (ram:ClassCode)
Validar contra esta regla

EN 16931 — calculation rules (18)

BR-CO-03

fatal

La fecha de devengo del IVA (BT-7) y el código de fecha de devengo del IVA (BT-8) son mutuamente excluyentes.

EN 16931CIIUBLBT-7BT-8
Prueba técnica (XPath)
((//ram:TaxPointDate) and not(//ram:DueDateTypeCode)) or (not (//ram:TaxPointDate) and (//ram:DueDateTypeCode)) or (not (//ram:TaxPointDate) and not (//ram:DueDateTypeCode))
Validar contra esta regla

BR-CO-04

fatal

Cada línea de factura (BG-25) debe estar categorizada con un código de categoría de IVA del artículo facturado (BT-151).

EN 16931CIIUBLBG-25BT-151
Prueba técnica (XPath)
(ram:SpecifiedLineTradeSettlement/ram:ApplicableTradeTax[upper-case(ram:TypeCode) = 'VAT']/ram:CategoryCode)
Validar contra esta regla

BR-CO-05

fatal

El código de motivo de descuento a nivel de documento (BT-98) y el motivo de descuento (BT-97) deben indicar el mismo tipo de descuento.

EN 16931CIIUBLBT-98BT-97
Prueba técnica (XPath)
true()
Validar contra esta regla

BR-CO-06

fatal

El código de motivo de cargo a nivel de documento (BT-105) y el motivo de cargo (BT-104) deben indicar el mismo tipo de cargo.

EN 16931CIIUBLBT-105BT-104
Prueba técnica (XPath)
true()
Validar contra esta regla

BR-CO-07

fatal

El código de motivo de descuento de línea (BT-140) y el motivo de descuento (BT-139) deben indicar el mismo tipo de descuento.

EN 16931CIIUBLBT-140BT-139
Prueba técnica (XPath)
true()
Validar contra esta regla

BR-CO-08

fatal

El código de motivo de cargo de línea (BT-145) y el motivo de cargo (BT-144) deben indicar el mismo tipo de cargo.

EN 16931CIIUBLBT-145BT-144
Prueba técnica (XPath)
true()
Validar contra esta regla

BR-CO-09

fatal

El identificador de IVA del vendedor (BT-31), el del representante fiscal (BT-63) y el del comprador (BT-48) deben tener un prefijo conforme al código ISO 3166-1 alpha-2 que identifique el país de emisión. No obstante, Grecia puede usar el prefijo 'EL'.

EN 16931CIIUBLBT-31BT-63BT-48
Prueba técnica (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), ' '))
Validar contra esta regla

BR-CO-10

fatal

Suma de importes netos de las líneas (BT-106) = Suma de los importes netos de las líneas (BT-131).

EN 16931CIIUBLBT-106BT-131
Prueba técnica (XPath)
xs:decimal(ram:LineTotalAmount) = round(xs:decimal(sum(../../ram:IncludedSupplyChainTradeLineItem/ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation/ram:LineTotalAmount)) * xs:decimal(100)) div xs:decimal(100)
Validar contra esta regla

BR-CO-11

fatal

Suma de descuentos a nivel de documento (BT-107) = Suma de los importes de descuento a nivel de documento (BT-92).

EN 16931CIIUBLBT-107BT-92
Prueba técnica (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)
Validar contra esta regla

BR-CO-12

fatal

Suma de cargos a nivel de documento (BT-108) = Suma de los importes de cargo a nivel de documento (BT-99).

EN 16931CIIUBLBT-108BT-99
Prueba técnica (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)
Validar contra esta regla

BR-CO-13

fatal

Importe total sin IVA (BT-109) = Suma de los importes netos de las líneas (BT-131) − Suma de descuentos a nivel de documento (BT-107) + Suma de cargos a nivel de documento (BT-108).

EN 16931CIIUBLBT-109BT-131BT-107BT-108
Prueba técnica (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))
Validar contra esta regla

BR-CO-15

fatal

Importe total con IVA (BT-112) = Importe total sin IVA (BT-109) + Importe total de IVA (BT-110).

EN 16931CIIUBLBT-112BT-109BT-110
Prueba técnica (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)))
Validar contra esta regla

BR-CO-16

fatal

Importe a pagar (BT-115) = Importe total con IVA (BT-112) − Importe pagado (BT-113) + Importe de redondeo (BT-114).

EN 16931CIIUBLBT-115BT-112BT-113BT-114
Prueba técnica (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)))
Validar contra esta regla

BR-CO-17

fatal

Importe de impuesto por categoría de IVA (BT-117) = Importe imponible (BT-116) × (Tipo de IVA (BT-119) / 100), redondeado a dos decimales.

EN 16931CIIUBLBT-117BT-116BT-119
Validar contra esta regla

BR-CO-18

fatal

Una factura debe tener al menos un grupo de desglose de IVA (BG-23).

EN 16931CIIUBLBG-23
Prueba técnica (XPath)
//rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:ApplicableTradeTax
Validar contra esta regla

BR-CO-21

fatal

Cada descuento a nivel de documento (BG-20) debe contener un motivo de descuento (BT-97) o un código de motivo (BT-98), o ambos.

EN 16931CIIUBLBG-20BT-97BT-98
Prueba técnica (XPath)
(../ram:Reason) or (../ram:ReasonCode)
Validar contra esta regla

BR-CO-22

fatal

Cada cargo a nivel de documento (BG-21) debe contener un motivo de cargo (BT-104) o un código de motivo (BT-105), o ambos.

EN 16931CIIUBLBG-21BT-104BT-105
Prueba técnica (XPath)
(../ram:Reason) or (../ram:ReasonCode)
Validar contra esta regla

EN 16931 — VAT category rules (16)

BR-AE-01

fatal

Una factura que contenga una línea, descuento o cargo cuya categoría de IVA sea "Inversión del sujeto pasivo" debe contener en el desglose de IVA exactamente un código de categoría de IVA igual a "Inversión del sujeto pasivo".

EN 16931CIIUBL
Prueba técnica (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'])))
Validar contra esta regla

BR-AE-02

fatal

Una factura que contenga una línea cuya categoría de IVA del artículo sea "Inversión del sujeto pasivo" debe contener el identificador de IVA del vendedor, el identificador de registro fiscal del vendedor y/o el del representante fiscal, y el identificador de IVA del comprador y/o el identificador legal del comprador.

EN 16931CIIUBL
Prueba técnica (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)
Validar contra esta regla

BR-AE-05

fatal

En una línea de factura cuyo código de categoría de IVA del artículo sea "Inversión del sujeto pasivo", el tipo de IVA del artículo debe ser 0 (cero).

EN 16931CIIUBL
Prueba técnica (XPath)
ram:RateApplicablePercent = 0
Validar contra esta regla

BR-AE-09

fatal

El importe de impuesto en un desglose de IVA cuya categoría sea "Inversión del sujeto pasivo" debe ser 0 (cero).

EN 16931CIIUBL
Prueba técnica (XPath)
../ram:CalculatedAmount = 0
Validar contra esta regla

BR-AE-10

fatal

Un desglose de IVA con la categoría "Inversión del sujeto pasivo" debe tener un código de motivo de exención de IVA o el texto del motivo "Inversión del sujeto pasivo".

EN 16931CIIUBL
Prueba técnica (XPath)
(../ram:ExemptionReason) or (../ram:ExemptionReasonCode)
Validar contra esta regla

BR-E-01

fatal

Una factura que contenga una línea, descuento o cargo cuya categoría de IVA sea "Exento de IVA" debe contener exactamente un desglose de IVA con la categoría igual a "Exento de IVA".

EN 16931CIIUBL
Prueba técnica (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'])))
Validar contra esta regla

BR-E-02

fatal

Una factura que contenga una línea cuya categoría de IVA del artículo sea "Exento de IVA" debe contener el identificador de IVA del vendedor, el identificador de registro fiscal y/o el del representante fiscal.

EN 16931CIIUBL
Prueba técnica (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']
Validar contra esta regla

BR-G-01

fatal

Una factura que contenga una línea, descuento o cargo cuya categoría de IVA sea "Exportación fuera de la UE" debe contener en el desglose de IVA exactamente un código de categoría igual a "Exportación fuera de la UE".

EN 16931CIIUBL
Prueba técnica (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'])))
Validar contra esta regla

BR-G-02

fatal

Una factura que contenga una línea cuya categoría de IVA del artículo sea "Exportación fuera de la UE" debe contener el identificador de IVA del vendedor o el del representante fiscal.

EN 16931CIIUBL
Prueba técnica (XPath)
(//ram:SellerTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA'] or //ram:SellerTaxRepresentativeTradeParty/ram:SpecifiedTaxRegistration/ram:ID[@schemeID = 'VA'])
Validar contra esta regla

BR-IC-01

fatal

Una factura que contenga una línea, descuento o cargo cuya categoría de IVA sea "Entrega intracomunitaria" debe contener en el desglose de IVA exactamente un código de categoría igual a "Entrega intracomunitaria".

EN 16931CIIUBL
Prueba técnica (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'])))
Validar contra esta regla

BR-IC-02

fatal

Una factura que contenga una línea cuya categoría de IVA del artículo sea "Entrega intracomunitaria" debe contener el identificador de IVA del vendedor o el del representante fiscal, y el identificador de IVA del comprador.

EN 16931CIIUBL
Prueba técnica (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']
Validar contra esta regla

BR-O-01

fatal

Una factura que contenga una línea, descuento o cargo cuya categoría de IVA sea "No sujeto a IVA" debe contener exactamente un grupo de desglose de IVA con la categoría igual a "No sujeto a IVA".

EN 16931CIIUBL
Prueba técnica (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'])))
Validar contra esta regla

BR-S-01

fatal

Una factura que contenga una línea, descuento o cargo cuya categoría de IVA sea "Tipo estándar" debe contener en el desglose de IVA al menos un código de categoría igual a "Tipo estándar".

EN 16931CIIUBL
Validar contra esta regla

BR-S-02

fatal

Una factura que contenga una línea cuya categoría de IVA del artículo sea "Tipo estándar" debe contener el identificador de IVA del vendedor, el identificador de registro fiscal y/o el del representante fiscal.

EN 16931CIIUBL
Prueba técnica (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']
Validar contra esta regla

BR-Z-01

fatal

Una factura que contenga una línea, descuento o cargo cuya categoría de IVA sea "Tipo cero" debe contener en el desglose de IVA exactamente un código de categoría igual a "Tipo cero".

EN 16931CIIUBL
Prueba técnica (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'])))
Validar contra esta regla

BR-Z-02

fatal

Una factura que contenga una línea cuya categoría de IVA del artículo sea "Tipo cero" debe contener el identificador de IVA del vendedor, el identificador de registro fiscal y/o el del representante fiscal.

EN 16931CIIUBL
Prueba técnica (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']
Validar contra esta regla

EN 16931 — decimal rules (14)

BR-DEC-01

fatal

El número máximo de decimales permitido para el importe de descuento a nivel de documento (BT-92) es 2.

EN 16931CIIUBLBT-92
Prueba técnica (XPath)
string-length(substring-after(../ram:ActualAmount,'.'))<=2
Validar contra esta regla

BR-DEC-02

fatal

El número máximo de decimales permitido para el importe base de descuento a nivel de documento (BT-93) es 2.

EN 16931CIIUBLBT-93
Prueba técnica (XPath)
string-length(substring-after(../ram:BasisAmount,'.'))<=2
Validar contra esta regla

BR-DEC-05

fatal

El número máximo de decimales permitido para el importe de cargo a nivel de documento (BT-99) es 2.

EN 16931CIIUBLBT-99
Prueba técnica (XPath)
string-length(substring-after(../ram:ActualAmount,'.'))<=2
Validar contra esta regla

BR-DEC-06

fatal

El número máximo de decimales permitido para el importe base de cargo a nivel de documento (BT-100) es 2.

EN 16931CIIUBLBT-100
Prueba técnica (XPath)
string-length(substring-after(../ram:BasisAmount,'.'))<=2
Validar contra esta regla

BR-DEC-09

fatal

El número máximo de decimales permitido para la suma de importes netos de líneas (BT-106) es 2.

EN 16931CIIUBLBT-106
Prueba técnica (XPath)
string-length(substring-after(ram:LineTotalAmount,'.'))<=2
Validar contra esta regla

BR-DEC-10

fatal

El número máximo de decimales permitido para la suma de descuentos a nivel de documento (BT-107) es 2.

EN 16931CIIUBLBT-107
Prueba técnica (XPath)
string-length(substring-after(ram:AllowanceTotalAmount,'.'))<=2
Validar contra esta regla

BR-DEC-11

fatal

El número máximo de decimales permitido para la suma de cargos a nivel de documento (BT-108) es 2.

EN 16931CIIUBLBT-108
Prueba técnica (XPath)
string-length(substring-after(ram:ChargeTotalAmount,'.'))<=2
Validar contra esta regla

BR-DEC-12

fatal

El número máximo de decimales permitido para el importe total sin IVA (BT-109) es 2.

EN 16931CIIUBLBT-109
Prueba técnica (XPath)
string-length(substring-after(ram:TaxBasisTotalAmount,'.'))<=2
Validar contra esta regla

BR-DEC-13

fatal

El número máximo de decimales permitido para el importe total de IVA (BT-110) es 2.

EN 16931CIIUBLBT-110
Prueba técnica (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)]
Validar contra esta regla

BR-DEC-14

fatal

El número máximo de decimales permitido para el importe total con IVA (BT-112) es 2.

EN 16931CIIUBLBT-112
Prueba técnica (XPath)
string-length(substring-after(ram:GrandTotalAmount,'.'))<=2
Validar contra esta regla

BR-DEC-15

fatal

El número máximo de decimales permitido para el importe total de IVA en moneda contable (BT-111) es 2.

EN 16931CIIUBLBT-111
Prueba técnica (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)]
Validar contra esta regla

BR-DEC-16

fatal

El número máximo de decimales permitido para el importe pagado (BT-113) es 2.

EN 16931CIIUBLBT-113
Prueba técnica (XPath)
string-length(substring-after(ram:TotalPrepaidAmount,'.'))<=2
Validar contra esta regla

BR-DEC-17

fatal

El número máximo de decimales permitido para el importe de redondeo (BT-114) es 2.

EN 16931CIIUBLBT-114
Prueba técnica (XPath)
string-length(substring-after(ram:RoundingAmount,'.'))<=2
Validar contra esta regla

BR-DEC-18

fatal

El número máximo de decimales permitido para el importe a pagar (BT-115) es 2.

EN 16931CIIUBLBT-115
Prueba técnica (XPath)
string-length(substring-after(ram:DuePayableAmount,'.'))<=2
Validar contra esta regla

PEPPOL BIS 3.0 (38)

PEPPOL-COMMON-R042

fatal

El número de organización danés (CVR) DEBE indicarse en el formato correcto.

PEPPOL BIS 3.0UBL
Prueba técnica (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)
Validar contra esta regla

PEPPOL-COMMON-R049

fatal

El número de organización sueco DEBE indicarse en el formato correcto.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
string-length(normalize-space()) = 10 and string(number(normalize-space())) != 'NaN' and u:checkSEOrgnr(normalize-space())
Validar contra esta regla

PEPPOL-EN16931-R004

fatal

El identificador de especificación DEBE tener el valor 'urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0'.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
starts-with(normalize-space(cbc:CustomizationID/text()), 'urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0')
Validar contra esta regla

PEPPOL-EN16931-R005

fatal

El código de moneda contable del IVA DEBE ser distinto del código de moneda de la factura cuando se indique.

PEPPOL BIS 3.0XRechnung 3.xCIIUBL
Prueba técnica (XPath)
not(normalize-space(text()) = normalize-space(../cbc:DocumentCurrencyCode/text()))
Validar contra esta regla

PEPPOL-EN16931-R043

fatal

El valor del ChargeIndicator del descuento/cargo DEBE ser 'true' o 'false'.

PEPPOL BIS 3.0XRechnung 3.xUBL
Prueba técnica (XPath)
normalize-space(cbc:ChargeIndicator/text()) = 'true' or normalize-space(cbc:ChargeIndicator/text()) = 'false'
Validar contra esta regla

PEPPOL-EN16931-R046

fatal

El precio neto del artículo DEBE ser igual a (precio bruto − importe del descuento) cuando se indique un precio bruto.

PEPPOL BIS 3.0XRechnung 3.xCIIUBL
Prueba técnica (XPath)
not(cbc:BaseAmount) or xs:decimal(../cbc:PriceAmount) = xs:decimal(cbc:BaseAmount) - xs:decimal(cbc:Amount)
Validar contra esta regla

PEPPOL-EN16931-R051

fatal

Todos los atributos currencyID deben tener el mismo valor que el código de moneda de la factura (BT-5), salvo el importe total de IVA de la factura en moneda contable (BT-111).

PEPPOL BIS 3.0UBLBT-5BT-111
Prueba técnica (XPath)
@currencyID = $documentCurrencyCode
Validar contra esta regla

PEPPOL-EN16931-R054

fatal

Solo se DEBE indicar un total de impuestos sin subtotales cuando se indique el código de moneda fiscal.

PEPPOL BIS 3.0XRechnung 3.xCIIUBL
Prueba técnica (XPath)
count(cac:TaxTotal[not(cac:TaxSubtotal)]) = (if (cbc:TaxCurrencyCode) then 1 else 0)
Validar contra esta regla

PEPPOL-EN16931-R055

fatal

El importe total de IVA de la factura y el importe total de IVA en moneda contable DEBEN tener el mismo signo.

PEPPOL BIS 3.0XRechnung 3.xCIIUBL
Prueba técnica (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)
Validar contra esta regla

PEPPOL-EN16931-R101

fatal

El elemento Referencia de documento solo puede utilizarse para el objeto de la línea de factura.

PEPPOL BIS 3.0XRechnung 3.xCIIUBL
Prueba técnica (XPath)
(not(cac:DocumentReference) or (cac:DocumentReference/cbc:DocumentTypeCode='130'))
Validar contra esta regla

PEPPOL-EN16931-R110

fatal

La fecha de inicio del periodo de la línea DEBE estar dentro del periodo de la factura.

PEPPOL BIS 3.0XRechnung 3.xCIIUBL
Prueba técnica (XPath)
xs:date(text()) >= xs:date(../../../cac:InvoicePeriod/cbc:StartDate)
Validar contra esta regla

PEPPOL-EN16931-R111

fatal

La fecha de fin del periodo de la línea DEBE estar dentro del periodo de la factura.

PEPPOL BIS 3.0XRechnung 3.xCIIUBL
Prueba técnica (XPath)
xs:date(text()) <= xs:date(../../../cac:InvoicePeriod/cbc:EndDate)
Validar contra esta regla

PEPPOL-EN16931-R120

fatal

El importe neto de la línea de factura DEBE ser igual a (cantidad facturada * (precio neto del artículo / cantidad base del precio) + suma de cargos de la línea − suma de descuentos de la línea).

PEPPOL BIS 3.0XRechnung 3.xUBL
Prueba técnica (XPath)
u:slack($lineExtensionAmount, ($quantity * ($priceAmount div $baseQuantity)) + $chargesTotal - $allowancesTotal, 0.02)
Validar contra esta regla

PEPPOL-EN16931-R130

fatal

El código de unidad de la cantidad base del precio DEBE coincidir con el de la cantidad facturada.

PEPPOL BIS 3.0XRechnung 3.xCIIUBL
Prueba técnica (XPath)
not($hasQuantity) or @unitCode = $quantity/@unitCode
Validar contra esta regla

National CIUS (DK) (13)

DK-R-002

fatal

Los proveedores daneses DEBEN indicar la entidad legal (número CVR).

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
(normalize-space(cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID/text()) != '')
Validar contra esta regla

DK-R-003

warning

Los proveedores daneses DEBEN indicar el identificador legal (número CVR) cuando el código de clasificación del artículo sea TST.

PEPPOL BIS 3.0UBL
Prueba técnica (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') ) )
Validar contra esta regla

DK-R-004

fatal

Los proveedores daneses DEBEN indicar un texto de motivo cuando el código de motivo de descuento/cargo sea ZZZ.

PEPPOL BIS 3.0UBL
Prueba técnica (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, '#')))) ) ) )
Validar contra esta regla

DK-R-005

fatal

Para los proveedores daneses se permiten los siguientes códigos de medio de pago: 1, 10, 31, 42, 48, 49, 50, 58, 59, 93 y 97.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
contains(' 1 10 31 42 48 49 50 58 59 93 97 ', concat(' ', cbc:PaymentMeansCode, ' '))
Validar contra esta regla

DK-R-006

fatal

Para los proveedores daneses, los datos bancarios y de enrutamiento son obligatorios para el pago por transferencia.

PEPPOL BIS 3.0UBL
Prueba técnica (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()) != '')) )
Validar contra esta regla

DK-R-007

fatal

Para los proveedores daneses, el ID del mandato de pago y el ID de cuenta del vendedor son obligatorios para domiciliación.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
not((cbc:PaymentMeansCode = '49') and not((normalize-space(cac:PaymentMandate/cbc:ID/text()) != '') and (normalize-space(cac:PaymentMandate/cac:PayerFinancialAccount/cbc:ID/text()) != '')) )
Validar contra esta regla

DK-R-008

fatal

Para los proveedores daneses, el número principal de la tarjeta es obligatorio para el pago con tarjeta.

PEPPOL BIS 3.0UBL
Prueba técnica (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}$') ) )
Validar contra esta regla

DK-R-009

fatal

Para los proveedores daneses, el nombre del titular de la tarjeta es obligatorio para el pago con tarjeta.

PEPPOL BIS 3.0UBL
Prueba técnica (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) )
Validar contra esta regla

DK-R-010

fatal

Para los proveedores daneses, el ID de la sucursal de la institución financiera es obligatorio para el tipo de pago 93.

PEPPOL BIS 3.0UBL
Prueba técnica (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) ) )
Validar contra esta regla

DK-R-011

fatal

Para los proveedores daneses, el ID de la cuenta financiera del beneficiario es obligatorio para el tipo de pago 93.

PEPPOL BIS 3.0UBL
Prueba técnica (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)) )
Validar contra esta regla

DK-R-013

fatal

Para los proveedores daneses solo se permiten valores positivos en la cantidad facturada.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
not((boolean(cbc:ID)) and (normalize-space(cbc:ID/@schemeID) = '') )
Validar contra esta regla

DK-R-014

fatal

Para los proveedores daneses, el código de moneda del documento debe coincidir con el código de moneda fiscal cuando se indique.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
not(((boolean(cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID)) and (normalize-space(cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID/@schemeID) != '0184')) )
Validar contra esta regla

DK-R-016

fatal

Para las notas de crédito danesas con comprador danés, debe indicarse una referencia a la factura previa.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
not((boolean(/ubl-creditnote:CreditNote) and ($DKCustomerCountry = 'DK')) and (number(cac:LegalMonetaryTotal/cbc:PayableAmount/text()) < 0) )
Validar contra esta regla

National CIUS (GR) (17)

GR-R-001-2

fatal

Cuando el proveedor sea griego, el primer segmento del ID de factura debe ser un número fiscal válido de 9 dígitos.

PEPPOL BIS 3.0UBL
Prueba técnica (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) )
Validar contra esta regla

GR-R-003

fatal

Para los proveedores griegos, el IVA debe comenzar por 'EL' y ser un número TIN válido.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
substring(.,1,2) = 'EL' and u:TinVerification(substring(.,3))
Validar contra esta regla

GR-R-004-1

fatal

Cuando el proveedor sea griego, debe haber un número MARK.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
count(cac:AdditionalDocumentReference[cbc:DocumentDescription = '##M.AR.K##'])=1
Validar contra esta regla

GR-R-006

fatal

Para los compradores griegos, la factura DEBE contener su número de IVA.

PEPPOL BIS 3.0UBL
Prueba técnica (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))
Validar contra esta regla

GR-R-008-2

fatal

Cuando el proveedor sea griego, no debe haber más de una URL de factura.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
(count(cac:AdditionalDocumentReference[cbc:DocumentDescription = '##INVOICE|URL##']) = 0 ) or (count(cac:AdditionalDocumentReference[cbc:DocumentDescription = '##INVOICE|URL##']) = 1 )
Validar contra esta regla

GR-R-009

fatal

Los proveedores griegos que envíen una factura a través de la red PEPPOL deben utilizar un número TIN correcto como dirección electrónica.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
./@schemeID='9933' and u:TinVerification(.)
Validar contra esta regla

GR-R-010

fatal

Los proveedores griegos que envíen una factura a través de PEPPOL a un comprador griego deben utilizar un número TIN correcto como dirección electrónica.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
./@schemeID='9933' and u:TinVerification(.)
Validar contra esta regla

National CIUS (IS) (6)

IS-R-002

fatal

Si el vendedor es islandés, debe contener el ID legal del vendedor.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
exists(cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID) and cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:CompanyID/@schemeID = '0196'
Validar contra esta regla

IS-R-003

fatal

Si el vendedor es islandés, debe contener su dirección con nombre de calle y código postal.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
exists(cac:AccountingSupplierParty/cac:Party/cac:PostalAddress/cbc:StreetName) and exists(cac:AccountingSupplierParty/cac:Party/cac:PostalAddress/cbc:PostalZone)
Validar contra esta regla

IS-R-004

fatal

Si tanto el vendedor como el comprador son islandeses, la factura debe contener el identificador legal islandés del comprador.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
exists(cac:Party/cac:PartyLegalEntity/cbc:CompanyID) and cac:Party/cac:PartyLegalEntity/cbc:CompanyID/@schemeID = '0196'
Validar contra esta regla

IS-R-005

fatal

Si tanto el vendedor como el comprador son islandeses, la factura debe contener la dirección del comprador con nombre de calle y código postal.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
exists(cac:Party/cac:PostalAddress/cbc:StreetName) and exists(cac:Party/cac:PostalAddress/cbc:PostalZone)
Validar contra esta regla

IS-R-006

fatal

Si el vendedor es islandés y el medio de pago es transferencia, debe indicarse un ID válido de PayeeFinancialAccount.

PEPPOL BIS 3.0UBL
Prueba técnica (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']))
Validar contra esta regla

IS-R-007

fatal

Si el vendedor es islandés y el medio de pago es transferencia bancaria, debe indicarse un ID válido de PayeeFinancialAccount.

PEPPOL BIS 3.0UBL
Prueba técnica (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']))
Validar contra esta regla

National CIUS (IT) (4)

IT-R-001

fatal

Para los proveedores italianos, BT-32 debe tener una longitud mínima de 11 y máxima de 16.

PEPPOL BIS 3.0UBLBT-32
Prueba técnica (XPath)
matches(normalize-space(cbc:CompanyID),'^[A-Z0-9]{11,16}$')
Validar contra esta regla

IT-R-002

fatal

Los proveedores italianos DEBEN indicar la primera línea de la dirección postal.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
cac:PostalAddress/cbc:StreetName
Validar contra esta regla

National CIUS (NL) (9)

NL-R-001

fatal

Para los proveedores neerlandeses, si el documento es una nota de crédito, DEBE contener una referencia a la factura.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
/*/cac:BillingReference/cac:InvoiceDocumentReference/cbc:ID
Validar contra esta regla

NL-R-002

fatal

Para los proveedores neerlandeses, la dirección del proveedor DEBE contener calle, ciudad y código postal.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
cbc:StreetName and cbc:CityName and cbc:PostalZone
Validar contra esta regla

NL-R-003

fatal

Para los proveedores neerlandeses, el identificador legal DEBE ser un número KVK u OIN (schemeID 0106 o 0190).

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
(contains(concat(' ', string-join(@schemeID, ' '), ' '), ' 0106 ') or contains(concat(' ', string-join(@schemeID, ' '), ' '), ' 0190 ')) and (normalize-space(.) != '')
Validar contra esta regla

NL-R-004

fatal

Para los proveedores neerlandeses, si el cliente está en los Países Bajos, la dirección del cliente DEBE contener calle, ciudad y código postal.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
cbc:StreetName and cbc:CityName and cbc:PostalZone
Validar contra esta regla

NL-R-005

fatal

Para los proveedores neerlandeses, si el cliente está en los Países Bajos, el identificador legal del cliente DEBE ser un número KVK u OIN.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
(contains(concat(' ', string-join(@schemeID, ' '), ' '), ' 0106 ') or contains(concat(' ', string-join(@schemeID, ' '), ' '), ' 0190 ')) and (normalize-space(.) != '')
Validar contra esta regla

NL-R-006

fatal

Para los proveedores neerlandeses, si el representante fiscal está en los Países Bajos, la dirección DEBE contener calle, ciudad y código postal.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
cbc:StreetName and cbc:CityName and cbc:PostalZone
Validar contra esta regla

NL-R-007

fatal

Para los proveedores neerlandeses, el proveedor DEBE indicar un medio de pago si el pago va del cliente al proveedor.

PEPPOL BIS 3.0UBL
Prueba técnica (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)
Validar contra esta regla

NL-R-008

fatal

Para los proveedores neerlandeses, el código de medio de pago debe ser 30, 48, 49, 57, 58 o 59.

PEPPOL BIS 3.0UBL
Prueba técnica (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'
Validar contra esta regla

NL-R-009

fatal

Para los proveedores neerlandeses, si se usa una referencia de línea de pedido, debe existir una referencia de pedido a nivel de documento.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
exists(/*/cac:OrderReference/cbc:ID)
Validar contra esta regla

National CIUS (NO) (2)

NO-R-001

fatal

Los proveedores noruegos DEBEN indicar el ID de IVA en el formato correcto (12 dígitos + 'MVA').

PEPPOL BIS 3.0UBL
Prueba técnica (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')
Validar contra esta regla

NO-R-002

warning

Para los proveedores noruegos, la mayoría de los emisores de facturas deben añadir "Foretaksregisteret" a su registro.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
normalize-space(cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'TAX']/cbc:CompanyID) = 'Foretaksregisteret'
Validar contra esta regla

National CIUS (SE) (13)

SE-R-001

fatal

Para los proveedores suecos, los números de IVA deben tener 14 caracteres.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
string-length(normalize-space(cac:PartyTaxScheme[cac:TaxScheme/cbc:ID = 'VAT']/cbc:CompanyID)) = 14
Validar contra esta regla

SE-R-002

fatal

Para los proveedores suecos, los 12 caracteres finales del número de IVA deben ser numéricos.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
string(number(substring(cac:PartyTaxScheme[cac:TaxScheme/cbc:ID = 'VAT']/cbc:CompanyID, 3, 12))) != 'NaN'
Validar contra esta regla

SE-R-005

fatal

Para los proveedores suecos, cuando se utilice el identificador de registro fiscal del vendedor, debe indicarse 'Godkand for F-skatt'.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
normalize-space(upper-case(.)) = 'GODKÄND FÖR F-SKATT'
Validar contra esta regla

SE-R-006

fatal

Para los proveedores suecos solo se utilizan los tipos estándar de IVA del 6, 12 o 25 %.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
number(cbc:Percent) = 25 or number(cbc:Percent) = 12 or number(cbc:Percent) = 6
Validar contra esta regla

SE-R-007

warning

Para los proveedores suecos que utilicen Plusgiro, el ID de la cuenta debe ser numérico.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
string(number(normalize-space(.))) != 'NaN'
Validar contra esta regla

SE-R-008

warning

Para los proveedores suecos que utilicen Bankgiro, el ID de la cuenta debe ser numérico.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
string(number(normalize-space(.))) != 'NaN'
Validar contra esta regla

SE-R-009

warning

Para los proveedores suecos que utilicen Bankgiro, el ID de la cuenta debe tener 7-8 caracteres.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
string-length(normalize-space(.)) = 7 or string-length(normalize-space(.)) = 8
Validar contra esta regla

SE-R-010

warning

Para los proveedores suecos que utilicen Plusgiro, el ID de la cuenta debe tener 2-8 caracteres.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
string-length(normalize-space(.)) >= 2 and string-length(normalize-space(.)) <= 8
Validar contra esta regla

SE-R-011

warning

Para los proveedores suecos que utilicen Bankgiro o Plusgiro suecos, la forma correcta de indicarlo es usar el código 30 para PaymentMeans y el ID de FinancialInstitutionBranch con el código SE:BANKGIRO o SE:PLUSGIRO.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
false()
Validar contra esta regla

SE-R-012

warning

Para las transacciones nacionales entre socios comerciales suecos, la transferencia bancaria debe indicarse con PaymentMeansCode="30".

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
false()
Validar contra esta regla

SE-R-013

fatal

El último dígito de un número de organización sueco debe ser válido según el algoritmo de Luhn.

PEPPOL BIS 3.0UBL
Prueba técnica (XPath)
u:checkSEOrgnr(normalize-space(cbc:CompanyID))
Validar contra esta regla

Preguntas frecuentes

¿Qué es una regla de validación PEPPOL / EN 16931?

Es una regla de negocio (identificada por un código como BR-CO-13 o PEPPOL-EN16931-R008) que una e-factura debe cumplir para ser válida según el estándar europeo EN 16931 o un CIUS nacional como PEPPOL BIS 3.0 o XRechnung. Los validadores ejecutan estas reglas, expresadas como schematron, contra el XML de la factura.

¿Qué significa una regla «fatal» frente a una «advertencia»?

Una regla fatal debe cumplirse o el receptor rechaza la factura. Una advertencia señala un probable error pero no bloquea la factura. La mayoría de las reglas BR-* y PEPPOL-* son fatales; unas pocas son advertencias.

¿Cómo corrijo una infracción de regla como BR-CO-13?

Lee el mensaje de la regla: indica exactamente qué términos de negocio (códigos BT-/BG-) deben estar presentes o deben sumar. Corrige esos campos en tu factura y vuelve a validar. aiDoks muestra el ID y el mensaje de la regla fallida para cada factura subida.

¿Qué formatos usan estas reglas?

EN 16931 es el núcleo común. PEPPOL BIS 3.0, XRechnung, Factur-X/ZUGFeRD y los perfiles CIUS nacionales (Alemania, Dinamarca, Suecia, Italia, los Países Bajos y otros) añaden sus propias reglas. Esta página los cubre todos.

¿Y si mi regla no aparece aquí?

No te preocupes: esta página destaca las reglas más comunes, pero nuestro validador siempre comprueba tu factura contra el conjunto completo de reglas (todas las reglas EN 16931, PEPPOL, XRechnung y Factur-X, incluidas las comprobaciones de sintaxis y de listas de códigos no listadas aquí). Sube tu factura y obtendrás todas las reglas aplicables, aparezcan en esta página o no.

Deja de adivinar por qué falló tu factura

Sube tu factura UBL, CII o Factur-X y aiDoks informa de cada regla fallida con su ID y mensaje: gratis, sin registro.