Ambientes

Ambiente Endereço
Sandbox api2.cielo.com.br/sandbox
api2.cielo.com.br/sandbox/v2/oauth/token (formato url encoded)
api2.cielo.com.br/sandbox/v2/oauth/access-token (formato 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
Produção api2.cielo.com.br
api2.cielo.com.br/v2/oauth/token (formato url encoded)
api2.cielo.com.br/v2/oauth/access-token (formato json)
api2.cielo.com.br/padraoq/v1/publicKey
api2.cielo.com.br/padraoq/v1/parsedQRCode
api2.cielo.com.br/padraoq/v1/payment/card

Requerimentos para acesso

Para a utilização de nossas APIs precisamos receber as seguintes informações, para a criação do cliente id e Authorization.

Informações que enviaremos:

Após o envio das informações acima, enviaremos ao responsável o client_id (chave que identifica a APP) e o client_secret.

Qualquer dúvida, abra um ticket via Zendesk

Autenticação

Fluxo de geração do Access Token (via format JSON)

Fluxo de Integração QR Code

O recurso access_token é responsável pela autenticação utilizando protocolo OAuth 2.0. Com o client_id e client_secret em mãos a requisição ao POST /access_token deve ser feita portando o authorization no Header e o grant_type no corpo da requisição, segue exemplo abaixo.

Nota: O valor do authorization deve ser composto da palavra Basic com o Base64 gerado a partir da concatenação do client_id:client_secret

Contrato

POST /v2/oauth/access-token (formato json)

Headers

Key Value
Authorization Basic + Base64
Content-Type application-json

Body

{
"grant_type": "client_credentials"
}

Exemplo de Requisição

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"
}

Exemplo de Resposta

{
  "access_token": "5eb50e6b-2bfc-3a44-b9ba-b9ba75256e7e",
  "token_type": "bearer",
  "expires_in": 86400
}

Fluxo de geração do Access Token (via format x-www-form-urlencoded)

Fluxo de Integração QR Code

POST /v2/oauth/token (formato url encoded)

Headers

Key Value
Authorization Basic + Base64
Content-Type application-json

Body

{
"grant_type": "client_credentials"
}

Exemplo de Requisição

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'

Exemplo de Resposta

{
"access_token": "8d9529bd-3dcf-3130-82ea-d28712f96de2",
"token_type": "bearer",
"expires_in": 86400
}

Códigos de retorno da API

SUCESSO

Code Nome Descrição
200 Ok A solicitação foi bem sucedida para uma chamada da API, seja GET OU POST .
201 Created A solicitação de criação foi bem sucedida para uma chamada da API do tipo POST

EXCEÇÕES

Code Nome Descrição
400 Bad Request. * A requisição não é valida. Uma ou mais condições dos campos do request não foram atendidas
Lista das condições não atendidas
401 Unauthorized Falha na Autenticação do consumidor da API
403 Forbbiden Consumidor da API não possui acesso a determinados recursos
409 Conflict Reenvio da solicitação com informações divergentes. (Ex: Solicitação de pagamentos com CPF distintos)
412 Precondition Failed 001: Chave expirada
002: QRCode dinâmico esperado
422 Unprocessable Entity A requisição é valida, porém não foi possivel realizar o processamento.
500 Internal Server Error Erro interno da aplicação. Normalmente provinientes de infraestrutura

Geração da chave pública

O parceiro precisa chamar a API/publicKey para obter a chave pública necessária para o envio dos dados do cartão de forma criptografada.

Fluxo de Integração QR Code

Contrato

GET /padraoq/v1/publicKey

Headers

Key Value
Authorization Bearer = access_token (gerado pela API de Access Token)

Exemplo de Requisição


curl --location --request GET 'https://api2.cielo.com.br/sandbox/padraoq/v1/publicKey' \
--header 'Authorization: Bearer 83247803-585d-379d-8ea4-19dfcf4c3f75'

Exemplo de Resposta


