NUMO QR Code Standards
Introduction
The NUMO QR Code Standard is the national QR code standard for Libya, developed to enable interoperable and secure digital payments. It is designed to support instant payments through LYPay, allowing financial institutions, fintechs, and merchants to seamlessly process transactions via Consumer-Presented Mode (CPM) and Merchant-Presented Mode (MPM) QR codes.
NUMO QR adheres to EMVCo standards and follows a structured Tag-Length-Value (TLV) format, ensuring compatibility across all financial systems and payment platforms in Libya.
QR Code Models
1. Consumer-Presented Mode (CPM)
Who Generates? Consumers generate the QR codes via their bank or wallet app.
Who Scans? Merchants or service providers scan the QR to receive payments.
Use Case: Primarily P2P (Person-to-Person) transactions but can be used for P2M (Person-to-Merchant)payments if the merchant supports it.
Security: Each QR can be static (reusable) or dynamic (transaction-specific).
2. Merchant-Presented Mode (MPM)
Who Generates? Merchants generate the QR codes through their POS terminals or banking apps.
Who Scans? Consumers scan the QR via their mobile banking/payment app.
Use Case: P2M (Person-to-Merchant) transactions, commonly used in retail and service industries.
Security: Can be static (same QR for multiple payments) or dynamic (generated per transaction).
NUMO QR Code Structure
NUMO QR follows a structured TLV format, ensuring consistency across different financial institutions.
1. Common Data Fields (Both CPM & MPM)
Tag
Description
Required?
Example Value
00
Payload Format Indicator
✅ Yes
01
01
Point of Initiation Method (11
for Static, 12
for Dynamic)
✅ Yes
12
27
Account Name (Customer/Merchant)
✅ Yes
John Doe
28
Account Schema (IBAN or Alias)
✅ Yes
IBAN
29
Account Identification (IBAN/Alias)
✅ Yes
LY5802500810085121000
30
Institution (Bank Code & Name)
✅ Yes
001 - Jumhouria Bank
31
Transaction GUID (UUID v4)
❌ Optional
123e4567-e89b-12d3-a456-426614174000
53
Currency (ISO 4217)
✅ Yes
434
(LYD)
54
Transaction Amount
❌ Optional (Required for Dynamic QR)
100.500
58
Country Code (ISO 3166-1 alpha-2)
✅ Yes
LY
59
Beneficiary/Merchant Name
✅ Yes
ABC Store
60
City
✅ Yes
Tripoli
61
Postal Code
❌ Optional
150013
62
Additional Data Field (Bill Number, Reference, Loyalty ID, etc.)
❌ Optional
See Additional Data Section
63
CRC (Cyclic Redundancy Check)
✅ Yes
<CRC>
2. Merchant-Presented Mode (MPM) Additional Fields
Tag
Description
Required?
Example Value
02
Merchant Account Number
✅ Yes
100012443402017
52
Merchant Category Code (MCC)
✅ Yes
5411
(Supermarkets)
51
Internal Merchant Reference (Unique per Transaction)
❌ Optional
002445533221112345678
3. Additional Data Fields (Tag 62)
This section contains optional metadata that financial institutions or merchants may use.
Sub-Tag
Field Name
Example Value
62-01
Bill Number
INV12345678
62-02
Mobile Number
+218912345678
62-03
Store Label
Store123
62-04
Loyalty Number
LOYALTY1234
62-05
Reference Label
REF123456
62-06
Customer Label
Customer123
62-07
Terminal Label
TERM1234
62-08
Purpose of Transaction
Payment for goods
Example QR Code Payloads
Static QR Code Example (MPM)
Dynamic QR Code Example (CPM)
QR Code Processing Flow
1️⃣ Customer Generates QR Code
CPM: User generates QR via their bank app.
MPM: Merchant generates QR via POS.
2️⃣ Payment App Scans QR Code
Extracts account details (IBAN/Alias), bank code, amount, and optional metadata.
3️⃣ Initiate Payment via LYPay API
The Fund-Transfer API is called using extracted QR data.
4️⃣ Transaction Confirmation
If transaction is successful, the system sends a payment confirmation to the customer and merchant.
5️⃣ Webhook Notification (If Needed)
If processed asynchronously, a status update webhook is sent to notify the merchant of completion.
Integration Steps for Banks & Fintechs
✅ 1. Implement QR Code Generation
Banks should follow NUMO QR encoding rules when generating QR codes.
✅ 2. Implement QR Code Scanning & Parsing
Use EMVCo TLV Tag-Length-Value parsing to extract the required fields.
✅ 3. Process Payments via LYPay
Use the LYPay Fund-Transfer API to execute payments based on scanned QR data.
✅ 4. Handle Webhook Events
Implement real-time webhook processing for transaction status updates.
✅ 5. Ensure Compliance & Security
Validate QR contents before processing transactions.
Enforce AML/KYC policies on alias-based transactions.
Resources
For integration support, contact: 📩 devsupport@cbl.gov.ly
Last updated