Environments
Environments | Address |
---|---|
Sandbox | api2.cielo.com.br/sandbox api2.cielo.com.br/sandbox/v2/oauth/token (format url encoded) api2.cielo.com.br/sandbox/v2/oauth/access-token (format json) api2.cielo.com.br/sandbox/padraoq/v1/publicKey api2.cielo.com.br/sandbox/padraoq/v1/parsedQRCode api2.cielo.com.br/sandbox/padraoq/v1/payment/card |
Production | api2.cielo.com.br api2.cielo.com.br/v2/oauth/token (format url encoded) api2.cielo.com.br/v2/oauth/access-token (format json) api2.cielo.com.br/padraoq/v1/publicKey api2.cielo.com.br/padraoq/v1/parsedQRCode api2.cielo.com.br/padraoq/v1/payment/card |
Access requirements
For the use of our APIs we need to receive the following information, for the creation of the client id and Authorization
- Name
- Occupation
- Who will be responsible for the integration (Technical Responsible) to register in API Suite?
Information we will send:
After sending the above information, we will send the client_id (key that identifies the APP) and the client_secret to the person in charge.
Any questions, open a ticket with our Developer Experience team Zendesk
Authentication
Access Token generation flow (via JSON format)
The access_token resource is responsible for authentication using the OAuth 2.0 protocol. With client_id and client_secret in hand the request to POST / access_token must be done by carrying authorization in Header and grant_type in the body of the request, following example below.
Note: The authorization value must be composed of the word Basic with Base64 generated from the client_id concatenation: client_secret
Contract
POST /v2/oauth/access-token (format json)
Headers
Key Value Authorization Basic + Base64 Content-Type application-json Body
{ "grant_type": "client_credentials" }
Request Example
curl --location --request POST 'https://api2.cielo.com.br/v2/oauth/access-token' \
--header 'Authorization: Basic
dERxQUs000FoSDg5dFdpUWM1ejY0REJKc2lJTFpLbzh4TG0zV0p3eHkwRkQ0Y2dZVm46ZVZUVVZJZjFZWDJkOU40M0p4MVZwNGlWVXEzTzluTTR0TGF1UzhZYWo0V1JPcTJFSXU=' \
--header 'Content-Type: application/json' \
--data-raw '{
"grant_type": "client_credentials",
"scopes": "qrcode_write,qrcode_read"
}
Response Example
{
"access_token": "5eb50e6b-2bfc-3a44-b9ba-b9ba75256e7e",
"token_type": "bearer",
"expires_in": 86400
}
Access Token generation flow (via format x-www-form-urlencoded)
POST /v2/oauth/token (format url encoded)
Headers
Key Value Authorization Basic + Base64 Content-Type application-json Body
{ "grant_type": "client_credentials" }
Request Example
curl --location --request POST 'https://api2.cielo.com.br/sandbox/v2/oauth/token' \
--header 'Authorization: Basic
dERxQUs0anFoSDg5dFdpUWM1ejY0REJKc2lJTFpLbzh4TG0zV0p3eHkwRkQ0Y2dZVm46
ZVZUVVZJZjFZWDJkOU40M0p4MVZwNGlWVXEzTzluTTR0TGF1UzhZYWo0V1JPcTJFSXU
=' \
--header 'Content-Type: application/json' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'scopes=qrcode_write,qrcode_read'
Response Example
{
"access_token": "8d9529bd-3dcf-3130-82ea-d28712f96de2",
"token_type": "bearer",
"expires_in": 86400
}
API return codes
SUCCESS
Code Nome Description 200 Ok The request was successful for an API call, either GET or POST . 201 Created The create request was successful for an API call of type POST
EXCEPTIONS
Code Nome Description 400 Bad Request. * The request is not valid. One or more conditions in the request fields were not met
List of unmet conditions401 Unauthorized API Consumer Authentication Failed 403 Forbbiden API consumer does not have access to certain features 409 Conflict Resubmission of the request with divergent information. (Ex: Request for payments with different CPF) 412 Precondition Failed 001: Expired key
002: Expected dynamic QRCode422 Unprocessable Entity The request is valid, but it was not possible to process. 500 Internal Server Error Internal application error. Usually coming from infrastructure
Public key generation
The partner needs to call the API/publicKey to get the public key needed to send the card data in encrypted form.
Contract
GET /padraoq/v1/publicKey
Headers
Key Value Authorization Bearer = access_token (generated by the Access Token API)
Request Example
curl --location --request GET 'https://api2.cielo.com.br/sandbox/padraoq/v1/publicKey' \
--header 'Authorization: Bearer 83247803-585d-379d-8ea4-19dfcf4c3f75'
Response Example
{
"public_key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmH7eS0n6yQSylMDZnY3c/mbDUUEJfyslrilslJKpDRG3m2YaCZdtwo5LahEUWshhBc8jckRkCyqDVVfBJ7WQN1Z1hN0ifCK8mfnh/2SAYGc4e8qydcWT64AVQo+Kay201cRuHeCt1Iyuhi5tOxTF2satd40+8eMkqiVJdhJ0Sjc1ZRezFSo96XReiT8eYz/4Rhubq1BPISlNXqqls3NuPMCxY6IFOLmjTi3xEIdcYtUT5MCfXBG4Rz6rMNrQ7JRAfEOIdvcAt++ygV9ilUxtETn+OKKNDcEUKzXM3Taop8vFXD8HWKzfmlA/usxeKxiI6eTrcWCmrVMQ2Yvf4RSU4wIDAQAB",
"key_id": "1b59934a-7eaa-4f90-a391-585de0ffc550",
"expires_in": 35853
}
Cryptography
Example Java code to encrypt the card number using a public key:
import java.security.PublicKey;
import java.util.Base64;
import javax.crypto.Cipher;
public class EncriptCard {
public String encript(PublicKey key, String cardNumber) {
try {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptedBytes =
cipher.doFinal(cardNumber.getBytes());
String encryptedCard =
Base64.getEncoder().encodeToString(encryptedBytes);
return encryptedCard;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
Payment flow
The POST /payment/card resource is responsible for making the payment based on the data contained in the requisition payload. In the request header it’s required to inform Authorization.
The request body consists of data from the application and the QR Code.
Note: it’s possible to generate test cards using the tool (https://namso-gen.com/), for this it’s only required to inform the first 6 digits of a valid card. Through the tool (https://8gwifi.org/RSAFunctionality?keysize=2048), it’s possible to simulate the encryption of the
"card_data"
made using the return obtained from GET / publicKeys.
Contract
POST /padraoq/v1/payment/card
Headers
Key Value Authorization Bearer = access_token (generated by the Access Token API) Content-Type application/json
{
"key_id":"string",
"card_data":"string",
"payee_document":"string",
"payee_name":"string",
"authorization_token":"string",
"qrcode":"string"
}
Property | Description | Type | Required |
---|---|---|---|
key_id |
Identifier of the encryption key used to encrypt the card. Returned by the GET /publicKey resource | String | Yes |
card_data |
Card data encrypted by the public key, See layout | String | Yes |
payee_document |
CPF or CNPJ of the payer (user logged in the wallet) | String | Yes |
payee_name |
Payer name (user logged into the wallet) | String | Yes |
authorization_token |
User authorization token generated by the issuer (support debit payment) * for future use | String | Yes |
qrcode |
QR Code string captured by the wallet | String | Yes |
Request Example
curl --location --request POST 'https://api2.cielo.com.br/sandbox/padraoq/v1/payment/card' \
--header 'Authorization: Bearer 83247803-585d-379d-8ea4-19dfcf4c3f75' \
--header 'Content-Type: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
"key_id": "001",
"card_data": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmeiLngFr9h0npwe6D3ArSi10ZgdOCUCsUYT12KMuYsxImzwe9aGX8XXvzEF60E600ZjdvmYU64UnZKgfbttwNi+Tl7ZcB2cnS/oJMrfA0AbRHukJnL/fFsziHOjv0A1xRcE0ZbJRkob5A5s4GenF+jv/xCTOoIetFimZHZDiPPFux2NyrL3ZqSs7F4XJZvo2zPfCVlAcnEbVf+8vWX3goP2TEuAqZtBT543wIDAQAB+dqSzZSqZolYU1sjV7s8FzsjZYqo+AjM8BMuPlMoPEuBqgRFm4fSRIpeJIr0G9FokSU3X6MAZTC7n3YePHFsFmGxPTrKpEFrp8s28f1qMP5suTsA”,,
"payee_document": "25617535811",
"payee_name": ""Alexandre Marcelino",
"authorization_token": null,
"qr_code": ""00020101021226580014br.com.padraoq01160010000244470001020862000092030400015204030053039865406123.995802BR5909POSTO_ABC6010Barueri_SP62200516100023071641629281600014br.com.padaoq0112230120171643020400040302020402010502038204010063
041213""
}'
Response Example
{
"reference_label": "230120171643",
"merchant_id": "0020060049139200",
"terminal_id": "62000092",
"authorization_code": "031581",
"authentication_code": "null",
"host_nsu": "730025",
"terminal_nsu": "730025",
"timestamp": "160620143832",
"card_scheme": "Master"
}
Layout - Card Data
Note: Encrypt all “cardData” tag information including the quotes “ { } “.
{
"card_number":"4984XXXXXX4106",
"card_cvv":"123",
"card_holder_name":"Teste",
"card_expiration_date":"0127"
}
Payment success codes
Code Name Description 200 Ok The request was successful for an API call, either GET or POST .
Payment error codes
Error Code Error Description 422 001 The product was not found Business error regarding problems with the reported product 422 002 Invalid QRCode Business error regarding problems in QRCode data sent 422 003 QRCode expired Business error regarding QRCode expiration time 422 004 Invalid Card Data Business error referring to problems with the card data entered 422 005 We do not accept payments with the registered card Business error regarding the acceptance of the registered card 422 006 Error in authorizer Business error returned from issuer authorizer 422 007 Generic Error Other Business Mistakes
API to parse the QR Code (optional use))
Contract
GET /padraoq/v1/parsedQRCode
Headers
Key Value Authorization Bearer = access_token (generated by the Access Token API) Content-Type application/json
Parameter:
qrcode:"00020101021226580014br.com.padraoq011600100002444700010208620000920304000152040
30053039865406123.995802BR5909POSTO_ABC6010Barueri_SP622005161000230716416292816000
14br.com.padraoq0112230120171643020400040302020402010502038204010063041213"
body:
<body empty>
Response
{
"qrcode_data":{
"payload_format_indicator":"01",
"point_of_initiation_method":"12",
"merchant_account_information":{
"gui":"br.com.padraoq",
"id_merchant":"1234567890123456",
"id_terminal":"12345678",
"id_credenciador":"1234",
"instituicao":"12345678",
"tipo_de_conta":"1234",
"agencia":"12345678",
"conta":"12345678901234567890"
},
"merchant_category_code":"0000",
"transaction_currency":"986",
"transaction_amount":"01.00",
"country_code":"BR",
"merchant_name":"Q Café",
"merchant_city":"Brasilia",
"additional_data_field":{
"reference_label":"reference label"
},
"crc16":"AC05",
"unreserved_templates":{
"gui":"br.gov.bcb.spi",
"url_uri":"https://br.gov.bcb.spi/"
},
"payment_information":{
"gui":"br.com.padraoq",
"timestamp":"010220120001",
"modalidade":"0400",
"parcelas":"01",
"tipo_de_transacao":"01",
"fonte_de_dados_do_pagamento":"03",
"campo_livre":"1234567890"
}
}
}
QR CODETM POS GENERATED LAYOUT (NEW BR CODE +ELO MODEL)
The data used to generate the QRCode for reading in the digital wallet must follow as a basis the specification “EMVCo-Merchant-Presented-QR-Specification-v1” using the data below:
Type | Description |
---|---|
N | Numeric - Values represented by digits from “0” to “9” |
ANS | Special Alphanumeric - Special alphanumeric values contain (96) characters in total, including numbers and punctuation. |
ID | Field name | Size | Type | Description |
---|---|---|---|---|
00 | Payload Format Indicator | 02 | N | QR Code data version used in code generation. Fixed “01”. |
01 | Point of Initiation Method | 02 | N | Identifier of the generated QR Code method: Fixed “12” – Dynamic QR Code. |
26 | Merchant Account Information | Up to 76 | ANS | Establishment Information |
26 | 00 - Globally Unique Identifier | 14 | ANS | Global identifier: use fixed “br.com.padraoq”. |
26 | 01 - Merchant Account Information | 16 | N | Commercial Establishment Number.. |
26 | 02 - Logic Number | 08 | N | Terminal Logical Number. |
26 | 03 - ID Accreditor | 04 | N | Accreditor identification. Fixed “0001”. |
26 | 04 - CPF/CNPJ | Up 14 | N | CPF or CNPJ number of the EC. |
27 | ELO - Merchant Account Information | Up 99 | ANS | Merchant Information OBS: Although this is ELO-specific data, it must be present in all QRCode transactions “BR Code V3 Aliança + Elo”. |
27 | 00 - Globally Unique Identifier | 10 | ANS | Global identifier: use fixed “BR.COM.ELO”. |
27 | 01 - Acquirer ID | 04 up 07 | ANS | Accreditor Code assigned by Elo. In case Cielo uses the fixed value “8384”. |
27 | 02 - Merchan Identification Number | 15 | N | Commercial Establishment Number: use only the last 15 digits. |
27 | 03 - Terminal ID | 08 | ANS | Terminal Logical Number. |
27 | 04 - Terminal Device Type | 01 | ANS | Device/environment type displaying the QR Code: “A” – ATM “C” – Mobile (Mobile) “E” – E-commerce “M” – POS Mobile “P” – Standard POS “T” – TEF |
52 | Merchant Category Code | 04 | N | Establishment’s branch of activity (MCC). |
53 | Transaction Currency | 03 | N | Currency source code. |
54 | Transaction Amount | Up 13 | ANS | Transaction amount. Ex.: “123.99” |
58 | Country Code | 02 | ANS | Country code: Fixed “BR”. |
59 | Merchant Name | Up 25 | ANS | Business Name of the Establishment. |
60 | Merchant City | Até 15 | ANS | City of Establishment. |
61 | Postal Code | 08 | N | Terminal location zip code taken from Bit 63 subfield 25 of initialization. For the Brazilian ZIP code format, use 8 digits, no hyphen. |
62 | Additional Data Field | Up 29 | ANS | Additional Data Field |
62 | 05 - Reference Label | Up 25 | ANS | QR Code identification. Unique transaction code, extracted from BIT 31.. |
81 | Transaction informations | Up 99 | ANS | Transaction information |
81 | 00 - Globally Unique Identifier | 14 | ANS | Global identifier: use fixed “br.com.padraoq”. |
81 | 01 - Transaction Date | 12 | N | Transaction date and time (DDMMYYHHmmss). |
81 | 02 - Modality | 04 | H | Fixed codes in hex for the Matrix and Secondary product flows: Debit on demand (Flow 08): 0001Credit on demand (Flow 04): 0002 Store installment credit (Flow 06) : 0004 ADM Installment Credit (Flow 05): 0008 Voucher (Flow 13): 0010 Fleets (Flow 32): 0020 Pre -Authorization (Flow 07): 0040 Crediário Simulation (Flow 11): 0200 Crediário Hiring (Flow 43): 0400 Other: 0000 |
81 | 03 - Payment Installments | 02 | N | Number of installments. |
81 | 04 - Transaction Type | 02 | N | Transaction Type: “01” – Sale; “02” – Cancellation. |
81 | 05 - Payment Data Source | 02 | N | Fixed:”03” - QR Code |
81 | 06 - NOriginal Transaction NSU | Up 12 | N | NSU of current transaction |
81 | 50 - RUF | Up 19 | ANS | RUF |
82 | Unreserved Templates – Elo Transaction Detail | 56 Up 88 | ANS | ELO - Transaction information OBS: Although this is ELO-specific data, it must be present in all QRCode transactions “BR Code V3 Aliança + Elo” |
82 | 00 - Globally Unique Identifier | 10 | ANS | Shared global QR code identifier: fixed value equal to “BR.COM.ELO”. |
82 | 01 - Transaction Date | 10 | N | Transaction date and time(MMDDHHmmss). |
82 | 02 - Product Type & Installments | 03 | ANS | Position [1] Product of the transaction: “C” – Credit – Flows: 04, 06, 05, 11 and 43 “D” – Debit – Flow : 08 “V” – Voucher – Flow: 13 and 32 “O” – Others – Other unforeseen flows. Position [2,3] Amount of parcels. For spot transactions, the field must be sent with the value equal to “00”. |
82 | 03 - Transaction Type | 02 | N | Transaction Type: “01” – Purchase “02” – Cancellation “03” – Purchase with Withdrawal “04” – Withdrawal |
82 | 04 - Transaction ID | 06 | N | NSU of the current transaction.. |
82 | 05- Original Transaction ID | 06 | N | Unique identifier of the original Transaction that will be canceled (Transaction ID field of the QR Code used in the original transaction). Must be presented in the QR Code used to initiate cancellation transactions. NOTE: Include only this field if it is a cancellation transaction.. |
82 | 06 - Original Transaction Date | 04 | N | Date of the original transaction, which will be canceled, in MMDD format. Must be sent for cancellation transactions NOTE: Only include this field if it is a cancellation transaction. |
82 | 07 - Original Transaction Terminal ID | 08 | ANS | Terminal Logical Number. Identification of the merchant’s terminal used in the original transaction. Must be sent for cancellation transactions. NOTE: Only include this field if it is a cancellation transaction. |
82 | 08 - Elo QR Code Version | Up 03 | N | Identification of the QR Code Link version used in the transaction. For this document, use the value equal to “3”. |
63 | CRC16 | 04 | ANS | Calculated checksum of QR Code data (See Documentation “EMV-QRCode” and “ISO13239). |
Ex.:
Data:
00020101021226760014br.com.padraoq0116123456789012000102082009130003040001041 40306501400093927580010BR.COM.ELO010483840215234567890120001030820091300040 1P520400005303986540525.005802BR5905CIELO6014SANTOANDRE SP61080600000062200516040310245460330981740014br.com.padraoq01120203211002180 20400020302010402010502030606069646500082560010BR.COM.ELO011003021002180203 C0003020104060696460801363044847
QRCODE:
QR CODETM POS GENERATED LAYOUT (NEW BR CODE MODEL)
The data used to generate the QRCode for reading in the digital wallet must follow the specification “EMVCo-Merchant-Presented-QR-Specification-v1” using the data below:
Type | Description |
---|---|
N | Numeric - Values represented by digits from “0” to “9” |
ANS | Special Alphanumeric - Special alphanumeric values contain (96) characters in total, including numbers and punctuation. |
ID | Nome do Campo | Tam | Tipo | Descrição |
---|---|---|---|---|
00 | Payload Format Indicator | 02 | N | QR Code data version used in code generation. Fixed “01”. |
01 | Point of Initiation Method | 02 | N | Identifier of the generated QR Code method: Fixed “12” – Dynamic QR Code. |
26 | Merchant Account Information | Up 76 | ANS | Establishment Information |
26 | 00 - Globally Unique Identifier | 14 | ANS | Global identifier: use fixed “br.com.padraoq”. |
26 | 01 - Merchant Account Information | 16 | N | Commercial Establishment Number. |
26 | 02 - Logic Number | 08 | N | Terminal Logical Number. |
26 | 03 - ID Accreditor | 04 | N | Accreditor identification. Fixed “0001. |
26 | 04 - CPF/CNPJ | Up 14 | N | CPF/CNPJ number of the merchant |
52 | Merchant Category Code | 04 | N | Establishment’s branch of activity (MCC). |
53 | Transaction Currency | 03 | N | Currency source code. |
54 | Transaction Amount | Up 13 | ANS | Transaction amount. Ex: “123.99” |
58 | Country Code | 02 | ANS | Country code: Fixed “BR”. |
59 | Merchant Name | Up 25 | ANS | Business Name of the Establishment. |
60 | Merchant City | Up 15 | ANS | City of Establishment. |
62 | Additional Data Field | Up 29 | ANS | Additional Data Field |
62 | 05- Reference Label | Up 25 | ANS | QR Code identification. Unique code of the transaction, taken from BIT 31. |
81 | Transaction informations | Up 99 | ANS | Transaction information |
81 | 00 - Globally Unique Identifier | 14 | ANS | Global identifier: use fixed “br.com.padraoq”. |
81 | 01 - Transaction Date | 12 | N | Transaction date and time (DDMMYYHHmmss). |
81 | 02 - Main Product | 04 | N | Matrix product code. |
81 | 03 - Payment Installments | 02 | N | Number of installments. |
81 | 04 - Transaction Type | 02 | N | Transaction Type: “01” – Sale; “02” – Cancellation. |
81 | 05 - Payment Data Source | 02 | N | Fixed: “03” - QR Code |
81 | 06 - NSU Host Original | Up 12 | N | NSU of the original transaction |
81 | 50 - Campo livre/RUF | Up 19 | ANS | Free Usage Field (RUF) |
63 | CRC16 | 04 | ANS | Calculated checksum of QR Code data (See Documentation “EMV-QRCode” and “ISO13239”). |
Ex:
DATA:
00020101021226760014br.com.padraoq0116001000024447000102086200009203040001041 4010270580001915204030053039865406123.995802BR5909POSTO_ABC6010Barueri_SP6220 0516100023071641629281720014br.com.padraoq011223012017164302040004030202040201 05020306020050020063040CE6
QR CODE:
Map TAGs generated in a transaction via QRCode:
00020101021226760014br.com.padraoq0116001000024447000102086200009203040001041 4010270580001915204030053039865406123.995802BR5909POSTO_ABC6010Barueri_SP6220 0516100023071641629281720014br.com.padraoq011223012017164302040004030202040201 05020306020050020063040CE6
ID | Field name | Size | Type | Description | Parse |
---|---|---|---|---|---|
00 | Payload Format Indicator | 02 | N | QR Code data version used in code generation. Fixed “01”. | 01 |
01 | Point of Initiation Method | 02 | N | Identifier of the generated QR Code method: Fixed “12” – Dynamic QR Code. | 12 |
26 | Merchant Account Information | 76 | ANS Establishment Information | ||
26 | 00 - Globally Unique Identifier | 14 | ANS | Global identifier: use fixed “br.com.padraoq”. | br.com.padraoq |
26 | 01 - MerchantAccount Information | 16 | N | Number of the Commercial Establishment. | 0010000244470001 |
26 | 02 - Logic Number | 08 | N | Terminal Logical Number. | 62000092 |
26 | 03 - ID Credenciador | 04 | N | Accreditor identification. Fixed “0001”. | 0001 |
26 | 04 - CPF/CNPJ | Até 14 | N | CPF/CNPJ number of the merchant | 01027058000191 |
52 | Merchant Category Code | 04 | N | Establishment’s branch of activity (MCC). | 0300 |
53 | Transaction Currency | 03 | N | Currency source code. | 986 |
54 | Transaction Amount | Até 13 | ANS | Transaction amount. Ex: “123.99” | 123.99 |
58 | Country Code | 02 | ANS | Country code: Fixed “BR”. | BR |
59 | Merchant Name | Up 25 | ANS | Business Name of the Establishment. | POSTO_ABC |
60 | Merchant City | Up 15 | ANS | City of Establishment. | Barueri_SP |
62 | Additional Data Field | Up 29 | ANS | Additional Data Field | |
62 | 05 - Reference Label | Up 25 | ANS | QR Code identification. Unique transaction code, extracted from BIT 31. | 1000230716416292 |
81 | Transaction informations | Up 99(72 in this example | ANS | Transaction information | |
81 | 00 - Globally Unique Identifier | 14 | ANS | Global identifier: use fixed “br.com.padraoq”. | br.com.padraoq |
81 | 01 - Transaction Date | 12 | N | Transaction date and time (DDMMYYHHmmss). | 230120171643 |
81 | 02 - Main Product | 04 | N | Matrix product code.. | 0004 |
81 | 03 - Payment Installments | 02 | N | Number of installments. | 02 |
81 | 04 - Transaction Type | 02 | N | Transaction type: “01” – Sale; “02” – Cancellation. |
01 |
81 | 05 - Payment Data Source | 02 | N | Fixed:”03” - QR Code | 03 |
81 | 06 - NSU Host Original | Up 12 | N | NSU of the original transaction | 00 |
81 | 50 - Free Field/RUF | Up 19 | ANS | Free field of use (RUF) | 00 |
82 | RUF | Up 99 | ANS | RUF | |
82 | 01 - RUF | Up 95 | ANS | RUF | |
63 | CRC16 | 04 | ANS | Calculated checksum of QR Code data (See Documentation “EMV-QRCode” and “ISO13239”). | 8F04 |
QR CODETM POS GENERATED LAYOUT (OLD MODEL)
The data used to generate the QRCode for reading in the digital wallet must follow as a basis the specification “EMVCo-Merchant-Presented-QR-Specification-v1” using the data below:
Type | Description |
---|---|
N | Numeric - Value represented by digits 0 from 9 |
ANS | Alphanumeric - contain 96 characters including numbers and accents |
ID | Field name | Size | Type | Description |
---|---|---|---|---|
00 | Payload format indicator | 02 | N | QR Code data version used at code generation. Fixe”01” |
01 | Point of initiation Method | 02 | N | QR Code method identifier: Fixed “12” Dynamic QR Code |
26 | Merchant Account Information | up to 56 | ANS | Merchant information |
26 | 00 - Globaly Unique identifier | up to 32 | ANS | Global identifier. Fixed “Cielo” |
26 | 01 - Merchant Account information | 16 | N | Merchant number |
26 | 02 - Logic Number | 08 | N | Terminal Logical Number |
52 | Merchant Category Code | 04 | N | Merchant Category Code (MCC) |
53 | Transaction Currency | 03 | N | Transaction Currency |
54 | Transaction Amount | 12 | N | Transaction Amount |
58 | Contry Code | 02 | ANS | Country Code. Fixed “BR” |
59 | Merchant Name | up to 25 | ANS | Merchant Name |
59 | Merchant City | up to 15 | ANS | Merchant City |
80 | Transaction Informations | up to 120 | ANS | Transaction Information |
80 | 00 - Globally Unique Identifier | up to 80 | ANS | Global Identifier: Use the fixed URL, including (“”):”https://www.cielo.com.br/qrcode” |
80 | 01 - Transaction ID | 16 | ANS | Unique transaction code |
80 | 02 - Transaction Date | 12 | N | Transaction’s date and time (DDMMYYHHmmss) |
80 | 03 - Main Product | 04 | N | Main Product |
80 | 04 - Sub Product | 04 | N | Sub Product |
80 | 05 - Payment Installments | 02 | N | Payment Installments |
80 | 06 - Transaction Type | 02 | N | Type of transaction: “01” - Payment Request “02” - Cancellation request |
63 | CRC | 04 | ANS | Calculated checksum of QrCode data (see documentation”EMV-QrCode” and “ISO13239”) |
00020101021226410005Cielo011600100002444720100208201000015204591 2530398654120000000010005802765923CIA BRAS MEIO PAGAMENTO6009SAO PAULO801010033”https://www.cielo.com.br/qrcode”01161209676128919 232021210041809451203041000040400010502010602016304**A177**
ID | Field name | Size | Type | Description | Parse |
---|---|---|---|---|---|
00 | Payload Format Indicator | 02 | N | QR Code version fixed value “01” | 01 |
01 | Point of Initiation Method | 02 | N | QR Code Method Identifier: Fixed “12” – Dynamic QR Code | 12 |
26 | Merchant Account Information | Up to 56 | ANS | Property Information | |
26 | 00 - Globally Unique Identifier | Up to 32 | ANS | Global identifier: fixed value “Cielo” | Cielo |
26 | 01 - Merchant Account Information | 16 | N | Establishment number | 0010000244472010 |
26 | 02 - Logic Number | 08 | N | terminal number | 20100001 |
52 | Merchant Category Code | 04 | N | MCC | 5912 |
53 | Transaction Currency | 03 | N | Currency code | 986 |
54 | Transaction Amount | 12 | N | Transaction amount | 000000001000 |
58 | Country Code | 02 | ANS | Country Code. Fixed “BR” | 76 |
59 | Merchant Name | Up to 25 | ANS | Name of the establishment | CIA BRAS MEIO PAGAMENTO |
60 | Merchant City | Up to 15 | ANS | City of establishment | SAO PAULO |
80 | Transaction informations | Up to 120 | ANS | Transaction information | |
80 | 00 - Globally Unique Identifier | Up to 80 | ANS | Global identification url:fixed:: “https://www.cielo.com.br/qr_code” | “https://www.cieloid.com.br/qr_code” |
80 | 01 - Transaction ID | 16 | N | Unique transaction code | 12096761 28919232 |
80 | 02 - Transaction Date | 12 | N | Transaction date (DDMMYYHHmmss) | 100418094512 |
80 | 03 - Main Product | 04 | N | PMain product | 1000 |
80 | 04 - Sub Product | 04 | N | Secondary product | 0001 |
80 | 05 - Payment Installments | 02 | N | Number of installments | 01 |
80 | 06 - Transaction Type | 02 | N | Transaction Type: “01” – Payment “02” – Cancellation |
01 |
63 | CRC | 04 | ANS | QR Code string checksum | A177 |
CALLBACK API FOR UNDO (optional use)
There is a call-back API to inform the wallet of a defect
The partner needs to develop an API to receive the undo information following the format below and providing the url to send the information:
Body:
{
"transactionDate": "string",
"terminalLogicalNumber": "string",
"authorizationCode": “string",
"nsu": "string",
“merchantId“: 0,
“amount“: 0,
“originalTransactionType”: 0,
“statusCode“: 0
}
API request (example):
{
"transactionDate": "2018-10-29T14:35:12.000+0000",
"terminalLogicalNumber": "78257509",
"authorizationCode": "019387",
"nsu": "572061",
“merchantId“: 1000000000,
“amount“: 82.90,
“originalTransactionType”: 1,
“statusCode“: 3
}