Pré-requisitos
Antes de iniciar uma transferência:
- A conta de origem deve estar cadastrada no CRM
- O remetente deve ter saldo suficiente (valor + tarifa)
- A operação deve ocorrer em dia útil, entre 06:30 e 17:00 (Brasília)
Etapa 1: Iniciar a transferência
A primeira etapa valida os dados, calcula a tarifa e cria uma intenção de transferência válida por 24 horas. Nenhum fundo é movimentado nesta etapa. Endpoint:
POST /v1/transfers/initiate
O que acontece
- O cliente envia os detalhes da transferência (destinatário, valor)
- O sistema valida as regras de negócio: horário de funcionamento, limites e duplicidade
- O serviço de taxas (
plugin-fees) calcula o custo da transação - Uma entidade
PaymentInitiationé criada com expiração de 24 horas - O sistema retorna o
initiationIdjunto com os valores calculados
Headers
| Header | Obrigatório | Descrição |
|---|---|---|
X-Organization-Id | Sim | UUID da organização |
Authorization | Condicional | Bearer token (se autenticação habilitada) |
X-Idempotency-Key | Não | Chave de idempotência (UUID v4 recomendado) |
Request body
Campos do recipient
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
ispb | String | Sim | Código ISPB do banco (8 dígitos) |
branch | String | Sim | Agência (4 dígitos) |
account | String | Sim | Número da conta (1-20 dígitos) |
accountType | Enum | Sim | CHECKING, SAVINGS, SALARY, PAYMENT |
taxId | String | Sim | CPF (11 dígitos) ou CNPJ (14 dígitos) |
name | String | Sim | Nome do titular (1-200 caracteres) |
Response (200 OK)
Etapa 2: Confirmar a transferência
Após o usuário revisar a tarifa, confirme a transferência para iniciar o processamento. Endpoint:
POST /v1/transfers/process
O que acontece
- O sistema valida o
initiationIde verifica se não expirou - Valida o saldo do remetente e provisiona os fundos (valor + taxa) no Midaz
- A mensagem
STR0008é enviada ao sistema da JD Consultores com assinatura digital - O status da transferência muda para
PROCESSING - Em segundo plano, o worker aguarda a confirmação (
STR0008R2) da JD
Request body
Response (200 OK)
Timeline
O fluxo típico de uma transferência TED OUT:
Tratamento de erros
4xx da JD (rejeição imediata)
4xx da JD (rejeição imediata)
CancelTransactionimediato no Midaz (libera provisão)- Status atualizado para
REJECTED - Webhook
transfer.failedenviado - Reembolso automático (valor + taxa)
5xx/Timeout (erro transitório)
5xx/Timeout (erro transitório)
- Retry automático: 5x (0s, 5s, 25s, 60s, 120s)
- Consulta
ConsultaNumCtrlIFpara verificar status - Se ainda incerto após retries: reembolso fail-safe
Chargeback (STR0010R2)
Chargeback (STR0010R2)
- Mensagem de devolução recebida do banco destinatário
CancelTransactionouRevertTransactionno Midaz- Status:
REJECTED - Reembolso automático com código de devolução
Códigos de erro comuns
| Código | HTTP | Descrição |
|---|---|---|
BTF-0001 | 400 | Dados inválidos (ISPB, valor negativo) |
BTF-0010 | 403 | Fora do horário de operação do BACEN |
BTF-0011 | 422 | Limite diário/mensal excedido |
BTF-0012 | 409 | Transferência duplicada detectada |
BTF-2001 | 422 | Saldo insuficiente |
BTF-1000 | 503 | Serviço JD SPB indisponível |
Exemplos de resposta de erro
Fora do horário de funcionamento (403):Consultar status
Acompanhe o progresso da transferência: Endpoint:
GET /v1/transfers/{transferId}
Response
Cancelar transferência
Transferências podem ser canceladas enquanto estiverem no status
CREATED ou PENDING.
Endpoint: POST /v1/transfers/{transferId}/cancel
Response (200 OK)
Códigos ISPB comuns
| Banco | ISPB |
|---|---|
| Banco do Brasil | 00000000 |
| Bradesco | 60746948 |
| Itaú | 60701190 |
| Santander | 90400888 |
| Caixa Econômica | 00360305 |
| Nubank | 18236120 |
| Inter | 00416968 |

