使用ZUGFeRD-csharp生成的XRechnung XML遇Schematron验证失败求助
问题:XRechnung XML Schematron验证失败
我使用C#的ZUGFeRD-csharp(s2industries)库将德国发票PDF转换为ZUGFeRD XRechnung格式,配置参数为:ZUGFeRDVersion.Version21, s2industries.ZUGFeRD.Profile.XRechnung
XML已成功生成,但通过XRechnung Validator验证时抛出异常:Schematron validation of the submitted XRechnung failed
附上生成的XML文件,恳请协助排查需要补充或修正的内容:
<?xml version="1.0" encoding="utf-8"?> <rsm:CrossIndustryInvoice xmlns:a="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"> <rsm:ExchangedDocumentContext> <ram:GuidelineSpecifiedDocumentContextParameter> <ram:ID>urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_2.0</ram:ID> </ram:GuidelineSpecifiedDocumentContextParameter> </rsm:ExchangedDocumentContext> <rsm:ExchangedDocument> <ram:ID>1111111</ram:ID> <ram:TypeCode>111</ram:TypeCode> <ram:IssueDateTime> <udt:DateTimeString format="102">20221219</udt:DateTimeString> </ram:IssueDateTime> <ram:IncludedNote> <ram:Content>dummy content </ram:Content> <ram:SubjectCode>REG</ram:SubjectCode> </ram:IncludedNote> </rsm:ExchangedDocument> <rsm:SupplyChainTradeTransaction> <ram:IncludedSupplyChainTradeLineItem> <ram:AssociatedDocumentLineDocument> <ram:LineID>1</ram:LineID> </ram:AssociatedDocumentLineDocument> <ram:SpecifiedTradeProduct> <ram:Name> </ram:Name> </ram:SpecifiedTradeProduct> <ram:SpecifiedLineTradeAgreement> <ram:GrossPriceProductTradePrice> <ram:ChargeAmount>2840.00</ram:ChargeAmount> </ram:GrossPriceProductTradePrice> <ram:NetPriceProductTradePrice> <ram:ChargeAmount>2840.0000</ram:ChargeAmount> </ram:NetPriceProductTradePrice> </ram:SpecifiedLineTradeAgreement> <ram:SpecifiedLineTradeDelivery> <ram:BilledQuantity unitCode="H87">0.00</ram:BilledQuantity> </ram:SpecifiedLineTradeDelivery> <ram:SpecifiedLineTradeSettlement> <ram:ApplicableTradeTax> <ram:TypeCode>VAT</ram:TypeCode> <ram:ExemptionReason>Normalsatz</ram:ExemptionReason> <ram:CategoryCode>S</ram:CategoryCode> <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent> </ram:ApplicableTradeTax> <ram:SpecifiedTradeSettlementLineMonetarySummation> <ram:LineTotalAmount>0.00</ram:LineTotalAmount> </ram:SpecifiedTradeSettlementLineMonetarySummation> </ram:SpecifiedLineTradeSettlement> </ram:IncludedSupplyChainTradeLineItem> <ram:ApplicableHeaderTradeAgreement> <ram:BuyerReference>992-03005-81</ram:BuyerReference> <ram:SellerTradeParty> <ram:Name>dummy name </ram:Name> <ram:DefinedTradeContact> <ram:PersonName>dummy person </ram:PersonName> </ram:DefinedTradeContact> <ram:PostalTradeAddress> <ram:PostcodeCode /> <ram:LineOne /> <ram:CityName /> <ram:CountryID>DE</ram:CountryID> </ram:PostalTradeAddress> </ram:SellerTradeParty> <ram:BuyerTradeParty> <ram:Name> dummy DLR </ram:Name> <ram:PostalTradeAddress> <ram:PostcodeCode /> <ram:LineOne /> <ram:CityName /> <ram:CountryID>DE</ram:CountryID> </ram:PostalTradeAddress> </ram:BuyerTradeParty> </ram:ApplicableHeaderTradeAgreement> <ram:ApplicableHeaderTradeDelivery> <ram:ActualDeliverySupplyChainEvent> <ram:OccurrenceDateTime> <udt:DateTimeString format="102">20221219</udt:DateTimeString> </ram:OccurrenceDateTime> </ram:ActualDeliverySupplyChainEvent> </ram:ApplicableHeaderTradeDelivery> <ram:ApplicableHeaderTradeSettlement> <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode> <ram:SpecifiedTradeSettlementPaymentMeans> <ram:TypeCode>58</ram:TypeCode> <ram:Information>dummy info </ram:Information> <ram:PayeePartyCreditorFinancialAccount> <ram:IBANID>dummy banid</ram:IBANID> </ram:PayeePartyCreditorFinancialAccount> <ram:PayeeSpecifiedCreditorFinancialInstitution> <ram:BICID>dummy BIC</ram:BICID> </ram:PayeeSpecifiedCreditorFinancialInstitution> </ram:SpecifiedTradeSettlementPaymentMeans> <ram:ApplicableTradeTax> <ram:CalculatedAmount>544.54</ram:CalculatedAmount> <ram:TypeCode>VAT</ram:TypeCode> <ram:BasisAmount>2866.00</ram:BasisAmount> <ram:CategoryCode>S</ram:CategoryCode> <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent> </ram:ApplicableTradeTax> <ram:SpecifiedTradePaymentTerms> <ram:Description>Terms of payment</ram:Description> </ram:SpecifiedTradePaymentTerms> <ram:SpecifiedTradeSettlementHeaderMonetarySummation> <ram:LineTotalAmount>2866.00</ram:LineTotalAmount> <ram:ChargeTotalAmount>0.00</ram:ChargeTotalAmount> <ram:AllowanceTotalAmount>0.00</ram:AllowanceTotalAmount> <ram:TaxBasisTotalAmount>2866.00</ram:TaxBasisTotalAmount> <ram:TaxTotalAmount currencyID="EUR">544.54</ram:TaxTotalAmount> <ram:GrandTotalAmount>3410.54</ram:GrandTotalAmount> <ram:TotalPrepaidAmount>0.00</ram:TotalPrepaidAmount> <ram:DuePayableAmount>3410.54</ram:DuePayableAmount> </ram:SpecifiedTradeSettlementHeaderMonetarySummation> </ram:ApplicableHeaderTradeSettlement> </rsm:SupplyChainTradeTransaction> </rsm:CrossIndustryInvoice>
需要修正的内容
- 商品名称为空:
ram:SpecifiedTradeProduct/ram:Name仅含空格,XRechnung要求商品名称为必填项,需填写真实商品名称。 - 行项目数量无效:
ram:BilledQuantity值为0.00,行项目数量不能为0,需设置与金额匹配的真实数量(例如对应单价2840.00的数量1)。 - 行项目金额逻辑矛盾:行项目的
LineTotalAmount为0.00,但NetPriceProductTradePrice/ChargeAmount为2840.00,行项目总金额应等于单价×数量,需修正数值保持逻辑一致。 - 合计金额不匹配:头部
LineTotalAmount为2866.00,但唯一行项目的总金额为0.00,合计金额需等于所有行项目金额之和,需调整数值统一。 - 地址信息缺失:买卖双方
ram:PostalTradeAddress下的PostcodeCode、LineOne、CityName均为空,XRechnung要求完整地址信息,需补充邮编、街道、城市等必填字段。 - 银行账号格式无效:
ram:IBANID和ram:BICID为测试假数据,需替换为符合格式的真实银行账号信息。 - 发票类型代码不符:
ram:TypeCode为111,XRechnung标准中普通发票的类型代码通常为380,需根据业务场景修改为对应代码。 - 文本字段冗余换行:部分文本字段(如
ram:Name、ram:Content)包含多余换行,需清理为无冗余格式的文本内容。
内容的提问来源于stack exchange,提问作者Karthik M
相关产品推荐
相关产品推荐

