Adimple API v1
Consulta de crédito, cobrança e negativação para qualquer empresa e qualquer sistema de gestão (ERP, PDV, sistema de academia, escola…). Autenticação: `Authorization: Bearer adm_live_...` (crie a chave em Painel → Integrações). Dados pessoais vão SEMPRE no corpo (nunca na URL). Valores em centavos; datas AAAA-MM-DD. Webhooks são assinados: `Adimple-Signature: t=<unix>,v1=<hex HMAC-SHA256(segredo, "<t>.<corpo>")>`.
Especificação completa (OpenAPI 3.1): /v1/openapi.json
Rotas
- post
/v1/debtsCria uma dívida (e o devedor), opcionalmente já na régua - get
/v1/debtsLista dívidas - get
/v1/debts/{id}Detalhe da dívida - post
/v1/debts/{id}/negativateSolicita a negativação (confere as regras do CDC art. 43 e debita créditos) - post
/v1/debts/{id}/paymentsInforma pagamento. Quitada e negativada → baixa pedida na hora (Súmula 548) - post
/v1/debts/{id}/clearRetira a negativação sem pagamento (acordo, erro de cadastro…) - post
/v1/debts/{id}/cancelCancela a dívida (se negativada, pede a baixa) - post
/v1/embed-sessions"Ver no Adimple": link de uso único (2 min) para o painel somente leitura da empresa - post
/v1/debtorsCria ou atualiza devedor (pelo CPF/CNPJ) - post
/v1/queriesConsulta CPF/CNPJ (documento no corpo; debita créditos; estorna se falhar) - get
/v1/queries/{id}Resultado salvo (acesso registrado na auditoria) - get
/v1/walletSaldo de créditos
Webhooks
debt.notice_sentAviso da régua enviado (canal e data)debt.negativatedInclusão confirmada pelo birô (protocolo)debt.negativation_failedBirô recusou; créditos estornados (error_code)debt.clearedBaixa confirmada pelo birô (reason)debt.status_changedQualquer mudança de status da dívida (previous_status)payment.receivedPagamento registradowallet.low_balanceSaldo abaixo de R$ 20,00
// Conferir a assinatura do webhook (Node.js)
const [t, v1] = req.headers["adimple-signature"].split(",").map((p) => p.split("=")[1]);
const esperado = crypto.createHmac("sha256", SEGREDO).update(t + "." + corpoBruto).digest("hex");
const valido = crypto.timingSafeEqual(Buffer.from(v1, "hex"), Buffer.from(esperado, "hex"))
&& Math.abs(Date.now() / 1000 - Number(t)) < 300;