Fire Bankingdocs
Endpoints

Transferência PIX

Visão Geral

O endpoint POST /dict/pix inicia uma transferência PIX para a chave informada. A chave pode ser CPF, CNPJ, e-mail, telefone ou EVP (chave aleatória).

Este endpoint segue a especificação do Banco Central para transferências PIX via DICT (Diretório de Identificadores de Contas Transacionais).

Endpoint

POST /dict/pix

Autenticação

stringobrigatorio

Token Bearer obtido via /oauth/token.

stringobrigatorio

Identificador único da requisição para suporte a idempotência. Deve ser um UUID v4.

Exemplo: 550e8400-e29b-41d4-a716-446655440000

Request Body

stringobrigatorio

Chave PIX de destino. Pode ser:

  • CPF: 11 dígitos numéricos
  • CNPJ: 14 dígitos numéricos
  • E-mail: endereco de e-mail válido
  • Telefone: +55DDDNUMERO (ex: +5511999999999)
  • EVP: Chave aleatória (UUID)
string

Documento do credor (CPF ou CNPJ). Obrigatório quando priority = HIGH para validação instantânea.

string

Prioridade do processamento:

  • HIGH: Processado instantaneamente (requer creditorDocument)
  • NORM: Processamento normal na fila
string

Mensagem que acompanha a transferência PIX. Sera exibida para o destinatário.

string

Fluxo de pagamento (opcional). Utilizado para categorização interna.

number

Tempo máximo em segundos que a operação pode permanecer na fila antes de ser cancelada.

  • Mínimo: 1 segundo
  • Máximo: 10800 segundos (3 horas)
  • Padrão: 600 segundos (10 minutos)
objectobrigatorio

Dados do pagamento.

array

Lista de códigos ISPB para os quais pagamentos não serão permitidos. Util para bloquear transferências para instituições específicas.

Exemplo: ["12345678", "87654321"]

Request

curl -X POST https://api.public.firebanking.com.br/dict/pix \
  -H "Authorization: Bearer <token>" \
  -H "x-idempotency-key: 550e8400-e29b-41d4-a716-446655440000" \
  -H "Content-Type: application/json" \
  -d '{
    "pixKey": "12345678909",
    "creditorDocument": "12345678909",
    "priority": "NORM",
    "description": "Pagamento referente a NF 12345",
    "expiration": 600,
    "payment": {
      "currency": "BRL",
      "amount": 100.50
    }
  }'
const response = await fetch('https://api.public.firebanking.com.br/dict/pix', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${token}`,
    'x-idempotency-key': crypto.randomUUID(),
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    pixKey: '12345678909',
    creditorDocument: '12345678909',
    priority: 'NORM',
    description: 'Pagamento referente a NF 12345',
    expiration: 600,
    payment: {
      currency: 'BRL',
      amount: 100.50,
    },
  }),
});

const transfer = await response.json();
import requests
import uuid

response = requests.post(
    'https://api.public.firebanking.com.br/dict/pix',
    headers={
        'Authorization': f'Bearer {token}',
        'x-idempotency-key': str(uuid.uuid4()),
        'Content-Type': 'application/json',
    },
    json={
        'pixKey': '12345678909',
        'creditorDocument': '12345678909',
        'priority': 'NORM',
        'description': 'Pagamento referente a NF 12345',
        'expiration': 600,
        'payment': {
            'currency': 'BRL',
            'amount': 100.50,
        },
    }
)

transfer = response.json()

Response

{
  "endToEndId": "550e8400-e29b-41d4-a716-446655440000",
  "eventDate": "2024-01-15T10:30:00.000Z",
  "id": 12345,
  "payment": {
    "amount": 100.50
  },
  "type": "PENDING"
}
{
  "statusCode": 400,
  "message": "Chave PIX inválida",
  "error": "Bad Request"
}
{
  "statusCode": 422,
  "message": "Chave PIX não encontrada no DICT",
  "error": "Unprocessable Entity"
}

Campos da Resposta

endToEndIdstring

Identificador único da transação PIX. O valor real do E2E será enviado no webhook quando a transação for liquidada.

eventDatestring

Data e hora do evento (ISO 8601).

idnumber

Identificador único da transação.

paymentobject

typestring

Tipo/status da transação:

  • PENDING: Transferência em processamento
  • COMPLETED: Transferência concluida
  • ERROR: Falha na transferência

Idempotência

O header x-idempotency-key garante que a mesma requisição não seja processada mais de uma vez:

// Mesma idempotency key = mesma resposta
const key = '550e8400-e29b-41d4-a716-446655440000';

// Primeira chamada - cria a transferência
const res1 = await createTransfer(key, { amount: 100 });
// { id: 123, type: 'PENDING' }

// Segunda chamada com mesma key - retorna a mesma transferência
const res2 = await createTransfer(key, { amount: 100 });
// { id: 123, type: 'PENDING' } (não cria nova)

O x-idempotency-key é obrigatório. Requisições sem este header serão rejeitadas.

Webhook de Transferência

Quando a transferência for processada, você receberá um webhook V2 do tipo TRANSFER:

{
  "type": "TRANSFER",
  "data": {
    "id": 12345,
    "txId": null,
    "pixKey": "12345678909",
    "status": "LIQUIDATED",
    "payment": {
      "amount": "100.50",
      "currency": "BRL"
    },
    "endToEndId": "E12345678901234567890123456789012",
    "creditDebitType": "DEBIT",
    "idempotencyKey": "550e8400-e29b-41d4-a716-446655440000",
    "creditorAccount": {
      "name": "João Silva",
      "document": "123.xxx.xxx-xx",
      "ispb": "18236120"
    },
    "remittanceInformation": "Pagamento referente a NF 12345"
  }
}

Webhooks TRANSFER

Veja a documentação completa do webhook TRANSFER

Tipos de Chave PIX

TipoFormatoExemplo
CPF11 dígitos12345678909
CNPJ14 dígitos12345678000195
E-mailemail válidojoao@email.com
Telefone+55DDDNUMERO+5511999999999
EVPUUID7d9f0335-8dcc-4054-9bf9-0dbd61d36906

Prioridade de Processamento

Bloqueio de ISPBs

Use ispbDeny para bloquear transferências para instituições específicas:

{
  "pixKey": "joao@email.com",
  "payment": { "amount": 100.00 },
  "ispbDeny": [
    "12345678",
    "87654321"
  ]
}

Se a chave PIX pertencer a uma instituição bloqueada, a transferência será rejeitada.

Erros Comuns

CódigoErroSolução
400Chave PIX inválidaVerifique o formato da chave
400Valor inválidoUse número com até 2 casas decimais
400Idempotency key faltandoInclua header x-idempotency-key
401Token inválidoRenove o token de acesso
422Chave não encontradaA chave não existe no DICT
422Saldo insuficienteVerifique o saldo disponível
422ISPB bloqueadoA instituição está na lista ispbDeny

Próximos Passos

Nesta página