Pular para o conteúdo principal
POST
https://api.owem.com.br
/
v4
/
i
/
pix
/
in
/
dynamic-qrcode
Gerar QRCode Dinâmico
curl --request POST \
  --url https://api.owem.com.br/v4/i/pix/in/dynamic-qrcode \
  --header 'Authorization: <authorization>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "accountId": "<string>",
  "userId": "<string>",
  "amount": 123,
  "description": "<string>",
  "expirationSeconds": 123,
  "payerName": "<string>",
  "payerCpfCnpj": "<string>"
}
'
{
  "requestId": "a9d2f14e-31bc-4d52-9b98-04d92f19fa64",
  "success": true,
  "size": 1,
  "data": {
    "txId": "7c4f3a2d8e1248a6b9c71f45e2",
    "dueDate": "2025-12-25T18:35:22.317Z",
    "emv": "00020101021226840014br.gov.bcb.pix2562qrcode.owem.com.br/pix/32fe91a1-4e62-4d8a-9f1e-5c9d2f61a77b5204000053039865802BR5908JOAOSILVA6008SAOPAULO62070503***63041A2B"
  }
}

Finalidade

Cria uma cobrança PIX IN com payload EMV (copia-e-cola) e retorna o txId. O txId é o identificador único da cobrança e corresponde ao entryId no Ledger.
Bradesco e Caixa Econômica Federal exigem payerName e payerCpfCnpj. Sem esses campos, o QR não funcionará nesses bancos e pode reduzir até 10% a conversão em outros.

Autenticação

Authorization
string
obrigatório
Basic Auth obrigatório no formato: Basic {Base64(API_KEY:API_SECRET)}

Request Body

accountId
string
obrigatório
Conta emissora da cobrança (12 dígitos)
userId
string
obrigatório
Usuário solicitante vinculado à conta
amount
number
obrigatório
Valor em BRL (> 0, duas casas decimais)
description
string
Descrição livre da cobrança
expirationSeconds
number
padrão:"86400"
Expiração em segundos. Padrão: 86400 (24 horas)
payerName
string
Nome do pagador. Obrigatório se payerCpfCnpj for enviado. Recomendado: sempre enviar.
payerCpfCnpj
string
CPF/CNPJ do pagador. Obrigatório se payerName for enviado. Recomendado: sempre enviar.

Resposta

requestId
string
UUID para rastreio
success
boolean
Status da operação
size
number
Quantidade de itens retornados
data
object
{
  "requestId": "a9d2f14e-31bc-4d52-9b98-04d92f19fa64",
  "success": true,
  "size": 1,
  "data": {
    "txId": "7c4f3a2d8e1248a6b9c71f45e2",
    "dueDate": "2025-12-25T18:35:22.317Z",
    "emv": "00020101021226840014br.gov.bcb.pix2562qrcode.owem.com.br/pix/32fe91a1-4e62-4d8a-9f1e-5c9d2f61a77b5204000053039865802BR5908JOAOSILVA6008SAOPAULO62070503***63041A2B"
  }
}

Códigos de Status

HTTPDescrição
200Cobrança criada
400Parâmetro inválido (amount, payer*, etc.)
401Credenciais inválidas
403IP não allowlisted
404accountId ou userId não encontrado
409Conflito de idempotência
429Rate limit excedido
500Erro interno

Exemplos de Request

{
  "accountId": "123456789012",
  "userId": "usr_abc123def",
  "amount": 197.99,
  "description": "Pedido #12345",
  "expirationSeconds": 86400,
  "payerCpfCnpj": "12345678900",
  "payerName": "JOAO DA SILVA"
}
Confirmar pagamento: Use GET /v4/i/ledger/entry-id/:txId onde txId = entryId.
O txId retornado é o identificador para consultas no Ledger via entry-id.