Pular para o conteúdo principal
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 uma vez, 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, defina os vínculos de ISPB com organização com PUT /v1/policy/ispb-bindings. Opcionalmente, defina um cut-off com PUT /v1/policy/window.
2

Envie a TED

Envie X-Account-Id (a conta debitada) e X-Idempotency (uma chave nova para cada pagamento). Para mostrar a 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. 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 chave fica vinculada à transferência que criou.
  • Proteção contra duplicidade. POST /v1/transfers pode recusar com 409 TED-0014 uma requisição materialmente idêntica enviada pouco depois de outra, mesmo com uma chave diferente. Consulte a transferência existente.
  • 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. Trate os erros pelo code. errors lista os campos inválidos de um 422. Um 503 significa que a requisição não teve efeito: tente de novo mais tarde com o mesmo X-Idempotency. Há três 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.
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-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.