Allowed currency code

Error FX-SCH-A-001007 Factur-X

Value of '@currencyID' is not allowed.

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

The value of currencyID on ram:TaxTotalAmount does not match an allowed entry in the currency code list used by the rule. The check applies to the amount whose currencyID matches ram:TaxCurrencyCode.

What the rule means

The currency code identifies the currency of the VAT amount. A code that is not allowed cannot be associated unambiguously with the intended code list.

Please use an allowed currency code for the VAT amount

The currency code on ram:TaxTotalAmount is not recognized by the rule as an allowed code. You can adjust the value using the applicable code list.

What to do
  1. Find ram:TaxTotalAmount whose currencyID matches the value of ram:TaxCurrencyCode.
  2. Check whether the value of currencyID is included in the currency code list used by the rule.
  3. Regenerate the invoice and validate it again.
What it looks like
✗ Triggers the message
<ram:TaxCurrencyCode>EUR</ram:TaxCurrencyCode>
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
  <ram:TaxTotalAmount currencyID="NOT-A-CURRENCY">100.00</ram:TaxTotalAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
✓ Correct
<ram:TaxCurrencyCode>EUR</ram:TaxCurrencyCode>
<ram:SpecifiedTradeSettlementHeaderMonetarySummation>
  <ram:TaxTotalAmount currencyID="EUR">100.00</ram:TaxTotalAmount>
</ram:SpecifiedTradeSettlementHeaderMonetarySummation>
Technical details

The rule checks the value of currencyID against entries in the code list identified by 50. An empty value also satisfies this test.

Where the rule applies

The rule applies to ram:TaxTotalAmount in the VAT breakdown currency information when its currencyID matches the value of ram:TaxCurrencyCode.

Context (rule/@context)
/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ ram:SpecifiedTradeSettlementHeaderMonetarySummation/ram:TaxTotalAmount[@currencyID=../ ../ram:TaxCurrencyCode]
Test expression (assert/@test)
string-length($codeValue50)=0 or document('FACTUR-X_EXTENDED_codedb.xml')/codedb/cl[@id=50]/enumeration[@value=$codeValue50]