Create QR Codes

This specification is subject to change, it is Work in Progress. The Colombian EASPBV standard is evolving to support the capabilities of the Bre-B network.

Passport is actively collaborating with industry stakeholders to shape a flexible and robust QR Code integration model for real-time payments.

Overview

This endpoint allows you to create a Bre-B compliant QR Code using the Passport PaaS API. It encodes payment and contextual metadata as defined by the Colombian EASPBV standard, returning a unique QR Code ID and associated resource details.

QR Codes Types

The supported types are: Dynamic and Static QR codes.

Endpoint Details

DefinitionDescription
Endpointhttps://bre-b-sandbox.api.visionamos.passportfintech.com/v1/paas/entities/customers/qrcodes
MethodPOST
HeadersContent-Type: application/json, Authorization
AuthenticationAccess Token (Bearer Token)

Request Body

ParameterTypeCardinalityDescription
key_idStringMandatoryThe unique identifier of the previously created Bre-B key associated with the merchant account.
customer_idStringMandatoryThe unique identifier of the customer (merchant) initiating the transaction.
typeENUMMandatoryType of QR Code: STATIC or DYNAMIC.
channelENUMMandatory

Where the QR Code will be used:

MAN - Manual

POS - Point of Sale

APP - Mobile App

ECOMM - E-commerce

MPS - Mobile POS

ATM - ATM

additional_infoObjectMandatoryAdditional meta data for the transaction.
additional_info.transaction_purposeENUMMandatory

Purpose of the transaction:

SHOPPING

CANCELLATION

TRANSFER

RETREAT

COLLECTION

REFILL

DEPOSIT

additional_info. invoice_numberStringOptionalInvoice number (max 25 characters).
additional_info. mobile_phone numberStringOptionalMobile phone number linked to the transaction (max 25 characters).
additional_info. store_labelStringOptionalStore identifier (max 25 characters).
additional_info. loyalty_labelStringOptionalLoyalty program reference for the Buyer (max 25 characters).
additional_info. reference_labelStringOptionalUnique transaction reference (max 25 characters).
additional_info. customer_labelStringOptionalStore the Buyer unique identifier (max 25 characters).
additional_info. terminal_labelStringOptionalPOS terminal ID (max 25 characters).
additional_info. customer_infoENUMOptional

An indicator whether the device scanning the QR Code needs to capture information from the Customer. Will be one of:

ADDRESS

EMAIL

PHONE

additional_info. channel_presentationStringOptional

A 3 digit field used to compliment the channel field to indicate how the QR Code is presented to the Buyer.

First Character: The medium used:

0 - Printed - Adhesive 1 - Printed - Invoice 2 - Printed - Magazine / Poster 3 - Printed - Other 4 - Screen - Merchant POS 5 - Screen - Website 6 - Screen - App 7 - Screen - Other

Second Character: The location presented: 0 - the registered address of the business 1 - different from the registered address of the business 2 - remote commerce 3 - other

Third Character: How it was presented: 0 - if a cashier was present 1 - if a cashier was not present 2 - self attended box / checkout 3 - other

vatObjectConditional

An object to track the VAT applied to the transaction being represented by the QR Code.

Required for Dynamic QR Codes if an Amount is provided.

vat.vat_typeENUMConditional

Indicates how the VAT will be calculated for the transaction:

WALLET

FIXED

PERCENTAGE

vat.vat_valueStringConditional

VAT value:

If FIXED: Amount in COP with two decimals (e.g., 100.10)

If PERCENTAGE: Rate with five decimals (e.g., 0.00500)

vat.vat_base valueStringConditionalIndicates the VAT Base Value
incObjectConditional

An object to track the INC applied to the transaction being represented by the QR Code.

Required for Dynamic QR Codes if an Amount is provided.

inc.inc_typeENUMConditional

Indicates how the INC will be calculated for the transaction:

WALLET

FIXED

PERCENTAGE

inc.inc_valueStringConditional

INC value:

If FIXED: Amount in COP with two decimals (e.g., 100.10)

If PERCENTAGE: Rate with five decimals (e.g., 0.00500)

amountObjectOptionalRepresents the value and currency of the transaction to be encoded in in the QR Code.
amount.valueStringOptionalAmount of the transaction in COP (e.g., 10000.10).
amount.currencyENUMOptionalCurrency for the transaction. Must be COP.
tipObjectOptionalAn object to track if a tip is to be added to the value of the transaction such as for paying a restaurant bill.
tip.tip_typeENUMOptional

Tip calculation method:

REQUEST

FIXED

PERCENTAGE

tip.tip_valueStringOptionalRequired if tip_type is FIXED.
tip.tip_percentageStringOptionalRequired if tip_type is PERCENTAGE

Example Request

Dynamic QR Codes
Static QR Codes
Copy

Response Body

  • HTTP Status Code: 200 OK.
  • Returns the newly created QR Code and its associated metadata.

Example of Response

Dynamic QR Codes
Static QR Codes
Copy

The QR Codes response includes the image in Base64 format. You can use any front-end library to convert it to a readable image for your audience.

The QR codes are visible in the dashboard for validation purposes.

Common Errors and Handling

HTTP Status CodeMeaningDescription
400 Bad RequestInvalid DataRequired fields are missing or contain incorrect values.
401 UnauthorizedExpired TokenThe access token is invalid or has expired.
403 ForbiddenAccess DeniedThe request is not authorized to validate the entity.
500 Internal Server ErrorServer ErrorAn unexpected error occurred while validating the entity.

Best Practices

  • Verify that the key_id and customer_id are valid and correctly associated.
  • Use thechannel_presentation field to specify how and where the QR is displayed.
  • If an amount is included, make sure to include thevat and inc objects with the appropriate structure and types.
Type to search, ESC to discard
Type to search, ESC to discard
Type to search, ESC to discard