> For the complete documentation index, see [llms.txt](https://central-bank-of-libya.gitbook.io/devportal/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://central-bank-of-libya.gitbook.io/devportal/lypay/numo-qr-code-standards.md).

# NUMO QR Code Standards

NUMO national QR code standard for interoperable LYPay payments using Consumer-Presented Mode and Merchant-Presented Mode.

### Libya's national QR standard for interoperable digital payments

The **NUMO QR Code Standard** is the **national QR code standard for Libya**, developed to enable interoperable and secure digital payments. It supports instant payments through **LYPay** using both **Consumer-Presented Mode — CPM** and **Merchant-Presented Mode — MPM**.

NUMO QR follows **EMVCo standards** and uses a structured **Tag-Length-Value — TLV** format to support compatibility across financial systems and payment platforms in Libya.

{% hint style="info" %}
Use this page as an implementation overview. The official CPM and MPM documents remain the authoritative implementation references and are provided in the Resources section below.
{% endhint %}

## QR code models

### 1. Consumer-Presented Mode — CPM

* **Who generates?** Consumers generate the QR code using their bank or wallet application.
* **Who scans?** Merchants or service providers scan the QR to receive payment.
* **Use case:** Primarily **P2P — Person-to-Person**, and it can also support **P2M — Person-to-Merchant** payments where the merchant supports it.
* **Security:** QR codes may be **static** — reusable, or **dynamic** — transaction-specific.

### 2. Merchant-Presented Mode — MPM

* **Who generates?** Merchants generate the QR code using POS terminals or banking applications.
* **Who scans?** Consumers scan the QR using their mobile banking or payment application.
* **Use case:** **P2M — Person-to-Merchant** transactions, commonly used in retail and service environments.
* **Security:** QR codes may be **static** or **dynamic**.

## NUMO QR code structure

NUMO QR uses a structured **TLV format** for consistency across participating financial institutions.

### Common data fields — 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                                          | Optional                           | See Additional Data section            |
| **63**  | CRC — Cyclic Redundancy Check                                  | Yes                                | `<CRC>`                                |

### 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` |

### Additional data fields — Tag 62

| **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 payloads

### Static QR 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 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 payment processing flow

1. **Generate QR** — CPM is generated by the consumer; MPM is generated by the merchant or supported acceptance interface.
2. **Scan and parse QR** — extract account, institution, amount, and optional metadata according to NUMO rules.
3. **Initiate payment through LYPay** — use the decoded QR information in the applicable LYPay funds-transfer flow.
4. **Confirm transaction** — complete the LYPay confirmation step and process the returned status.
5. **Receive webhook when asynchronous** — use the webhook notification to obtain the final status where applicable.

## Integration steps

### 1. Implement QR generation

Banks should follow **NUMO QR encoding rules** when generating QR codes.

### 2. Implement scanning & parsing

Use EMVCo TLV **Tag-Length-Value parsing** to extract the required fields.

### 3. Process payments through LYPay

Use the **LYPay Funds Transfer API** to execute payments using decoded QR information.

### 4. Handle webhook events

Implement secure webhook processing for transaction-status updates.

### 5. Apply compliance & security controls

* Validate QR contents before processing transactions.
* Enforce **AML/KYC** policies on alias-based transactions.

## QR ecosystem reference

### QRPay

[QRPay](https://qrpay.ly/) is included as an **external QR-payment ecosystem reference** for additional market and user-experience context in Libya.

{% hint style="warning" %}
The QRPay link is provided for ecosystem reference only. It does **not replace or modify the official NUMO QR technical standard**, CBL requirements, or LYPay API specifications.
{% endhint %}

## Resources

### Official NUMO standards

### External ecosystem reference

[Visit QRPay →](https://qrpay.ly/)

For integration support: **<devsupport@cbl.gov.ly>**

## Related documentation

* [LYPay Overview](/devportal/lypay/lypay-instant-payment-system.md)
* [Technical Overview](/devportal/lypay/lypay-instant-payment-system-technical-overview.md)
* [API Documentation](/devportal/lypay/api-documentation.md)
* [Payments API](/devportal/lypay/api-documentation/api-v1/payments.md)
