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)

000201
010211
0215100012443402017
2710Store Mall
2804IBAN
2922DE89370400440532013000
302201061234560208ABC Bank
3136123e4567-e89b-12d3-a456-426614174000
5121002445533221112345678
52045321
5303434
5802LY
5910Store Mall
6007Tripoli
6106150013
6304<CRC>

Dynamic QR Code Example (CPM)

000201
010212
2708John Doe
2804IBAN
2922DE89370400440532013000
302201061234560208ABC Bank
3136123e4567-e89b-12d3-a456-426614174000
5303434
5406100.500
5802LY
5908John Doe
6007Tripoli
6106150013
6304<CRC>

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