Skip to main content
Para pagar uma cobrança Pix emitida por terceiros — seja um QR Code estático ou dinâmico — o fluxo tem dois passos: primeiro você decodifica o payload com o endpoint de inicialização para obter os dados da cobrança e o endToEndId, depois executa o pagamento com esse identificador. Esse fluxo serve tanto para QR Codes Estáticos quanto para QR Codes Dinâmicos (imediatos e com vencimento). O que muda entre eles é o initiationType que você usa no segundo passo — e a API já te diz qual usar na resposta do primeiro passo.

Passo a passo

1

Inicialize o pagamento com o payload do QR Code

Envie o payload (o conteúdo textual do QR Code, também chamado de “copia e cola”) para o endpoint de inicialização. A API decodifica o payload, valida a cobrança e retorna os dados necessários para executar o pagamento.
Guarde os valores endToEndId, transactionId e initiationType da resposta — você vai precisar dos três no próximo passo. O initiationType já está no formato correto para usar diretamente na transferência.
2

Confirme os dados da cobrança

Antes de executar o pagamento, valide os dados retornados:
  • status deve ser ACTIVE. Se for CONCLUDED, o QR Code já foi pago. Se for REMOVED_BY_THE_RECEIVER ou REMOVED_BY_PSP, ele foi cancelado.
  • amount é o valor da cobrança. Se allowChangeAmount for true, o pagador pode alterar o valor.
  • beneficiary — confirme que o recebedor é quem você espera.
  • expirationTime — para QR Codes Dinâmicos, verifique se o código ainda está dentro do prazo.
3

Execute a transferência

Com os dados da inicialização em mãos, execute o pagamento. Use o initiationType exatamente como veio na resposta anterior.
O IdempotencyKey no header é obrigatório e deve ser único por requisição. O endToEndId também é de uso único — ele expira após ser utilizado ou após um curto período.

Mapeamento do initiationType

O campo type retornado pela inicialização indica o tipo do QR Code. O campo initiationType já traz o valor pronto para usar no transfer — mas é importante entender o mapeamento: Use sempre o initiationType que veio na resposta da inicialização — não derive o valor pelo type.

Referência da API

Inicializar pagamento por QR Code

POST /pix/qrcode/payment-initialization

Executar transferência

POST /transfers