QR Code Guide
Overview
QR Codes provide a streamlined mechanism for initiating Payments between parties. A person may generate a QR Code to share payment details, while a Merchant can display one to help a buyer complete a purchase at a Point of Sale (POS).
The Passport PaaS Platform enables the creation of compliant QR Codes that follow the EMV Co Colombian industry specification - current at time of writing with the latest specification from July 2025. These QR Codes can be used in both digital and offline channels, reducing manual errors and enhancing the buyer experience.
Bre-B QR Codes simplify the sale process by embedding essential information (e.g., Bre-B Key, transaction amount, purpose) into a scannable format, reducing friction and improving security - saving the Customer time.
QR Code requirements are defined by institutions including: ACH Colombia, Banco de la República, Credibanco, EMV Co, Mastercard, Redeban, Servibanca, Visa, and Visionamos. Passport provides support to these groups to help further the clarity of the specification for Bre-B payments.
Passport, in partnership with Visionamos, operates a national Bre-B access point to process Bre-B payments and issue QR Codes for use across the ecosystem.
Payment Lifecycle
Bre-B QR Codes can be used across physical and digital channels: including posters, POS terminals, ATMs, websites, and mobile apps.
Example: Coffee Shop Purchase

Sample Payment Lifecycle
The image above depicts a simple transaction for a Buyer to purchase a coffee at a Point of Sale where the simple steps are:
- Merchant creates a Sale in their POS system.
- The POS system generate a Dynamic QR Code that captures the information of the Sale using the Passport PaaS API and displays it to the Buyer.
- The Buyer scans the QR code using their mobile banking app's within the Bre-B Zone.
- The mobile banking app pre-fills the recipient (Bre-B Key), amount, and transaction purposes.
- The Buyer reviews and confirms the transfer to the nominated Bre-B Key.
- The payment is sent via the Bre-B network from the Buyer's Bank to Passport's Sponsor Bank.
- Passport PaaS receives confirmation from the Bre-B node and identifies the corresponding Merchant.
- A Webhook notification is sent to the Merchant's POS system to confirm payment.
Prerequisites
To create QR Codes on the PaaS Platform, there are a number of prerequisities that need to be satisfied. The information for generating the QR Code is pulled from a variety of sources:
- Customer: The created Customer contains information such as the Merchant Name and Address which provides data such as the name, city, zip code, and country which are mandatory data fields for the QR Code.
- Bre-B Key: A created Key for an Account must be stored in a Static or Dynamic QR Code to route Payments to the Merchant over the Bre-B network.
- Configuration: Setting other information such as the Merchant Category Code on the Configuration for the Merchant is required as this is another mandatory data field for a QR Code.
- API Request: The majority of the information is provided via the Create QR Codes API request and can include mandatory and optional information depending on the intended use case.
Required Tasks
To satisfy the prerequisites, you must complete the following tasks:
Step | Description |
---|---|
1 | Link a Merchant a with legal name, address, city, country, and zip code. |
2 | Link Account linked to the active customer. |
3 | Create Key at least one Bre-B Key associated with that account. |
Once you finish the steps, you can gather the necessary information for the QR Code from the relevant sources to meet the profile requirements. Use the Create QR Codes API request to get the remaining fields for creating the Static or Dynamic QR Code.
QR Code Creation
To create a QR Code, the Developer needs to consider the main fields and available information for each use case where a QR Code can be presented.
The table below captures the considerations that are needed for the QR Code to have the most impact. Note, the below is not the mandatory fields for each API call, but rather the main fields that can be used to set the contents of the QR Code for the various use cases.
Field | Dynamic | Static |
---|---|---|
type | A QR Code generated for one time use that is linked to a specific payment amount and activity within the developer ecosystem | A QR Code that can be reused as it doesn't contain any transaction specific information. |
channel | Details where and how the QR Code is presented - for example at a Point of Sale, or a Mobile Point of Sale (attached to a phone). The PoS has auto generated the information for the transaction ready for awaiting Payment. | Most likely within a poster or printed mechanism. The Static QR Code is used for sharing information that doesn't change per transaction - such as the Bre-B Key. |
qr_code__reference | A unique reference to tie the QR Code to the action the Developer wishes to track | Not required |
transaction_purpose | Describes what the QR Code is representing - such as a Purchase | Similar to the Dynamic QR Code, it can also be set for the Static QR Code |
These are the main fields that can be changed to suit the Dynamic or Static QR Code implementation - in addition to the Bre-B Key and Amount of course.
The intended use case for the Dynamic QR Code is one that is uniquely tied to a single expected Payment - such as a buyer at the Point of Sale. The QR Code is generated on demand for that particular purchase and is "dynamically" set for that sale.
The Static QR Code can be printed out en masse and left for anyone to find - there is no sale specific information that needs to be generated for each person that scans the QR Code. For example, a charity taking donations could print Static QR Codes in a national newspaper, while the person scanning the code sets the amount of the donation that they wish to send within the mobile banking app.
The examples below show how this can be implemented.
PaaS Platform does not verify that the calculated VAT or INC numbers are correct - we do not contain a list of all appropriate added taxes or charges that should be added to every type of transaction in Colombia.
Nor do our Sponsor Bank partners take any liability for ensuring these details are correct - it is up to the Developer to ensure that the appropriate fees and add-ons are calculated as part of the accounting for processing sales.