Realfy Realfy Docs Painel

Produtos

Enviar PIX

Transferências PIX pra qualquer chave (CPF, CNPJ, e-mail, telefone, EVP). Validação DICT automática, saldo é debitado da sua conta, e webhook avisa quando entrega ou falha.

Fluxo completo

  1. POST /v1/withdrawals com valor + chave PIX
  2. Sistema valida saldo, limites e taxa
  3. Saldo é reservado imediatamente (status pending)
  4. Worker manda pro provedor BaaS (status processing)
  5. BACEN processa e responde (geralmente em segundos)
  6. Webhook withdrawal.completed OU withdrawal.failed chega no seu sistema
  7. Se falhou: saldo é estornado automaticamente

Saldo necessário

Antes de chamar a API, seu saldo BRL precisa ser maior que amount + feeAmount. Veja GET /v1/balances.

Enviar uma transferência

curl -X POST https://api.realfy.io/v1/withdrawals \
  -H "X-Api-Key: realfy_live_..." \
  -H "X-Api-Secret: ..." \
  -H "Idempotency-Key: payout-9182" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 250.00,
    "pixKey": "joao@email.com",
    "pixKeyType": "email",
    "reference": "payout-9182",
    "metadata": { "description": "Pagamento referente a serviço #4521" }
  }'

Body

CampoTipoObrigatórioDescrição
amountnumberSimValor em reais (decimal, 2 casas)
pixKeystringSimChave PIX do destinatário
pixKeyTypeenumSimcpf · cnpj · email · phone · evp
referencestringSimIdentificador único da operação
customerobjectNãoDados do destinatário (opcional — DICT resolve)
metadataobjectNãoCampos livres + description opcional (até 140 chars)

Formato das chaves PIX

TipoFormato aceitoExemplo
cpf11 dígitos (com ou sem formatação)12345678900
cnpj14 dígitos12345678000100
emailRFC 5322joao@email.com
phoneE.164 (preferível) ou DDD+número+5562999999999
evpUUID v4abc-def-...-uuid

Normalização automática

Você pode mandar com formato (ex: (62) 99999-9999) — o backend normaliza pro padrão do DICT antes de chamar o provedor. CPF, telefone, email — tudo limpo automaticamente.

Response (201)

{
  "success": true,
  "data": {
    "id": "wth_8255",
    "amount": 250.00,
    "feeAmount": 3.00,
    "totalAmount": 253.00,
    "type": "withdrawal",
    "method": "pix",
    "currency": "brl",
    "status": "processing",
    "pixKey": "joao@email.com",
    "reference": "payout-9182",
    "createdAt": "2026-05-26T14:00:00Z"
  }
}

Status possíveis

StatusSignificadoPróximo passo
pendingReservado, na fila pro provedorAguardar
processingProvedor BaaS processando junto ao BACENAguardar webhook
completedPIX entregue no destinatárioOperação concluída
failedFalha do BACEN/provedorSaldo estornado automaticamente

Comprovante PDF

GET https://api.realfy.io/v1/withdrawals/{id}/receipt

Retorna PDF com chave PIX, valor, end-to-end ID, ISPB do banco do destinatário, data, etc. Útil pra anexar em e-mail de confirmação pro cliente final.

Cuidado: PIX é instantâneo e irreversível

Diferente de cartão, não tem chargeback. Uma vez completed, só dá pra recuperar via estorno solicitado e aceito pelo destinatário. Valide bem antes de enviar.

IP allowlist (recomendado)

No painel da sua API key, configure os IPs autorizados a fazer cash-out. Se a request vier de fora da lista, retorna 403 IP_NOT_ALLOWED. Veja Autenticação.

Erros comuns

CodeHTTPO que aconteceu
INSUFFICIENT_BALANCE400Saldo não cobre valor + taxa
WITHDRAWAL_LIMIT_EXCEEDED400Acima do limite por transação
PIX_KEY_NOT_FOUND422Chave não existe no DICT do BACEN
IP_NOT_ALLOWED403IP fora da allowlist configurada
DUPLICATE_REFERENCE409Reference já usada
IDEMPOTENCY_KEY_CONFLICT409Idempotency-Key reusada com body diferente

Boas práticas

  • Sempre use Idempotency-Key — em retry, evita PIX duplicado
  • Configure IP allowlist — bloqueia cash-out se sua API key vazar
  • Use webhooks, não polling — confirmação chega em segundos
  • Logue o requestId de cada response pra debug com suporte
  • Trate failed — não é o fim do mundo, saldo volta. Apenas notifique o usuário e dê opção de retry