{
    "public_key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmH7eS0n6yQSylMDZnY3c/mbDUUEJfyslrilslJKpDRG3m2YaCZdtwo5LahEUWshhBc8jckRkCyqDVVfBJ7WQN1Z1hN0ifCK8mfnh/2SAYGc4e8qydcWT64AVQo+Kay201cRuHeCt1Iyuhi5tOxTF2satd40+8eMkqiVJdhJ0Sjc1ZRezFSo96XReiT8eYz/4Rhubq1BPISlNXqqls3NuPMCxY6IFOLmjTi3xEIdcYtUT5MCfXBG4Rz6rMNrQ7JRAfEOIdvcAt++ygV9ilUxtETn+OKKNDcEUKzXM3Taop8vFXD8HWKzfmlA/usxeKxiI6eTrcWCmrVMQ2Yvf4RSU4wIDAQAB",
    "key_id": "1b59934a-7eaa-4f90-a391-585de0ffc550",
    "expires_in": 35853
}

Criptografia

Exemplo do código Java para encriptrar o cartão através da chave pública:

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);
        }
    }
}

Fluxo de pagamento

Fluxo de Integração QR Code

O recurso POST /payment/card é responsável por efetuar o pagamento com base nos dados contidos no payload da requisição. No header da requisição é necessário informar o Authorization. O corpo da requisição é composto por dados provenientes do aplicativo e do QR Code.

Observação: é possível gerar cartões para teste através da ferramenta (https://namso-gen.com/), para isso é necessário apenas informar os 6 primeiros dígitos de um cartão válido. Através da ferramenta (https://8gwifi.org/RSAFunctionality?keysize=2048), é possível simular a criptografia do "card_data" feita utilizando o retorno obtido do GET /publicKeys.

Contrato

POST /padraoq/v1/payment/card

Headers

Key Value
Authorization Bearer = access_token (gerado pela API de Access Token)
Content-Type application/json
{
   "key_id":"string",
   "card_data":"string",
   "payee_document":"string",
   "payee_name":"string",
   "authorization_token":"string",
   "qrcode":"string"
}
Propriedade Descrição Tipo Obrigatório
key_id Identificador da chave de criptografia utilizada para criptografar o cartão. Retornado pelo recurso GET /publicKey String Sim
card_data Dados do cartão criptografado pela chave publica, Veja layout String Sim
payee_document CPF ou CNPJ do pagador (usuário logado na wallet) String Sim
payee_name Nome do pagador (usuário logado na wallet) String Não
authorization_token Token de autorização do usuário gerada pelo emissor (suporte ao pagamento no débito) * para uso futuro String Não
qrcode String do QR Code capturado pela wallet String Sim

Exemplo de Requisição


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""
}'

Exemplo de Resposta


