Skip to main content
O TED Lerian é a interface sobre o Lerian SPB, o conector de mensageria própria da Lerian com o STR. A sua instituição usa a API dele para enviar TEDs, fazer transferências internas, acompanhar TEDs recebidas e operar devoluções, filas e política, tudo sobre o ledger Midaz da instituição. Em uma TED, o dinheiro sai da conta apenas quando o STR liquida. Cada operação com efeito é idempotente, então você pode reenviar após um timeout.

Conceitos


Integre em quatro passos


1

Configure a instituição

Faça isso com o papel editor. Defina os limites de uso com PUT /v1/policy/limits; eles são obrigatórios antes da primeira TED. Para TEDs recebidas, vincule cada ISPB com PUT /v1/policy/ispb-bindings à organização e ao ledger onde esta instalação credita as TEDs recebidas. Qualquer outra organização ou ledger recebe 422 TED-0002. Com as integrações de ledger e CRM ligadas, um vínculo também precisa da organização no Midaz, da conta @external/BRL no ledger e do titular da sua instituição (o CNPJ da organização) com uma conta no CRM. Um item ausente recebe 422 TED-0002, e a mensagem o indica. Carregue o calendário de feriados nacionais de cada ano com PUT /v1/policy/holidays, antes de o ano começar. Para cobrar tarifas, crie pacotes de tarifas do Midaz que selecionem pelos rótulos de lançamento do TED Lerian. Opcionalmente, defina um cut-off com PUT /v1/policy/window. Sem cut-off, a janela segue a grade oficial do STR.
2

Envie a TED

Envie X-Account-Id (a conta debitada) e X-Idempotency (uma chave nova para cada pagamento). Para mostrar uma estimativa de tarifa antes de confirmar, chame POST /v1/transfers/fee-quotes com os mesmos campos.
O envio retorna 201 com o status que a TED atingiu nesta chamada, normalmente SUBMITTED.
3

Acompanhe até a liquidação

Consulte GET /v1/transfers/{transferId} até status chegar a SETTLED, REJECTED ou CANCELLED, ou faça a subscription dos eventos transfer.*. Em REJECTED, rejection.source e rejection.code informam quem recusou e por quê.
4

Trate as TEDs recebidas

Liste-as com GET /v1/incoming-transfers. O crédito ao cliente é automático. Apenas status=MANUAL_REVIEW exige uma decisão do operador (POST /v1/incoming-transfers/{incomingTransferId}/resolve-review), e POST /v1/incoming-transfers/{incomingTransferId}/return devolve uma TED que já foi creditada.

Status


Uma TED enviada passa por estes status. Os status finais são SETTLED, REJECTED e CANCELLED. Uma TED recebida vai de RECEIVED (decisão em andamento) para CREDITED (creditada ao cliente), RECORDED (conta própria da instituição, final), RETURN_REQUESTED (o TED Lerian não pode creditá-la) ou MANUAL_REVIEW (aguarda um operador; veja reviewReason). Ela vai de RETURN_REQUESTED para RETURNED quando é devolvida. O reviewReason aparece só enquanto o status é MANUAL_REVIEW; a timeline guarda os motivos anteriores. Um estorno de operador que falha leva a TED a MANUAL_REVIEW. LEDGER_REVERT_REFUSED significa que o ledger recusou e o crédito continua. LEDGER_REVERT_INDETERMINATE significa que o resultado é desconhecido e o crédito pode ter sido estornado. slaDeadlineAt é o prazo regulatório de 60 minutos a partir da liquidação interbancária.

Autenticação e permissões


Cada chamada, exceto os health checks públicos, envia Authorization: Bearer <token> emitido pelo Access Manager. Os papéis padrão são editor (todas as operações), operator (todas as operações, exceto as escritas de política e de vínculos de ISPB) e viewer (leituras, exceto as leituras de conciliação). Sem a permissão, ou com uma licença do produto que não é válida para a organização: 403 TED-0071. Token ausente ou inválido: 401 TED-0070.

