Como funciona
O recebimento de uma TED é um processo automático detectado pelo worker de polling a cada 30 segundos.
Fluxo de detecção
- A cada 30 segundos, o worker consulta o serviço
RecebeMensagemda JD - Ao encontrar uma nova mensagem
STR0008R2que não corresponde a uma transferência enviada pelo sistema, ela é identificada como TED de entrada - A mensagem XML bruta é imediatamente salva na tabela
JDIncomingMessage(garantia at-most-once)
Processamento
- Cria uma nova entidade
Transfercom tipoTED_INe statusRECEIVED - Valida se a conta do destinatário existe no CRM
- Se o destinatário for válido, calcula a taxa de cashin (se habilitada)
- Credita a conta no Midaz através de
CreateCashinTransaction - Atualiza o status para
COMPLETED - Envia notificação de webhook
Timeline
Estados do TED IN
| Estado | Descrição |
|---|---|
RECEIVED | Transferência detectada, aguardando processamento |
PROCESSING | Validando destinatário e preparando crédito |
COMPLETED | Valor creditado na conta do destinatário |
REJECTED | Destinatário não encontrado ou conta inválida |
Consultar transferências recebidas
Endpoint:
GET /v1/transfers?type=TED_IN
Query parameters
| Parâmetro | Tipo | Descrição |
|---|---|---|
type | String | Filtrar por tipo (TED_IN) |
status | String | Filtrar por status (COMPLETED, REJECTED) |
startDate | ISO8601 | Data inicial do período |
endDate | ISO8601 | Data final do período |
page | Integer | Número da página (padrão: 1) |
pageSize | Integer | Itens por página (padrão: 20, máx: 100) |
Response
Detalhes de uma transferência
Endpoint:
GET /v1/transfers/{transferId}
Response
Tarifa de recebimento (cashin)
O plugin pode cobrar tarifa sobre transferências recebidas. A configuração é feita por organização. Quando habilitada, a tarifa é calculada via plugin-fees e deduzida do valor creditado:
Exemplo com tarifa
Validação do destinatário
O plugin valida o destinatário usando o documento (CPF/CNPJ) informado na mensagem STR0008R2:
- Consulta o CRM pelo documento
- Se encontrado, identifica a conta correspondente
- Se não encontrado, inicia devolução (chargeback)
Transferência rejeitada
Quando o destinatário não é encontrado, uma devolução é automaticamente enviada ao banco de origem:Tratamento de erros
Webhook de recebimento
Configure um webhook para ser notificado em tempo real sobre transferências recebidas.
Evento: transfer.incoming
Reconciliação
Para reconciliação contábil, utilize os seguintes campos:
| Campo | Uso |
|---|---|
controlNumber | Número de controle do JD SPB (único por transferência) |
transferId | Identificador interno da Lerian |
createdAt | Timestamp de detecção |
completedAt | Timestamp de crédito |
Garantias de processamento
O plugin implementa garantias para evitar duplicatas e perdas:
| Garantia | Implementação |
|---|---|
| At-most-once | Mensagens persistidas ANTES do processamento |
| Idempotência | Mesmo sequenceNumber não é processado duas vezes |
| Retry | Falhas transitórias retentadas com backoff exponencial |
| DLQ | Falhas permanentes vão para dead-letter queue |
CRÍTICO: A mensagem é persistida na tabela
JDIncomingMessage ANTES do processamento, garantindo que nenhuma transferência seja perdida em caso de falha.