{
  "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

Layout Card Data

Observação: Encriptar todas as informações da tag “cardData” inclusive com as aspas “ { } “.

{
   "card_number":"4984XXXXXX4106",
   "card_cvv":"123",
   "card_holder_name":"Teste",
   "card_expiration_date":"0127"
}

Códigos de sucesso Payment

HTTP STATUS CODE Nome Descrição
200 Ok A solicitação foi bem sucedida para uma chamada da API, seja GET OU POST .

Códigos de erro Payment

Ao realizar uma requisição para algum dos recursos da API e os dados não forem satisfatórios para realizar o procedimento, será devolvido uma resposta contendo no corpo as seguintes informações:

{
    "code": "422.007",
    "description": "Generic error (0xd4596b31) "
}

Onde:
• code: Código de resposta interno da aplicação.
• description: Descrição sobre o problema encontrado no processo.

A tabela abaixo apresenta os possíveis cenários de validações realizados pela API durante o fluxo de pagamento.

HTTP STATUS CODE CODE DESCRIPTION CAUSE(S)  
400 412.101 O campo ‘key_id’ é obrigatório O campo key_id enviado no body da requisição está em branco.  
400 412.102 O campo ‘card_data’ é obrigatório O campo card_data enviado no body da requisição está em branco.  
400 412.104 O campo ‘qr_code’ é obrigatório O campo qr_code enviado no body da requisição está em branco.  
400 412.156 O CPF enviado não é válido O campo payee_document enviado no body da requisição não é um CPF válido.  
400 412.157 O CNPJ enviado não é válido O campo payee_document enviado no body da requisição não é um CNPJ válido.  
400 422.002 QRCode inválido O QRCode informado contém campos em que o tamanho da posição está maior que a estabelecida pelo layout.  
422 412.155 O documento do cliente não foi reconhecido. Ele dever ser um CPF ou CNPJ válido O campo payee_document enviado no body da requisição não é um CPF ou CNPJ.  
422 422.001 O produto não foi encontrado A fonte de pagamento informada pela aplicação não foi mapeada.  
422 422.002 QRCode inválido A aplicação não pôde fazer o parse dos dados do QRCode.  
      O QRCode informado contém campos em que a posição não existe no layout.  
      Não foi encontrado o registro de geração do QRCode informado no banco de dados.  
      O valor informado para o “Identificador do Pagamento” (reference label) é divergente do enviado na solicitação do pagamento.  
      O valor informado para o “Valor da Transação” (transaction amount) é divergente do enviado na solicitação do pagamento.  
      O valor informado para o “Número do Terminal Lógico” (id terminal) é divergente do enviado na solicitação do pagamento.  
      O valor informado para a “Data da Transação” (transaction date) é divergente do enviado na solicitação do pagamento.  
      O valor informado para o “Número do EC” (id merchant) é divergente do enviado na solicitação do pagamento.  
      O valor informado para o “Nome do EC” (merchant name) é divergente do enviado na solicitação do pagamento.  
      O valor informado para o “Código da Categoria do EC” (merchant category code) é divergente do enviado na solicitação do pagamento.  
      O valor informado para o “Cidade do EC” (merchant city) é divergente do enviado na solicitação do pagamento.  
      O valor informado para o NSU é divergente do enviado na solicitação do pagamento.  
422 422.003 QRCode expirado Ocorre quando a data de pagamento (timestamp) do QR Code excedeu o tempo limite de expiração.  
422 422.004 Dados de cartão inválido O campo card_number do cartão informado não é numérico.  
      O campo card_holder_name do cartão informado está em branco.  
      O campo card_expiration_date do cartão informado está em branco.  
      O campo card_cvv do cartão informado contém mais de 4 caracteres.  
      O campo card_expiration_date do cartão informado contém mês/ano menor que o atual.  
      Ao realizar uma integração externa para tokenizar o cartão houve um problema.  
422 422.006 Erro no autorizador ou emissor (código de retorno) Ao realizar uma integração externa para efetuar o pagamento, ele não foi efetuado com sucesso. Obs.: A informação entre parênteses é o código retornado pelo sistema externo, identificando o problema.  
422 422.007 Erro genérico (0xd4596b31) O campo wallet enviado no header da requisição não foi encontrado no banco de dados.  
    Erro genérico (0x868cb5bb) As chaves de criptografia não foram encontradas no banco de dados.  
    Erro genérico (0x14382170) Não foi possível decodificar a chave pública.  
      Não foi possível decodificar os dados do cartão.  
    Erro genérico (0x7f4659a6) Não foi possível descriptografar os dados do cartão, pois a chave pública ou privada é inválida.  
    Erro genérico (0x342b3019) Não foi possível descriptografar os dados do cartão.  
    Erro genérico (0xf1fe2e5a) A aplicação não pôde converter o JSON informado com os dados do cartão.  
    Erro genérico (0x2b31d726) O número do cartão informado corresponde ao BIN da Caixa, porém a carteira enviada no header da requisição não é Caixa.  
    Erro genérico (0xd8dcc723) A aplicação não pôde mapear o Tipo de Tecnologia informado.  
    Erro genérico (0x3a1a3fb7) A aplicação não pôde converter o JSON com os dados do cartão tokenizado.  
    Erro genérico (0x2172d473) Ao realizar uma integração externa para efetuar o pagamento houve um problema.  
    Erro genérico (0x707a0b47) A aplicação não pôde converter o CAVV (cipheredCryptogram) para o formato solicitado na integração externa.  
    Erro genérico (0xddd30422) A carteira digital da requisição é diferente da que negou o pagamento.  
    Erro genérico (0xljg30422) Já existe um pagamento sendo processado.  
    Erro genérico (2eae5a3583) Ao realizar uma integração externa para efetuar o pagamento foi retornado um erro.  
    Erro genérico (0x27d48cd4) Ao realizar uma integração externa para efetuar o pagamento foi retornado um erro.  
    Erro genérico (0x3c10fed2) Ao realizar uma integração externa para efetuar o pagamento foi retornado um erro.  
500 422.007 Erro genérico (0x2429cb80) O Tipo de Tecnologia informado pela aplicação não foi encontrado no banco de dados.  
    Erro genérico (0x69ad89d4) O Tipo de Transação informado pela aplicação não foi encontrado no banco de dados.  
    Erro genérico (0x6f566831) O status do pagamento informado pela aplicação não foi encontrado no banco de dados.  
500 500.050 Erro interno de sistema Não foi possível descriptografar a chave pública.  
      Data/Hora de expiração da chave pública é menor que a atual.  
      Não foi possível codificar a chave privada.  
      A aplicação não pôde fazer o parse dos dados do QRCode.  
      O valor informado no Point of Initiation Method (posição 01 do QRCode) não existe na aplicação.  
      O Tipo de Transação informado pela aplicação não foi mapeado.  

API para realizar parse do QR Code (uso opcional)

Fluxo Parsed QR Code

Contrato

GET /padraoq/v1/parsedQRCode

Headers

Key Value
Authorization Bearer = access_token (gerado pela API de Access Token)
Content-Type application/json

Parameter:

qrcode:"00020101021226580014br.com.padraoq011600100002444700010208620000920304000152040
30053039865406123.995802BR5909POSTO_ABC6010Barueri_SP622005161000230716416292816000
14br.com.padraoq0112230120171643020400040302020402010502038204010063041213"


body:

<body vazio>

Response

Observação: stringQrCode está depreciado e será descontinuado.


{
   "stringQrCode": null,
   "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 LAYOUT GERADO PELO POS (MODELO NOVO BR CODE +ELO)

Os dados usados para gerar o QRCode para leitura na carteira digital deve seguir como base a especificação “EMVCo-Merchant-Presented-QR-Specification-v1” utilizando os dados abaixo:

Tipo Descrição
N Numérico – Valores representados por dígitos de “0” a “9”
ANS Alfanumerico especial – Valores alfanuméricos especiais contem (96) caracteres no total, incluindo números e pontuação.
ID Nome do Campo Tam Tipo Descrição
00 Payload Format Indicator 02 N Versão dos dados do QR Code utilizadana geração do código. Fixo “01”.
01 Point of Initiation Method 02 N Identificador do método QR Code gerado: Fixo “12” – QR Code Dinâmico.
26 Merchant Account Information Até 76 ANS Informações do Estabelecimento
26 00 - Globally Unique Identifier 14 ANS Identificador global: usar fixo “br.com.padraoq”.
26 01 - Merchant Account Information 16 N Numero do Estabelecimento Comercial.
26 02 - Logic Number 08 N Número Logico do terminal.
26 03 - ID Credenciador 04 N Identificação do credenciador. Fixo “0001”.
26 04 - CPF/CNPJ Até 14 N Número do CPF ou CNPF do EC.
27 ELO - Merchant Account Information Até 99 ANS Informações do Estabelecimento
OBS: Apesar de serem dados específicosda ELO, estem devem estar presentes emtodo as as transações de QRCode “BR Code V3 Aliança + Elo”.
27 00 - Globally Unique Identifier 10 ANS Identificador global: usar fixo “BR.COM.ELO”.
27 01 - Acquirer ID 04 até 07 ANS Código do Credenciador atribuído pela Elo.
No caso da Cielo utilizar o valor fixo “8384”.
27 02 - Merchan Identification Number 15 N Número do Estabelecimento Comercial:utilizar apenas os 15 ultimos dígitos.
27 03 - Terminal ID 08 ANS Número Lógico do terminal.
27 04 - Terminal Device Type 01 ANS Tipo de device/ambiente exibindo o QR Code:
“A” – ATM
“C” – Celular (Mobile)
“E” – E-commerce
“M” – POS Mobile
“P” – POS padrão
“T” – TEF
52 Merchant Category Code 04 N Ramo de atividade do Estabelecimento (MCC).
53 Transaction Currency 03 N Código de origem da Moeda.
54 Transaction Amount Até 13 ANS Valor da transação. Ex: “123.99”
58 Country Code 02 ANS Código do país: Fixo “BR”.
59 Merchant Name Até 25 ANS Nome Fantasia do Estabelecimento.
60 Merchant City Até 15 ANS Cidade do Estabelecimento.
61 Código Postal 08 N CEP da localidade do terminal retirado do Bit 63 subcampo 25 da inicialização. Para o formato de CEP brasileiro, utilizar 8 dígitos, sem hífen.
62 Additional Data Field Até 29 ANS Campo de dados Adicionais
62 05 - Reference Label Até 25 ANS Identificação do QR Code. Código único da transação, extraído BIT 31.
81 Transaction informations Até 99 ANS Informações da transação
81 00 - Globally Unique Identifier 14 ANS Identificador global: usar fixo “br.com.padraoq”.
81 01 - Transaction Date 12 N Data e hora da transação (DDMMAAHHmmss).
81 02 - Modalidade 04 H Códigos fixos em hexa para os fluxos de produto Matriz e produto Secundário:
Débito à Vista (Fluxo 08): 0001Crédito à Vista (Fluxo 04): 0002
Crédito parcelado Loja (Fluxo 06): 0004
Crédito parcelado ADM (Fluxo 05): 0008
Voucher (Fluxo 13): 0010
Frotas (Fluxo 32): 0020
Pré-Autorização (Fluxo 07): 0040
Crediário Simulação (Fluxo 11): 0200
Crediário Contratação (Fluxo 43): 0400
Outro: 0000
81 03 - Payment Installments 02 N Número de parcelas.
81 04 - Transaction Type 02 N Tipo da transação:
“01” – Venda;
“02” – Cancelamento.
81 05 - Fonte de Dados do Pagamento 02 N Fixo:“03” – QR Code
81 06 - NSU da Transação Original Até 12 N NSU da transação atual.
81 50 - RUF Até 19 ANS RUF
82 Unreserved Templates – Elo Transaction Detail 56 até 88 ANS ELO - Informações da transação
OBS: Apesar de serem dados específicosda ELO, estem devem estar presentes em todoas as transações de QRCode “BR Code V3 Aliança + Elo”.
82 00 - Globally Unique Identifier 10 ANS Identificador global QR code compartilhado: valor fixo igual a “BR.COM.ELO”.
82 01 - Transaction Date 10 N Data e hora da transação(MMDDHHmmss).
82 02 - Product Type & Installments 03 ANS Posição [1]
Produto da transação:
“C” – Crédito – Fluxos: 04, 06, 05, 11 e 43
“D” – Débito – Fluxo: 08
“V” – Voucher – Fluxo: 13 e 32
“O” – Outros – Outros fluxos não previstos.
Posição [2,3]
Quantidade de parcelas. Para transações à vista campo deve ser enviado com o valor igual a “00”.
82 03 - Transaction Type 02 N Tipo da transação:
“01” – Compra
“02” – Cancelamento
“03” – Compra com Saque
“04” – Saque
82 04 - Transaction ID 06 N NSU da transação atual.
82 05- Original Transaction ID 06 N Identificador único da Transação original que será cancelada (campo Transaction ID do QR Code usado na transação original).
Deve ser apresentado no QR Code usado para iniciar transações de cancelamento.
OBS: Somente incluir este campo se for uma transação de cancelamento.
82 06 - Original Transaction Date 04 N Data da transação original, que será cancelada, no formato MMDD.
Deve ser enviado para transações de cancelamento
OBS: Somente incluir este campo se for uma transação de cancelamento.
82 07 - Original Transaction Terminal ID 08 ANS Número Lógico do terminal.
Identificação do terminal do estabelecimento comercial utilizado na transação original.
Deve ser enviado para transações de cancelamento.
OBS: Somente incluir este campo se for uma transação de cancelamento.
82 08 - Elo QR Code Version Até 03 N Identificação da versão do QR Code Elo utilizado na transação.Para este documento em questão, utilizar o valor igual a “3”.
63 CRC16 04 ANS Checksum calculado dos dados QR Code(Vide Documentação “EMV-QRCode” e “ISO13239”).

Ex.:

DADOS:

00020101021226760014br.com.padraoq0116123456789012000102082009130003040001041 40306501400093927580010BR.COM.ELO010483840215234567890120001030820091300040 1P520400005303986540525.005802BR5905CIELO6014SANTOANDRE SP61080600000062200516040310245460330981740014br.com.padraoq01120203211002180 20400020302010402010502030606069646500082560010BR.COM.ELO011003021002180203 C0003020104060696460801363044847

QRCODE:

QRCodePOS

QR CODETM LAYOUT GERADO PELO POS (MODELO NOVO BR CODE)

Os dados usados para gerar o QRCode para leitura na carteira digital deve seguir como base aespecificação “EMVCo-Merchant-Presented-QR-Specification-v1” utilizando os dados abaixo:

Tipo Descrição
N Numérico – Valores representados por dígitos de “0” a “9”
ANS Alfanumerico especial – Valores alfanuméricos especiais contem (96) caracteres no total, incluindo números e pontuação.
ID Nome do Campo Tam Tipo Descrição
00 Payload Format Indicator 02 N Versão dos dados do QR Code utilizada na geração do código. Fixo “01”.
01 Point of Initiation Method 02 N Identificador do método QR Code gerado: Fixo “12” – QR Code Dinâmico.
26 Merchant Account Information Até 76 ANS Informações do Estabelecimento
26 00 - Globally Unique Identifier 14 ANS Identificador global: usar fixo “br.com.padraoq”.
26 01 - Merchant Account Information 16 N Numero do Estabelecimento Comercial.
26 02 - Logic Number 08 N Número Logico do terminal.
26 03 - ID Credenciador 04 N Identificação do credenciador. Fixo “0001”.
26 04 - CPF/CNPJ Até 14 N Número CPF/CNPJ do merchant
52 Merchant Category Code 04 N Ramo de atividade do Estabelecimento (MCC).
53 Transaction Currency 03 N Código de origem da Moeda.
54 Transaction Amount Até 13 ANS Valor da transação.
Ex: “123.99”
58 Country Code 02 ANS Código do país: Fixo “BR”.
59 Merchant Name Até 25 ANS Nome Fantasia do Estabelecimento.
60 Merchant City Até 15 ANS Cidade do Estabelecimento.
62 Additional Data Field Até 29 ANS Campo de dados Adicionais
62 05- Reference Label Até 25 ANS Identificação do QR Code.
Código único da transação, extraído BIT 31.
81 Transaction informations Até 99 ANS Informações da transação
81 00 - Globally Unique Identifier 14 ANS Identificador global: usar fixo “br.com.padraoq”.
81 01 - Transaction Date 12 N Data e hora da transação(DDMMAAHHmmss).
81 02 - Main Product 04 N Código do produto Matriz.
81 03 - Payment Installments 02 N Número de parcelas.
81 04 - Transaction Type 02 N Tipo da transação:
“01” – Venda;
“02” – Cancelamento.
81 05 - Fonte de Dados do Pagamento 02 N Fixo: “03” – QR Code
81 06 - NSU Host Original Até 12 N NSU da transação original
81 50 - Campo livre/RUF Até 19 ANS Campo de utilização Livre (RUF)
63 CRC16 04 ANS Checksum calculado dos dados QR Code(Vide Documentação “EMV-QRCode” e “ISO13239”).

Ex:

DADOS:

00020101021226760014br.com.padraoq0116001000024447000102086200009203040001041 4010270580001915204030053039865406123.995802BR5909POSTO_ABC6010Barueri_SP6220 0516100023071641629281720014br.com.padraoq011223012017164302040004030202040201 05020306020050020063040CE6

QR CODE:

QRCodePOS

Mapa TAGs geradas em uma transação via QRCode:

00020101021226760014br.com.padraoq0116001000024447000102086200009203040001041 4010270580001915204030053039865406123.995802BR5909POSTO_ABC6010Barueri_SP6220 0516100023071641629281720014br.com.padraoq011223012017164302040004030202040201 05020306020050020063040CE6

ID Nome do Campo Tam Tipo Descrição Parse
00 Payload Format Indicator 02 N Versão dos dados do QR Code utilizada na geração do código. Fixo “01”. 01
01 Point of Initiation Method 02 N Identificador do método QR Code gerado: Fixo “12” – QR Code Dinâmico. 12
26 Merchant Account Information 76 ANS Informações do Estabelecimento    
26 00 - Globally Unique Identifier 14 ANS Identificador global: usar fixo “br.com.padraoq”. br.com.padraoq
26 01 - MerchantAccount Information 16 N Numero do EstabelecimentoComercial. 0010000244470001
26 02 - Logic Number 08 N Número Logico do terminal. 62000092
26 03 - ID Credenciador 04 N Identificação do credenciador. Fixo “0001”. 0001
26 04 - CPF/CNPJ Até 14 N Número CPF/CNPJ do merchant 01027058000191
52 Merchant Category Code 04 N Ramo de atividade do Estabelecimento (MCC). 0300
53 Transaction Currency 03 N Código de origem da Moeda. 986
54 Transaction Amount Até 13 ANS Valor da transação.Ex: “123.99” 123.99
58 Country Code 02 ANS Código do país: Fixo “BR”. BR
59 Merchant Name Até 25 ANS Nome Fantasia do Estabelecimento. POSTO_ABC
60 Merchant City Até 15 ANS Cidade do Estabelecimento. Barueri_SP  
62 Additional Data Field Até 29 ANS Campo de dados Adicionais  
62 05 - Reference Label Até 25 ANS Identificação do QR Code. Código único da transação,extraído BIT 31. 1000230716416292  
81 Transaction informations Até 99(72 nesse exemplo ANS Informações da transação  
81 00 - Globally Unique Identifier 14 ANS Identificador global: usar fixo “br.com.padraoq”. br.com.padraoq
81 01 - Transaction Date 12 N Data e hora da transação(DDMMAAHHmmss). 230120171643
81 02 - Main Product 04 N Código do produto Matriz. 0004
81 03 - Payment Installments 02 N Número de parcelas. 02
81 04 - Transaction Type 02 N Tipo da transação: “01” – Venda;
“02” – Cancelamento.
01
81 05 - Fonte de Dados do Pagamento 02 N Fixo:“03” – QR Code 03
81 06 - NSU Host Original Até 12 N NSU da transação original 00
81 50 - Campo livre/RUF Até 19 ANS Campo de utilização Livre (RUF) 00
82 RUF Até 99 ANS RUF  
82 01 - RUF Até 95 ANS RUF  
63 CRC16 04 ANS Checksum calculado dos dados QR Code (Vide Documentação “EMV-QRCode” e “ISO13239”). 8F04

QR CODETM LAYOUT GERADO PELO POS (MODELO ANTIGO)

Os dados usados para gerar o QRCode para leitura na carteira digital deve seguir como base a especificação “EMVCo-Merchant-Presented-QR-Specification-v1” utilizando os dados abaixo:

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

QRCodePOS

ID Nome do Campo Tam Tipo Descrição Parse
00 Payload Format Indicator 02 N Versão do QR Code valor fixo “01” 01
01 Point of Initiation Method 02 N Identificador do método do QR Code:Fixo “12” – QR Code dinâmico 12
26 Merchant Account Information Up to 56 ANS Informações do estabelecimento  
26 00 - Globally Unique Identifier Up to 32 ANS Identificador Global: valor fixo “Cielo” Cielo
26 01 - Merchant Account Information 16 N Número do estabelecimento 0010000244472010
26 02 - Logic Number 08 N Número do terminal 20100001
52 Merchant Category Code 04 N MCC 5912
53 Transaction Currency 03 N Código da moeda 986
54 Transaction Amount 12 N Valor da transação 000000001000
58 Country Code 02 ANS Código do País. Fixo “BR” 76
59 Merchant Name Up to 25 ANS Nome do estabelecimento CIA BRAS MEIO PAGAMENTO
60 Merchant City Up to 15 ANS Cidade do estabelecimento SAO PAULO
80 Transaction informations Up to 120 ANS Informações da transação  
80 00 - Globally Unique Identifier Up to 80 ANS Url de identificação global:fixo: “https://www.cielo.com.br/qr_code” “https://www.cieloid.com.br/qr_code”
80 01 - Transaction ID 16 N Código único da transação 12096761
28919232
80 02 - Transaction Date 12 N Data da transação (DDMMAAHHmmss) 100418094512
80 03 - Main Product 04 N Produto Principal 1000
80 04 - Sub Product 04 N Produto secundário 0001
80 05 - Payment Installments 02 N Número de parcelas 01
80 06 - Transaction Type 02 N Tipo da transação:
“01” – Pagamento
“02” – Cancelamento
01
63 CRC 04 ANS checksum da string do QR Code A177

CALLBACK API PARA DESFAZIMENTO (uso opcional)

Existe uma API de call-back para informar a carteira sobre um defazimento.

O parceiro precisa desenvolver uma API para receber as informações de desfazimento seguindo o format abaixo e fornecendo a url para envio das informações:

Body:


{
"transactionDate": "string",
"terminalLogicalNumber": "string",
"authorizationCode": “string",
"nsu": "string",
“merchantId“: 0,
“amount“: 0,
“originalTransactionType”: 0,
“statusCode“: 0
}

Propriedade Descrição Tipo Tamanho Obrigatório
transactionDate Data da transação (extraída do QRCode) Texto 36 Sim
terminalLogicalNumber Número lógico do POS Texto 40 Sim
authorizationCode Código de autorização da transação Texto alfanumérico 6 Sim
nsu Número Sequencial Único Texto 50 Sim
merchantId Identificador da loja na Cielo (extraído do QRCode) Número 36 Sim
amount Valor da transação Número 15 Sim
originalTransactionType Transação de origem. Comunica o desfazimento de uma transação do /payments. Número 1 Sim
statusCode 1 - Pagamento / 2 - Cancelamento / 3 - Desfazimento - Quando desfazimento - statusCode = 3 Número 1 Sim

API request (exemplo):


{
"transactionDate": "2018-10-29T14:35:12.000+0000",
"terminalLogicalNumber": "78257509",
"authorizationCode": "019387",
"nsu": "572061",
“merchantId“: 1000000000,
“amount“: 82.90,
“originalTransactionType”: 1,
“statusCode“: 3
}