Convenções


  • Tenant. Nunca do path, da query ou do body.
  • Valores. Strings decimais em BRL com duas casas decimais ("1500.00"), nunca números JSON.
  • Datas. RFC 3339 em UTC (2026-10-22T13:05:12Z); dias como YYYY-MM-DD. A janela de funcionamento usa o fuso horário da instituição (America/Sao_Paulo).
  • Idempotência. Cada operação com efeito exige X-Idempotency (de 1 a 128 caracteres ASCII; use um UUID). A mesma chave com o mesmo body retorna a resposta original com X-Idempotency-Replayed: true e nenhum efeito novo. Um body diferente retorna 422 TED-0012. Se a primeira requisição ainda estiver em processamento, você recebe 409 TED-0013 (tente de novo após Retry-After). O replay dura X-TTL segundos (padrão 300). No POST /v1/transfers, a mesma chave com a mesma requisição também repete a resposta depois do X-TTL: a resposta é 201 com X-Idempotency-Replayed: true e a transferência no estado atual. Uma chave nova em uma devolução ou em uma decisão de revisão já aplicada retorna 409 TED-0060.
  • Proteção contra duplicidade. POST /v1/transfers pode recusar com 409 TED-0014 uma requisição materialmente idêntica com uma chave nova, enviada pouco depois de outra. Consulte a transferência existente. Para repetir uma requisição, envie a mesma chave.
  • Paginação. As listas retornam items, limit, next_cursor e prev_cursor. Peça até limit=100 (padrão 20) e siga next_cursor até ele ser null. O cursor é opaco.
  • Correlação. Envie X-Request-Id (UUID) ou receba um gerado. Ele volta em cada resposta e identifica a chamada para o suporte.
  • Eventos. Cada transição é publicada como um CloudEvent com ce-type studio.lerian.br-ted.<resource>.<event>: transfer.*, incoming_transfer.* e incoming_return.*. A entrega é pelo menos uma vez; deduplique por ce-id.
  • Ambientes. A URL base é por instalação (BYOC ou Lerian Cloud), e a Lerian a fornece.

Erros


Cada erro é application/problem+json (RFC 9457) com um code estável, e o type termina com esse código. Trate os erros pelo code. errors lista os campos inválidos de um 422. Um JSON malformado recebe 400 TED-0001, e um campo ou parâmetro fora do schema declarado recebe 422 TED-0002. Um 503 significa que a requisição não teve efeito: tente de novo mais tarde com o mesmo X-Idempotency. Estas são as exceções:
  • TED-1000: o ledger não confirmou o resultado, e a operação já pode estar no ledger. Leia o status do recurso antes de agir de novo.
  • TED-0080 em um envio: a transferência já pode existir. Procure-a com GET /v1/transfers antes de enviá-la de novo.
  • TED-1010 em um cancelamento: a resposta do conector do STR é desconhecida, e a solicitação de cancelamento continua registrada. Tente de novo com o mesmo X-Idempotency e o mesmo reason.
  • TED-1010 em uma devolução de TED recebida: a resposta do STR é desconhecida. Qualquer crédito já foi estornado. A devolução continua solicitada até a conciliação ou a revisão manual. Leia o status da TED antes de agir de novo.
  • TED-1012 em um cancelamento: o rail da sua instituição não cancela um lançamento pendente. Uma nova tentativa recebe a mesma resposta, e a TED segue o resultado do STR.
  • TED-0022 para uma data cujo ano não tem calendário de feriados: carregue o ano com PUT /v1/policy/holidays. Só tentar de novo não resolve.
Uma chamada limitada pelo rate limit retorna 429 com Retry-After: trate-a pelo status e aguarde esse tempo antes de tentar de novo. Em um envio, TED-0031, TED-1001, TED-1010, TED-1011 e TED-1013 nunca chegam como resposta de erro. Eles chegam em rejection.code de uma transferência com status REJECTED, na resposta 201 ou em uma consulta posterior. A lista de erros traz cada código com a causa e a correção.