# 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)**&#x70;ayments 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**

{% file src="/files/8u4jY1pL8AGzFkh6TaRC" %}

{% file src="/files/7UxyKgUHpMds056QpHaP" %}

For integration support, contact:\
📩 **<devsupport@cbl.gov.ly>**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://central-bank-of-libya.gitbook.io/devportal/lypay/numo-qr-code-standards.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
