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
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.Confirme os dados da cobrança
Antes de executar o pagamento, valide os dados retornados:
statusdeve serACTIVE. Se forCONCLUDED, o QR Code já foi pago. Se forREMOVED_BY_THE_RECEIVERouREMOVED_BY_PSP, ele foi cancelado.amounté o valor da cobrança. SeallowChangeAmountfortrue, 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.
Mapeamento do initiationType
O campotype 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:
type na inicialização | initiationType no transfer |
|---|---|
QR_CODE_STATIC | QR_CODE_STATIC |
DYNAMIC_IMMEDIATE_PAYMENT | QR_CODE_DYNAMIC |
DYNAMIC_PAYMENT_WITH_EXPIRATION | QR_CODE_DYNAMIC |
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-initializationExecutar transferência
POST /transfers
