API de Faturas
Faturas e cobranças
12 endpoints · base https://api.comando.one/v1 · autenticação por chave cmd_live_…
/invoicesListar faturas
invoices:read
Parâmetros, corpo, resposta e exemplo
Parâmetros
page(query) | integer | Número da página (default: 1) |
per_page(query) | integer | Itens por página (default: 20, máx: 100) |
search(query) | string | Busca por número ou título |
status(query) | "rascunho" | "enviada" | "aceita" | "cancelada" | |
payment_status(query) | "pendente" | "parcial" | "pago" | "vencido" | |
customer_id(query) | string (uuid) | |
due_date_from(query) | string (date) | Vencimento a partir de (YYYY-MM-DD) |
overdue(query) | "true" | "false" | true = vencidas de VERDADE (vencimento passado e não pagas). Não confunda com payment_status=vencido: esse campo é agregado e 'parcial' ganha de 'vencido', então uma fatura com parcela paga e parcela vencida NÃO aparece lá. Para cobrança, use este filtro. |
sort_by(query) | "amount" | "due_date" | "created_at" | "updated_at" | "invoice_number" | Coluna de ordenação. Use com sort_order para responder 'as maiores' ou 'as mais recentes'. |
sort_order(query) | "asc" | "desc" | Direção da ordenação. Padrão: desc quando sort_by é informado. |
due_date_to(query) | string (date) | Vencimento até (YYYY-MM-DD) |
Resposta 200 — Listagem paginada
id | string (uuid) | |
customer_id | string (uuid) | |
customers | object | |
invoice_number | string | null | |
title | string | null | |
amount | number | |
status | "rascunho" | "enviada" | "aceita" | "cancelada" | |
payment_status | "pendente" | "parcial" | "pago" | "vencido" | |
due_date | string | null (date) | |
proposal_id | string | null (uuid) | |
contract_id | string | null (uuid) | |
payment_method_id | string | null (uuid) | Forma de Cobrança da fatura (a que a tela mostra). Mesma lista de GET /v1/payment-methods. |
created_at | string (date-time) | |
updated_at | string (date-time) |
Exemplo
curl -X GET "https://api.comando.one/v1/invoices" \
-H "Authorization: Bearer cmd_live_SUA_CHAVE"/invoicesCriar fatura
Cria uma fatura. Se 'items' for enviado, o valor é calculado a partir deles. O cliente pode ser da empresa **ou compartilhado com ela com a permissão 'Faturar'** (o dono marca em Clientes → Compartilhar; é diferente de 'Faturas', que trata das faturas do dono). A fatura pertence a quem a lança — financeiro, baixa e NFS-e são dessa empresa; só o cadastro do cliente é do dono. Cliente compartilhado sem 'Faturar' devolve 404 — na API e na tela.
invoices:create
Parâmetros, corpo, resposta e exemplo
Corpo (JSON)
customer_idobrigatório | string (uuid) | |
title | string | |
amount | number | Ignorado se 'items' for enviado (calculado dos itens) |
status | "rascunho" | "enviada" | "aceita" | "ativa" | |
payment_method_id | string (uuid) | Opcional. Forma de Cobrança da fatura (id de GET /v1/payment-methods). Vazia, a tela mostra "Selecionar…"; se a baixa que quitar a fatura informar a forma de recebimento, ela é copiada para cá. |
due_dateobrigatório | string (date) | Obrigatório. A fatura nasce com uma parcela 1/1 neste vencimento — sem parcela ninguém cobra (o dispatch seleciona por parcela). O envio automático nasce desligado; para ligar use PATCH /v1/invoices/{id}/auto-send. |
items | array de object |
Resposta 201 — Fatura criada
id | string (uuid) | |
customer_id | string (uuid) | |
customers | object | |
invoice_number | string | null | |
title | string | null | |
amount | number | |
status | "rascunho" | "enviada" | "aceita" | "cancelada" | |
payment_status | "pendente" | "parcial" | "pago" | "vencido" | |
due_date | string | null (date) | |
proposal_id | string | null (uuid) | |
contract_id | string | null (uuid) | |
payment_method_id | string | null (uuid) | Forma de Cobrança da fatura (a que a tela mostra). Mesma lista de GET /v1/payment-methods. |
created_at | string (date-time) | |
updated_at | string (date-time) |
Exemplo
curl -X POST "https://api.comando.one/v1/invoices" \
-H "Authorization: Bearer cmd_live_SUA_CHAVE" \
-H "Content-Type: application/json" \
-d '{"customer_id":"<string (uuid)>","due_date":"<string (date)>"}'/invoices/{id}Excluir fatura
Exclusão física da fatura (itens e cobranças vinculadas via cascade). Use cancel para apenas cancelar.
invoices:delete
Parâmetros, corpo, resposta e exemplo
Parâmetros
idobrigatório(path) | string (uuid) |
Resposta 204 — Excluída
Sem corpo.
Exemplo
curl -X DELETE "https://api.comando.one/v1/invoices/{id}" \
-H "Authorization: Bearer cmd_live_SUA_CHAVE"/invoices/{id}Obter fatura
invoices:read
Parâmetros, corpo, resposta e exemplo
Parâmetros
idobrigatório(path) | string (uuid) |
Resposta 200 — Fatura com itens e cobranças
id | string (uuid) | |
customer_id | string (uuid) | |
customers | object | |
invoice_number | string | null | |
title | string | null | |
amount | number | |
status | "rascunho" | "enviada" | "aceita" | "cancelada" | |
payment_status | "pendente" | "parcial" | "pago" | "vencido" | |
due_date | string | null (date) | |
proposal_id | string | null (uuid) | |
contract_id | string | null (uuid) | |
payment_method_id | string | null (uuid) | Forma de Cobrança da fatura (a que a tela mostra). Mesma lista de GET /v1/payment-methods. |
created_at | string (date-time) | |
updated_at | string (date-time) | |
invoice_items | array de InvoiceItem | |
invoice_charges | array de InvoiceCharge |
Exemplo
curl -X GET "https://api.comando.one/v1/invoices/{id}" \
-H "Authorization: Bearer cmd_live_SUA_CHAVE"/invoices/{id}Corrigir fatura
Corrige o cabeçalho de uma fatura já criada. Existe para não ser preciso APAGAR a fatura (e estornar a baixa antes) só para trocar um status. Escopo estreito de propósito: para cancelar use `PATCH /v1/invoices/{id}/cancel` — o cancelamento tem efeitos que uma troca de status não dispara. O vencimento não muda aqui: quem cobra é a parcela (`invoice_charges`), e mexer só no cabeçalho daria a impressão de ter mudado a cobrança sem mudar nada do que é cobrado.
invoices:create
Parâmetros, corpo, resposta e exemplo
Parâmetros
idobrigatório(path) | string (uuid) |
Corpo (JSON)
status | "rascunho" | "enviada" | "aceita" | "ativa" | |
title | string | null | |
payment_method_id | string | null (uuid) | Forma de Cobrança (GET /v1/payment-methods); null limpa. Depois que há baixa o banco trava a troca: 409 mandando estornar antes. |
Resposta 200 — Fatura atualizada
id | string (uuid) | |
customer_id | string (uuid) | |
customers | object | |
invoice_number | string | null | |
title | string | null | |
amount | number | |
status | "rascunho" | "enviada" | "aceita" | "cancelada" | |
payment_status | "pendente" | "parcial" | "pago" | "vencido" | |
due_date | string | null (date) | |
proposal_id | string | null (uuid) | |
contract_id | string | null (uuid) | |
payment_method_id | string | null (uuid) | Forma de Cobrança da fatura (a que a tela mostra). Mesma lista de GET /v1/payment-methods. |
created_at | string (date-time) | |
updated_at | string (date-time) |
Exemplo
curl -X PATCH "https://api.comando.one/v1/invoices/{id}" \
-H "Authorization: Bearer cmd_live_SUA_CHAVE"/invoices/{id}/auto-sendProgramar a cobrança automática
Liga ou desliga o envio AUTOMÁTICO da cobrança nas parcelas em aberto da fatura. Sem isso a cobrança nunca sai sozinha: o disparo diário só envia com `auto_send_enabled` ligado na parcela, e a fatura criada por API nasce desligada. `days_before` = quantos dias ANTES do vencimento disparar (0 = no dia). Desligar devolve o canal para `manual`.
invoices:send
Parâmetros, corpo, resposta e exemplo
Parâmetros
idobrigatório(path) | string (uuid) |
Corpo (JSON)
enabled | boolean | false desliga e volta o canal para manual |
channel | "manual" | "email" | "whatsapp" | "ambos" | "ambos" = e-mail E WhatsApp |
days_before | integer | dias ANTES do vencimento |
Resposta 200 — Programação aplicada
invoice_id | string | |
auto_send_enabled | boolean | |
send_channel | string | |
send_days_before | integer | |
parcelas_afetadas | integer |
Exemplo
curl -X PATCH "https://api.comando.one/v1/invoices/{id}/auto-send" \
-H "Authorization: Bearer cmd_live_SUA_CHAVE"/invoices/{id}/cancelCancelar fatura
invoices:cancel
Parâmetros, corpo, resposta e exemplo
Parâmetros
idobrigatório(path) | string (uuid) |
Resposta 200 — Fatura cancelada
id | string (uuid) | |
invoice_number | string | null | |
title | string | null | |
status | "cancelada" | |
payment_status | string | |
amount | number | |
updated_at | string (date-time) |
Exemplo
curl -X PATCH "https://api.comando.one/v1/invoices/{id}/cancel" \
-H "Authorization: Bearer cmd_live_SUA_CHAVE"/invoices/{id}/chargesListar as parcelas da fatura
As PARCELAS (invoice_charges) da fatura, com quanto já foi pago e quanto falta em cada uma. Não confunda com `/v1/charges`, que é a cobrança do GATEWAY (Pix/boleto emitido no banco): a parcela é o que manda no vencimento e no status de pagamento da fatura. Use esta rota para descobrir o `charge_id` antes de dar baixa.
invoices:read
Parâmetros, corpo, resposta e exemplo
Parâmetros
idobrigatório(path) | string (uuid) |
Resposta 200 — Parcelas da fatura
invoice_id | string | |
invoice_number | string | |
invoice_status | string | |
invoice_payment_status | string | |
total | integer | |
charges | array de object |
Exemplo
curl -X GET "https://api.comando.one/v1/invoices/{id}/charges" \
-H "Authorization: Bearer cmd_live_SUA_CHAVE"/invoices/{id}/charges/{charge_id}/payDar baixa em uma parcela
Registra o recebimento de uma parcela: cria o pagamento e o aloca à parcela. A parcela e a fatura passam a `pago` (ou `parcial`) pelo próprio banco. Sem `amount`, quita o saldo restante; sem `payment_date`, usa hoje (America/Sao_Paulo). Se a baixa QUITA a fatura e informa a forma de recebimento, ela é copiada para a Forma de Cobrança da fatura quando esta está vazia (baixa parcial não mexe). Baixa PARCIAL é permitida; acima do saldo, não. Campo de corpo que a rota não conhece devolve 400 em vez de ser ignorado.
invoices:settle
Parâmetros, corpo, resposta e exemplo
Parâmetros
idobrigatório(path) | string (uuid) | |
charge_idobrigatório(path) | string (uuid) | id da PARCELA (veja GET /v1/invoices/{id}/charges) |
Corpo (JSON)
amount | number | Valor recebido. Omitido, quita o saldo restante da parcela. |
payment_date | string (date) | Data do recebimento (YYYY-MM-DD). Padrão: hoje. |
receipt_method_id | string (uuid) | Forma de RECEBIMENTO (GET /v1/payment-methods). Aceita também o nome `payment_method_id`. |
payment_method_id | string (uuid) | Apelido de 'receipt_method_id'. Este só tem efeito quando o canônico não vem. |
bank_account_id | string (uuid) | Conta que recebeu (GET /v1/bank-accounts). |
notes | string | Observação livre do pagamento. |
Resposta 201 — Baixa registrada
payment_id | string | |
invoice_id | string | |
invoice_number | string | |
invoice_payment_status | string | |
amount | number | |
payment_date | string (date) | |
charge | object |
Exemplo
curl -X POST "https://api.comando.one/v1/invoices/{id}/charges/{charge_id}/pay" \
-H "Authorization: Bearer cmd_live_SUA_CHAVE"/invoices/{id}/charges/{charge_id}/paymentsListar as baixas de uma parcela
Os recebimentos já registrados na parcela. `reconciled: true` avisa que aquele pagamento está conciliado com o extrato — o estorno dele será recusado até a conciliação ser desfeita.
invoices:read
Parâmetros, corpo, resposta e exemplo
Parâmetros
idobrigatório(path) | string (uuid) | |
charge_idobrigatório(path) | string (uuid) |
Resposta 200 — Baixas da parcela
invoice_id | string | |
charge_id | string | |
charge_amount | number | |
charge_payment_status | string | |
paid_amount | number | |
remaining_amount | number | |
total | integer | |
payments | array de object |
Exemplo
curl -X GET "https://api.comando.one/v1/invoices/{id}/charges/{charge_id}/payments" \
-H "Authorization: Bearer cmd_live_SUA_CHAVE"/invoices/{id}/charges/{charge_id}/payments/{payment_id}Estornar uma baixa
Desfaz um recebimento registrado na parcela. A parcela e a fatura voltam a `pendente`/`vencido`/`parcial` pelo próprio banco. O pagamento é apagado quando existia só para esta baixa; cobrindo outras faturas, perde apenas esta alocação e tem o valor reduzido. RECUSA (409) se o pagamento estiver conciliado com o extrato ou se a parcela tiver gerado repasse (split) já liberado ou pago — nos dois casos a resposta diz o que desfazer antes.
invoices:settle
Parâmetros, corpo, resposta e exemplo
Parâmetros
idobrigatório(path) | string (uuid) | |
charge_idobrigatório(path) | string (uuid) | |
payment_idobrigatório(path) | string (uuid) |
Resposta 200 — Baixa estornada
reversed_payment_id | string | |
reversed_amount | number | |
payment_deleted | boolean | false = o pagamento cobria outras faturas e foi só reduzido |
invoice_id | string | |
invoice_number | string | |
invoice_payment_status | string | |
charge | object |
Exemplo
curl -X DELETE "https://api.comando.one/v1/invoices/{id}/charges/{charge_id}/payments/{payment_id}" \
-H "Authorization: Bearer cmd_live_SUA_CHAVE"/invoices/{id}/sendEnviar segunda via da fatura ao cliente
Envia a segunda via por e-mail. Sem 'to', usa o e-mail cadastrado do cliente. Os anexos da fatura vão junto por padrão. Registra a tentativa na fila de e-mails antes de enviar, então um envio que falha deixa rastro.
invoices:send
Parâmetros, corpo, resposta e exemplo
Parâmetros
idobrigatório(path) | string (uuid) |
Corpo (JSON)
to | string ou array de string (email) | Destinatário(s). Aceita string separada por vírgula ou lista. Omitido, usa o e-mail do cliente. Precisa ser um e-mail cadastrado do cliente da fatura (cadastro ou contatos, `POST /v1/customers/{id}/contacts`); fora disso, 422. |
recipient_emails | string ou array de string (email) | Apelido de 'to'. Mesmo formato; 'to' tem precedência. |
subject | string | Assunto. Uma linha, até 200 caracteres. Padrão: 'Segunda via da fatura <numero>'. |
body_html | string | Texto da mensagem; tags HTML são removidas (links, imagens e formulários não passam), quebras de linha mantidas. Padrão: mensagem curta com valor e vencimento. |
include_attachments | boolean | Anexa os arquivos da fatura. |
Resposta 200 — Segunda via enviada
invoice_id | string (uuid) | |
schedule_id | string (uuid) | |
recipients | array de string | |
subject | string | |
attachments | integer | |
sent_at | string (date-time) |
Exemplo
curl -X POST "https://api.comando.one/v1/invoices/{id}/send" \
-H "Authorization: Bearer cmd_live_SUA_CHAVE"Início rápido, autenticação, SDK, servidor MCP e o playground para testar sem escrever código estão na documentação completa. A especificação em OpenAPI está em api.comando.one/openapi.json.
Outros recursos da API
Ou deixe a IA usar a API por você
O servidor MCP expõe estes mesmos recursos ao ChatGPT, Claude ou Gemini — com OAuth, sem chave de API.
Conectar um assistente