Invoice line total allowance charge amount only once

Error FX-SCH-A-000341 Factur-X

Element 'ram:TotalAllowanceChargeAmount' may occur at maximum 1 times.

Mandatory rule: As long as it is violated, the invoice is invalid and will be rejected by validators.
What is wrong

ram:TotalAllowanceChargeAmount occurs more than once in ram:SpecifiedTradeSettlementLineMonetarySummation.

What the rule means

ram:TotalAllowanceChargeAmount gives the total amount of allowances and charges for the invoice line. Multiple occurrences would provide more than one value for this total.

Please include the invoice line allowance and charge total only once

The total of allowances and charges appears more than once in an invoice line’s settlement. This element may occur there no more than once.

What to do
  1. Look for repeated ram:TotalAllowanceChargeAmount elements in ram:SpecifiedTradeSettlementLineMonetarySummation.
  2. Make sure this element occurs there no more than once.
  3. Generate the invoice again and validate it.
What it looks like
✗ Triggers the message
<ram:SpecifiedTradeSettlementLineMonetarySummation>
  <ram:TotalAllowanceChargeAmount>10.00</ram:TotalAllowanceChargeAmount>
  <ram:TotalAllowanceChargeAmount>20.00</ram:TotalAllowanceChargeAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
✓ Correct
<ram:SpecifiedTradeSettlementLineMonetarySummation>
  <ram:TotalAllowanceChargeAmount>10.00</ram:TotalAllowanceChargeAmount>
</ram:SpecifiedTradeSettlementLineMonetarySummation>
Technical details

The XPath counts ram:TotalAllowanceChargeAmount elements in the current ram:SpecifiedTradeSettlementLineMonetarySummation; the test passes when there is at most one.

Where the rule applies

The rule applies to the monetary summation in an invoice line’s settlement and checks ram:TotalAllowanceChargeAmount there.

Context (rule/@context)
/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:IncludedSupplyChainTradeLineItem/ ram:SpecifiedLineTradeSettlement/ram:SpecifiedTradeSettlementLineMonetarySummation
Test expression (assert/@test)
count(ram:TotalAllowanceChargeAmount)<=1