Country prefix of the VAT identifier

Error BR-CO-09 EN 16931

The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix ‘EL’.

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

The first two characters of the VAT identifier in ram:ID do not match a country code permitted by the test. The prefix EL is also permitted for Greece.

What the rule means

The VAT identifier prefix identifies the country of issue. The rule permits an ISO 3166-1 alpha-2 code for this purpose; EL may be used for Greece.

Affected fields BT-31 BT-63 BT-48
Please provide a valid country prefix for the VAT identifier

The prefix of the VAT identifier in ram:ID is not recognized as a permitted country code. You can resolve this by using the prefix for the country of issue.

What to do
  1. Check the VAT identifier in ram:ID with schemeID="VA".
  2. Use a permitted country code for the first two characters; EL is also permitted for Greece.
  3. Check the relevant details using FacturXInvoice.AddSellerTaxRegistration(...) or FacturXInvoice.AddBuyerTaxRegistration(...).
  4. Generate the invoice again and validate it.
What it looks like
✗ Triggers the message
<ram:SpecifiedTaxRegistration>
  <ram:ID schemeID="VA">XX123456</ram:ID>
</ram:SpecifiedTaxRegistration>
✓ Correct
<ram:SpecifiedTaxRegistration>
  <ram:ID schemeID="VA">DE123456</ram:ID>
</ram:SpecifiedTaxRegistration>
Check in FactoorSharp
  • LegalOrganization.ID (SellerTradeParty: BT-31; SellerTaxRepresentativeTradeParty: BT-63)
  • FacturXInvoice.AddBuyerTaxRegistration(no, schemeID) (BT-48)
  • FacturXInvoice.AddSellerTaxRegistration(no, schemeID) (BT-31)
  • FacturXInvoice.BuyerTaxRegistration (BT-48)
  • FacturXInvoice.GetBuyerTaxRegistration() (BT-48)
Technical details

The XPath test reads the first two characters of the checked ram:ID value and tests whether they occur in the specified code list.

Where the rule applies

The rule applies to ram:ID with schemeID="VA" in ram:SpecifiedTaxRegistration, for the seller’s, the seller’s tax representative’s, or the buyer’s VAT identifier.

Context (rule/@context)
//ram:SpecifiedTaxRegistration/ram:ID[@schemeID='VA']
Test expression (assert/@test)
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), ' '))