What it means
Each ram:AppliedTradeTax inside a header-level ram:SpecifiedLogisticsServiceCharge must contain one direct ram:CategoryCode element. This rule counts elements; it does not check the code value or calculate VAT.
Why it matters
The category code identifies the tax treatment. The Extended profile specifies one category element in each of these tax blocks.
How to fix it
Correct ram:CategoryCode inside the affected ram:SpecifiedLogisticsServiceCharge/ram:AppliedTradeTax. Add the element if it is missing. If there are duplicates, keep one element containing the category that matches the charge's actual VAT treatment. Export and recheck your file.
Once the file is corrected, check it again for free: Validate a ZUGFeRD invoice
Or fix the invoice in a form and download the corrected file, for 1 credit: Fix a rejected e-invoice Beta
The rule as published
Element 'ram:CategoryCode' must occur exactly 1 times. Where this rule applies
| Rule set | Version |
|---|---|
| Factur-X 1.09 EXTENDED | 1.0.9-2 |
| ZUGFeRD 2.5 EXTENDED | 2.5.2 |
Check your file
Drop your e-invoice to see whether FX-SCH-A-000965 still fails, and which other rules do.
Related rules
- FX-SCH-A-000966 Permitted VAT category code for a logistics charge
- FX-SCH-A-000967 Permitted exemption reason code for a logistics charge
- FX-SCH-A-000968 Permitted tax type code for a logistics charge
- FX-SCH-A-000969 Unit code for an invoice discount's basis quantity
- FX-SCH-A-000970 Permitted VAT category code for an invoice discount
- FX-SCH-A-000971 Permitted exemption reason code for an invoice discount