Documentação da API

API de Faturas

Faturas e cobranças

12 endpoints · base https://api.comando.one/v1 · autenticação por chave cmd_live_…

GET/invoices

Listar faturas

invoices:read

Parâmetros, corpo, resposta e exemplo

Parâmetros

page(query)integerNúmero da página (default: 1)
per_page(query)integerItens por página (default: 20, máx: 100)
search(query)stringBusca 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

idstring (uuid)
customer_idstring (uuid)
customersobject
invoice_numberstring | null
titlestring | null
amountnumber
status"rascunho" | "enviada" | "aceita" | "cancelada"
payment_status"pendente" | "parcial" | "pago" | "vencido"
due_datestring | null (date)
proposal_idstring | null (uuid)
contract_idstring | null (uuid)
payment_method_idstring | null (uuid)Forma de Cobrança da fatura (a que a tela mostra). Mesma lista de GET /v1/payment-methods.
created_atstring (date-time)
updated_atstring (date-time)

Exemplo

curl -X GET "https://api.comando.one/v1/invoices" \
  -H "Authorization: Bearer cmd_live_SUA_CHAVE"
POST/invoices

Criar 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óriostring (uuid)
titlestring
amountnumberIgnorado se 'items' for enviado (calculado dos itens)
status"rascunho" | "enviada" | "aceita" | "ativa"
payment_method_idstring (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óriostring (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.
itemsarray de object

Resposta 201 — Fatura criada

idstring (uuid)
customer_idstring (uuid)
customersobject
invoice_numberstring | null
titlestring | null
amountnumber
status"rascunho" | "enviada" | "aceita" | "cancelada"
payment_status"pendente" | "parcial" | "pago" | "vencido"
due_datestring | null (date)
proposal_idstring | null (uuid)
contract_idstring | null (uuid)
payment_method_idstring | null (uuid)Forma de Cobrança da fatura (a que a tela mostra). Mesma lista de GET /v1/payment-methods.
created_atstring (date-time)
updated_atstring (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)>"}'
DELETE/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"
GET/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

idstring (uuid)
customer_idstring (uuid)
customersobject
invoice_numberstring | null
titlestring | null
amountnumber
status"rascunho" | "enviada" | "aceita" | "cancelada"
payment_status"pendente" | "parcial" | "pago" | "vencido"
due_datestring | null (date)
proposal_idstring | null (uuid)
contract_idstring | null (uuid)
payment_method_idstring | null (uuid)Forma de Cobrança da fatura (a que a tela mostra). Mesma lista de GET /v1/payment-methods.
created_atstring (date-time)
updated_atstring (date-time)
invoice_itemsarray de InvoiceItem
invoice_chargesarray de InvoiceCharge

Exemplo

curl -X GET "https://api.comando.one/v1/invoices/{id}" \
  -H "Authorization: Bearer cmd_live_SUA_CHAVE"
PATCH/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"
titlestring | null
payment_method_idstring | 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

idstring (uuid)
customer_idstring (uuid)
customersobject
invoice_numberstring | null
titlestring | null
amountnumber
status"rascunho" | "enviada" | "aceita" | "cancelada"
payment_status"pendente" | "parcial" | "pago" | "vencido"
due_datestring | null (date)
proposal_idstring | null (uuid)
contract_idstring | null (uuid)
payment_method_idstring | null (uuid)Forma de Cobrança da fatura (a que a tela mostra). Mesma lista de GET /v1/payment-methods.
created_atstring (date-time)
updated_atstring (date-time)

Exemplo

curl -X PATCH "https://api.comando.one/v1/invoices/{id}" \
  -H "Authorization: Bearer cmd_live_SUA_CHAVE"
PATCH/invoices/{id}/auto-send

Programar 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)

enabledbooleanfalse desliga e volta o canal para manual
channel"manual" | "email" | "whatsapp" | "ambos""ambos" = e-mail E WhatsApp
days_beforeintegerdias ANTES do vencimento

Resposta 200 — Programação aplicada

invoice_idstring
auto_send_enabledboolean
send_channelstring
send_days_beforeinteger
parcelas_afetadasinteger

Exemplo

curl -X PATCH "https://api.comando.one/v1/invoices/{id}/auto-send" \
  -H "Authorization: Bearer cmd_live_SUA_CHAVE"
PATCH/invoices/{id}/cancel

Cancelar fatura

invoices:cancel

Parâmetros, corpo, resposta e exemplo

Parâmetros

idobrigatório(path)string (uuid)

Resposta 200 — Fatura cancelada

idstring (uuid)
invoice_numberstring | null
titlestring | null
status"cancelada"
payment_statusstring
amountnumber
updated_atstring (date-time)

Exemplo

curl -X PATCH "https://api.comando.one/v1/invoices/{id}/cancel" \
  -H "Authorization: Bearer cmd_live_SUA_CHAVE"
GET/invoices/{id}/charges

Listar 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_idstring
invoice_numberstring
invoice_statusstring
invoice_payment_statusstring
totalinteger
chargesarray de object

Exemplo

curl -X GET "https://api.comando.one/v1/invoices/{id}/charges" \
  -H "Authorization: Bearer cmd_live_SUA_CHAVE"
POST/invoices/{id}/charges/{charge_id}/pay

Dar 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)

amountnumberValor recebido. Omitido, quita o saldo restante da parcela.
payment_datestring (date)Data do recebimento (YYYY-MM-DD). Padrão: hoje.
receipt_method_idstring (uuid)Forma de RECEBIMENTO (GET /v1/payment-methods). Aceita também o nome `payment_method_id`.
payment_method_idstring (uuid)Apelido de 'receipt_method_id'. Este só tem efeito quando o canônico não vem.
bank_account_idstring (uuid)Conta que recebeu (GET /v1/bank-accounts).
notesstringObservação livre do pagamento.

Resposta 201 — Baixa registrada

payment_idstring
invoice_idstring
invoice_numberstring
invoice_payment_statusstring
amountnumber
payment_datestring (date)
chargeobject

Exemplo

curl -X POST "https://api.comando.one/v1/invoices/{id}/charges/{charge_id}/pay" \
  -H "Authorization: Bearer cmd_live_SUA_CHAVE"
GET/invoices/{id}/charges/{charge_id}/payments

Listar 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_idstring
charge_idstring
charge_amountnumber
charge_payment_statusstring
paid_amountnumber
remaining_amountnumber
totalinteger
paymentsarray de object

Exemplo

curl -X GET "https://api.comando.one/v1/invoices/{id}/charges/{charge_id}/payments" \
  -H "Authorization: Bearer cmd_live_SUA_CHAVE"
DELETE/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_idstring
reversed_amountnumber
payment_deletedbooleanfalse = o pagamento cobria outras faturas e foi só reduzido
invoice_idstring
invoice_numberstring
invoice_payment_statusstring
chargeobject

Exemplo

curl -X DELETE "https://api.comando.one/v1/invoices/{id}/charges/{charge_id}/payments/{payment_id}" \
  -H "Authorization: Bearer cmd_live_SUA_CHAVE"
POST/invoices/{id}/send

Enviar 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)

tostring 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_emailsstring ou array de string (email)Apelido de 'to'. Mesmo formato; 'to' tem precedência.
subjectstringAssunto. Uma linha, até 200 caracteres. Padrão: 'Segunda via da fatura <numero>'.
body_htmlstringTexto 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_attachmentsbooleanAnexa os arquivos da fatura.

Resposta 200 — Segunda via enviada

invoice_idstring (uuid)
schedule_idstring (uuid)
recipientsarray de string
subjectstring
attachmentsinteger
sent_atstring (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