Pular para o conteúdo principal

Primeiros passos com a API de TED

A API de TED permite enviar uma TED a partir de uma conta da sua empresa, devolver uma TED recebida, consultar uma TED e listar as TEDs enviadas e recebidas. O resultado de cada TED chega por webhook.

EndpointO que fazScope
POST /api/v1/tedEnvia uma TEDTED_POST
POST /api/v1/ted/{correlationID}/refundDevolve uma TED recebidaTED_REFUND_POST
GET /api/v1/ted/{correlationID}Consulta uma TEDTED_GET
GET /api/v1/tedLista as TEDsTED_GET_LIST
Referência completa

Para o schema, parâmetros e exemplos interativos, veja a API Reference.

A TED é assíncrona​

Quem liquida uma TED é o BACEN, pelo STR. Por isso, a resposta de POST /api/v1/ted diz que a TED foi aceita para processamento, e não que o dinheiro chegou. Normalmente ela volta com status: PROCESSING.

O resultado chega depois, por webhook:

  • TED_OUT_CONFIRMED: a TED foi liquidada no BACEN.
  • TED_OUT_REJECTED: a TED não foi liquidada, o débito foi estornado e o saldo voltou para a conta.

Não trate a resposta do POST como pagamento concluído. Espere o webhook ou consulte a TED. Os caminhos possíveis e o evento de cada um estão em Ciclo de vida de uma TED.

Pré-requisitos​

  • Uma chave de API (AppID) da sua empresa. Veja Primeiros passos com a API.
  • A funcionalidade TED habilitada na empresa. Sem ela, todos os endpoints respondem 403. Peça a ativação ao suporte.
  • Os scopes da tabela acima na sua aplicação, conforme os endpoints que ela usa.
  • Uma conta da empresa para debitar a TED: a conta vinculada à aplicação ou, se ela não tiver, a conta padrão da empresa. Veja Conta de origem.

Autenticação​

Envie o AppID no header Authorization, sem o prefixo Bearer:

curl https://api.woovi.com/api/v1/ted \
--header 'Authorization: {APP_ID}'
AmbienteURL base
Produçãohttps://api.woovi.com
Sandboxhttps://api.woovi-sandbox.com

A empresa e a conta de origem vêm do AppID, nunca da requisição: você só envia de contas da sua empresa, e só enxerga as TEDs dela.

Erros​

Toda resposta de erro traz dois campos:

  • errorCode: um código estável. Use-o no seu código para decidir o que fazer.
  • error: a mensagem, para mostrar ao seu usuário. Ela segue o header Accept-Language (pt-BR ou en); sem o header, vem em português.
{
"error": "Valor acima do limite de TED disponível para o período",
"errorCode": "TED_TOTAL_LIMIT_EXCEEDED"
}

Não compare o texto de error: ele pode mudar. Compare o errorCode, e novos códigos podem surgir.

nota

Os erros de autenticação (401) e de scope (403) são respondidos pelo gateway, antes da API de TED, e trazem só o error.

Por que uma TED falhou​

Uma TED FAILED ou REFUNDED explica o motivo em dois campos, na consulta e nos webhooks:

CampoPara quê
errorCodeCódigo estável do motivo. Use-o para decidir
reasonO errorCode explicado, para mostrar ao usuário. Segue o Accept-Language; nos webhooks vem em português
{
"status": "FAILED",
"errorCode": "RECEIVER_ACCOUNT_CLOSED",
"reason": "Conta recebedora encerrada"
}
errorCodereason
INSUFFICIENT_BALANCESaldo insuficiente
OUTSIDE_STR_WINDOWFora do horário de funcionamento da TED
STR_REJECTEDRejeitada pelo Banco Central
STR_CANCELLEDCancelada no Banco Central
REFUSED_BY_RECEIVER_BANKDevolvida pelo banco recebedor
RECEIVER_ACCOUNT_NOT_FOUNDConta recebedora não encontrada
RECEIVER_ACCOUNT_CLOSEDConta recebedora encerrada
RECEIVER_ACCOUNT_BLOCKEDConta recebedora bloqueada para receber TED
FEE_FETCH_FAILEDFalha ao calcular a tarifa
LEDGER_ERRORFalha ao lançar a transação no saldo
SPB_PUBLISH_FAILEDFalha ao enviar a TED ao Banco Central
SPB_DEAD_LETTEREDTED não entregue ao Banco Central por um erro interno
UNKNOWNMotivo desconhecido

Em uma TED que não falhou, os dois campos são null.

Valores​

Todos os valores são inteiros em centavos: 150050 é R$ 1.500,50.

Status de uma TED​

statusSignificado
PENDINGEm processamento
PROCESSINGEnviada ao STR, aguardando a resposta do BACEN
SCHEDULEDReservado; hoje nenhuma TED fica neste status
COMPLETEDLiquidada
FAILEDNão liquidada; o saldo voltou para a conta
REFUNDEDLiquidada e depois devolvida
typeSignificado
TED_OUTTED que você enviou
TED_INTED que você recebeu
TED_REFUND_SENTDevolução que você enviou
TED_REFUND_RECEIVEDDevolução que você recebeu

O type já diz para que lado o dinheiro foi.

Quem paga e quem recebe​

Como no Pix, debitParty é quem enviou o dinheiro e creditParty quem recebeu:

CampoDescrição
account.branchAgência
account.accountNúmero da conta
account.accountTypeTipo da conta: CACC (corrente), SVGS (poupança), SLRY (salário) ou PAYMENT (pagamento)
psp.idISPB da instituição
holder.nameNome do titular
holder.taxIDCPF (BR:CPF) ou CNPJ (BR:CNPJ) do titular