/v1/finance/transactions
Lançar receita ou despesa
Status deve ser compatível com o tipo. Vincular appointmentId não muda o atendimento (e o atendimento nunca cria pagamento sozinho).
finance:writeDispara:finance.transaction_changedAutenticação
Envie o token de acesso do usuário no cabeçalho Authorization e, se ele tiver mais de uma clínica, o X-Clinic-Id. Integrações servidor a servidor usam o token de serviço com X-Clinic-Id e X-Agent-Key. Como autenticar
Authorization: Bearer <TOKEN>X-Clinic-Id: <clinic_id>Parâmetros
Cabeçalhos
X-Clinic-IdstringOpcionalClínica ativa. Obrigatório só para quem tem acesso a mais de uma clínica (ou token de serviço). Validado contra o vínculo do usuário. · Padrão (regex):
^[A-Za-z0-9._-]{1,64}$
Corpo da requisição
application/json · obrigatório
typestringObrigatórioValores:
receita,despesadescriptionstringObrigatórioEntre 2 e 160 caracteres
amountnumberObrigatórioValor em reais (BRL). No banco: amount_minor (centavos). · Maior que 0 · Máximo 10000000
statusstringObrigatórioreceita: recebido | a-receber | atrasado · despesa: pago | a-pagar | atrasado · Valores:
recebido,pago,a-receber,a-pagar,atrasadomethodstring | nullOpcionalValores:
Pix,Crédito,Débito,Dinheiro,Boleto,TED,ChequeoccurredAtstring (data-hora)OpcionaldueDatestring | nullOpcionalFormato
AAAA-MM-DDpartystring | nullOpcionalAté 128 caracteres
patientIdstring | nullOpcionalEntre 1 e 64 caracteres · Padrão (regex):
^[A-Za-z0-9._-]+$appointmentIdstring | nullOpcionalEntre 1 e 64 caracteres · Padrão (regex):
^[A-Za-z0-9._-]+$serviceKeystring | nullOpcionalAté 64 caracteres
professionalKeystring | nullOpcionalAté 64 caracteres
externalReferencestring | nullOpcionalAté 128 caracteres
agentStatestringOpcionalSomente agentes (Cecília). · Valores:
executado,aguardandoagentActionstringOpcionalSomente agentes. · Até 255 caracteres
categorystring | nullOpcionalTipo da despesa (só despesas). Padrão: outro. · Valores:
aluguel,internet,sistema,outro
Exemplo de requisição
Gerado do contrato. Troque os marcadores entre < > pelos seus valores.
const res = await fetch("https://myclinc.leadpoint.com.br/v1/finance/transactions", { method: "POST", headers: { Authorization: "Bearer <TOKEN>", "X-Clinic-Id": "<clinic_id>", "Content-Type": "application/json", }, body: JSON.stringify({ "type": "receita", "description": "<description>", "amount": 1, "status": "recebido", "method": "Pix", "occurredAt": "2026-01-15T14:00:00.000Z", "dueDate": "2026-09-18", "party": "<party>" }),})if (!res.ok) { const { error } = await res.json() throw new Error(`${error.code}: ${error.message} (${error.requestId})`)}const { data } = await res.json()Resposta
{ "data": { "id": "<id>", "date": "2026-09-18", "time": "14:30", "occurredAt": "2026-09-18T14:00:00.000Z", "description": "<description>", "party": "<party>", "patientId": "<patientId>", "type": "receita", "amount": 1, "status": "recebido", "statusLabel": "<statusLabel>", "method": "<method>", "dueDate": "2026-09-18", "paidAt": "2026-09-18T14:00:00.000Z", "service": { "key": "<key>", "name": "<name>" }, "professional": { "key": "<key>", "name": "<name>" }, "appointmentId": "<appointmentId>", "agent": { "key": "<key>", "name": "<name>", "image": "<image>", "state": "executado", "action": "<action>", "at": "2026-09-18T14:00:00.000Z" }, "reversedFrom": "<reversedFrom>", "category": "aluguel" }, "meta": { "webhooks": [ { "event": "appointment.cancelled", "status": "sent" } ] }}Exemplo gerado do esquema da resposta; valores entre < > são ilustrativos.
Códigos de erro
Corpo no formato padrão { error: { code, message, requestId } }. Veja todos os códigos.
Bad Request — Requisição malformada (JSON inválido, cursor inválido ou clínica ativa não informada).
Unauthorized — Token ausente, inválido ou expirado.
Forbidden — Autenticado, mas sem permissão (perfil ou clínica).
Not Found — Recurso não encontrado na clínica ativa.
Unprocessable Entity — Dados semanticamente inválidos (erros por campo em details).
Too Many Requests — Limite de requisições excedido (veja Retry-After).
Internal Server Error — Erro interno (sem detalhes expostos).
Service Unavailable — Banco de dados indisponível ou não configurado.
Limites
Limite padrão: 120 requisições a cada 60 segundos por token. Sobre limites