qmetrics
Fatal — invoice rejected Allowances & charges Shared Peppol rule PINT-AE 2026.5

How to fix ibr-cl-20 in UAE e-invoicing

What is ibr-cl-20?

ibr-cl-20 is a fatal validation rule in the UAE's Peppol PINT-AE e-invoicing specification, inherited from the shared Peppol layer. It is checked against allowances and charges and belongs to the Allowances & charges rule group. An e-invoice that fails ibr-cl-20 is rejected by the Accredited Service Provider gateway before it reaches the FTA.

What the official rule says

Coded charge reasons (ibt-105), (ibt-145) MUST belong to the UNCL 7161 code list
UAE impact: this is a fatal rule from the shared Peppol layer, enforced in the UAE profile — an invoice failing it is rejected at the Accredited Service Provider gateway before it ever reaches the FTA. A rejected invoice means resubmission delays, and late transmission risks the AED 100-per-invoice penalty under Cabinet Decision No. 106 of 2025.

Where it applies

This rule is checked against allowances and charges of your UBL 2.1 invoice:

cac:AllowanceCharge[cbc:ChargeIndicator = true()]/cbc:AllowanceChargeReasonCode

Business terms referenced

Term ID Field Other rules
IBT-105 Coded charge reasons view →
IBT-145 view →

Field names are derived automatically from the official rule corpus.

Technical test condition (Schematron)
((not(contains(normalize-space(.), ' ')) and contains(' AA AAA AAC AAD AAE AAF AAH AAI AAS AAT AAV AAY AAZ ABA ABB ABC ABD ABF ABK ABL ABN ABR ABS ABT ABU ACF ACG ACH ACI ACJ ACK ACL ACM ACS ADC ADE ADJ ADK ADL ADM ADN ADO ADP ADQ ADR ADT ADW ADY ADZ AEA AEB AEC AED AEF AEH AEI AEJ AEK AEL AEM AEN AEO AEP AES AET AEU AEV AEW AEX AEY AEZ AJ AU CA CAB CAD CAE CAF CAI CAJ CAK CAL CAM CAN CAO CAP CAQ CAR CAS CAT CAU CAV CAW CAX CAY CAZ CD CG CS CT DAB DAD DAC DAF DAG DAH DAI DAJ DAK DAL DAM DAN DAO DAP DAQ DL EG EP ER FAA FAB FAC FC FH FI GAA HAA HD HH IAA IAB ID IF IR IS KO L1 LA LAA LAB LF MAE MI ML NAA OA PA PAA PC PL PRV RAB RAC RAD RAF RE RF RH RV SA SAA SAD SAE SAI SG SH SM SU TAB TAC TT TV V1 V2 WH XAA YY ZZZ ', concat(' ', normalize-space(.), ' '))))

Test your invoice against ibr-cl-20 now

Upload your UBL XML — we check all 302 PINT-AE rules including this one, in one second. Your file is validated in memory and never stored.

Related rules

Rule text sourced from the official OpenPeppol PINT-AE validation artifacts (version 2026.5), refreshed weekly. Explanations are qmetrics' own guidance, not official FTA/MoF text.