moneyflydocs
PIX

Depósitos (Cash-in)

Crie cobranças PIX e gere QR Code pro seu cliente pagar.

Depósitos PIX

Cria uma cobrança PIX dinâmica (QR Code) que seu cliente escaneia e paga no app do banco dele.

POST /v1/pix/qrcode

Headers

HeaderObrigatórioDescrição
client-idsimSua chave pública
client-secretsimSua chave secreta
Idempotency-KeyrecomendadoChave única por requisição — protege contra retry duplicado. Veja idempotência
Content-Typesimapplication/json

Body

{
  "amount": 9990,
  "payer": {
    "name": "João Silva",
    "document": "12345678909",
    "email": "joao@exemplo.com",
    "phone": "11999998888"
  },
  "external_id": "pedido-12345",
  "webhook_url": "https://seusite.com/webhooks/moneyfly",
  "utm": "instagram-ads",
  "expires_in": 3600
}
CampoTipoObrigatórioDescrição
amountintegersimValor em CENTAVOS. Ex: 9990 = R$ 99,90. Mínimo 1 centavo, máximo R$ 1 bilhão
payerobjectnãoDados do pagador. Todos os campos internos também são opcionais. Use o que tiver no seu fluxo de checkout
payer.namestringnãoNome completo do pagador (2–200 chars)
payer.documentstringnãoCPF (11 dígitos) ou CNPJ (14 dígitos). Aceita formatado ou só números
payer.emailstringnãoEmail válido, max 254 chars
payer.phonestringnãoDDD + número, 10 ou 11 dígitos
external_idstringnãoSeu ID interno. Aparece nos webhooks pra facilitar conciliação
webhook_urlstringnãoURL específica pra notificar esta transação (override do webhook global)
utmstringnãoTag de rastreamento (max 200 chars)
expires_inintegernãoSegundos até expirar. Padrão 3600 (1h). Mínimo 60, máximo 86400 (24h)

Resposta (HTTP 201)

{
  "internal_id": "cl_abc123xyz...",
  "external_id": "pedido-12345",
  "status": "pending",
  "amount": 9990,
  "fee_amount": 198,
  "net_amount": 9792,
  "qrcode": "00020126580014br.gov.bcb.pix...",
  "qr_image_url": "/v1/pix/qrcode/cl_abc123/image",
  "expires_at": "2026-04-24T19:00:00Z",
  "created_at": "2026-04-24T18:00:00Z"
}
CampoDescrição
internal_idID gerado pelo Moneyfly. Guarde pra consultar depois
external_idO mesmo que você passou no body (ou null)
statusInicialmente sempre "pending"
amountValor bruto em centavos
fee_amountTaxa Moneyfly em centavos
net_amountLíquido (= amount - fee_amount) que vai pro seu saldo quando for pago
qrcodeString PIX copia-e-cola (EMV padrão BACEN)
qr_image_urlURL opcional que renderiza a imagem PNG do QR Code
expires_atQuando o QR deixa de aceitar pagamento

Fluxo completo

curl -X POST https://api.moneyflybr.com/v1/pix/qrcode \
  -H "client-id: mf_pk_live_AbCd..." \
  -H "client-secret: mf_sk_live_XyZ..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 9990,
    "external_id": "pedido-12345"
  }'

1. Você mostra o QR

No seu app/site, renderiza a string qrcode como QR Code visual (qualquer lib JS faz — qrcode.react, qrcode.js, etc.) OU só mostra ela como texto "copia-e-cola".

2. Cliente paga no banco

O cliente abre o app do banco dele, escaneia ou cola, confirma. O banco dele envia o PIX pro SPI.

3. Moneyfly notifica seu webhook

Em 1-2 segundos, o Moneyfly dispara um POST no webhook_url configurado:

{
  "event": "deposit.paid",
  "event_id": "evt_xxx",
  "internal_id": "cl_abc123xyz...",
  "external_id": "pedido-12345",
  "status": "paid",
  "amount_cents": 9990,
  "timestamp": "2026-04-24T18:01:32Z",
  "attempt": 1
}

Veja como validar e processar em webhooks.

Valores mínimos e máximos

  • Mínimo: R$ 0,01 (1 centavo)
  • Máximo: R$ 1.000.000.000 (1 bilhão)

Erros comuns

StatusCódigoQuando acontece
422Unprocessable EntitySchema inválido (valor zero, email ruim, CPF inválido)
401Unauthorizedclient-id ou secret inválido
403ForbiddenConta KYC pendente ou suspensa
409ConflictIdempotency-Key reutilizada pra operação diferente

Catálogo completo em códigos de erro.