Skip to content

Relatório de Vendas e Ticket Médio

Documentação técnica dos relatórios financeiros: vendas, faturamento por dimensão e análise de ticket médio.

Visão Geral

O módulo de relatórios financeiros consolida dados de faturas pagas (PAID) e parcialmente pagas (PARTIAL) para oferecer análises por período, profissional, procedimento, produto e método de pagamento.

Orçamentos e faturas com status CANCELLED, REFUNDED ou DRAFT são excluídos dos totais de receita.


Relatório de Vendas

Endpoint

http
GET /reports/sales

Parâmetros

ParâmetroTipoObrigatórioDescrição
fromdateData inicial (YYYY-MM-DD)
todateData final (YYYY-MM-DD)
groupBystringprocedure, product, professional, method, category
professionalIduuidFiltrar por profissional
categoryIduuidFiltrar por categoria de procedimento
unitIduuidFiltrar por unidade
statusstringPAID, PARTIAL ou ambos (padrão: ambos)

Resposta Completa

json
{
  "period": {
    "from": "2026-05-01",
    "to": "2026-05-31"
  },
  "summary": {
    "totalRevenue": 58400.00,
    "totalInvoices": 142,
    "averageTicket": 411.27,
    "ticketVsPreviousPeriod": "+8.3%",
    "totalPending": 3200.00,
    "totalCancelled": 800.00
  },
  "byProcedure": [
    {
      "procedureId": "uuid",
      "name": "Botox facial",
      "category": "Toxina Botulínica",
      "quantity": 38,
      "revenue": 32300.00,
      "share": "55.3%",
      "averagePrice": 850.00
    }
  ],
  "byProduct": [
    {
      "productId": "uuid",
      "name": "Sérum vitamina C",
      "quantity": 15,
      "revenue": 2250.00,
      "share": "3.9%",
      "averagePrice": 150.00
    }
  ],
  "byProfessional": [
    {
      "professionalId": "uuid",
      "name": "Dra. Silva",
      "invoices": 62,
      "revenue": 27800.00,
      "averageTicket": 448.39,
      "share": "47.6%"
    }
  ],
  "byPaymentMethod": {
    "PIX": { "amount": 28000.00, "count": 68, "share": "47.9%" },
    "CREDIT_CARD": { "amount": 22000.00, "count": 54, "share": "37.7%" },
    "CASH": { "amount": 8400.00, "count": 20, "share": "14.4%" }
  },
  "dailyEvolution": [
    {
      "date": "2026-05-01",
      "revenue": 2100.00,
      "invoices": 5,
      "averageTicket": 420.00
    }
  ]
}

Ticket Médio

Definição

Ticket Médio = Receita Total / Número de Faturas (PAID + PARTIAL)

Dimensões de Análise

Por Período

Compara o ticket médio do período selecionado com o período imediatamente anterior de mesma duração.

http
GET /reports/ticket?from=2026-05-01&to=2026-05-31

Response:
{
  "current": {
    "period": "2026-05-01 / 2026-05-31",
    "averageTicket": 411.27,
    "totalInvoices": 142
  },
  "previous": {
    "period": "2026-04-01 / 2026-04-30",
    "averageTicket": 379.80,
    "totalInvoices": 135
  },
  "variation": "+8.3%"
}

Por Profissional

Identifica profissionais com ticket acima ou abaixo da média da clínica.

http
GET /reports/ticket?groupBy=professional&from=2026-05-01&to=2026-05-31

Response:
{
  "clinicAverage": 411.27,
  "professionals": [
    {
      "name": "Dra. Silva",
      "averageTicket": 448.39,
      "vsClinicAverage": "+9.0%",
      "invoices": 62
    },
    {
      "name": "Dr. Costa",
      "averageTicket": 362.10,
      "vsClinicAverage": "-11.9%",
      "invoices": 80
    }
  ]
}

Por Categoria de Procedimento

http
GET /reports/ticket?groupBy=category&from=2026-05-01&to=2026-05-31

Response:
{
  "categories": [
    {
      "category": "Toxina Botulínica",
      "averageTicket": 850.00,
      "invoices": 38,
      "revenue": 32300.00
    },
    {
      "category": "Limpeza de Pele",
      "averageTicket": 180.00,
      "invoices": 24,
      "revenue": 4320.00
    }
  ]
}

Relatório de Faturamento

Faturas por Status no Período

http
GET /reports/invoices?from=2026-05-01&to=2026-05-31

Response:
{
  "period": { "from": "2026-05-01", "to": "2026-05-31" },
  "byStatus": {
    "PAID": { "count": 128, "total": 52800.00 },
    "PARTIAL": { "count": 14, "total": 5600.00 },
    "PENDING": { "count": 22, "total": 9100.00 },
    "CANCELLED": { "count": 6, "total": 2400.00 }
  },
  "conversionRate": "90.1%",
  "avgDaysToPayment": 2.4
}

Inadimplência

Faturas PENDING com dueDate < hoje:

http
GET /reports/overdue?as_of=2026-05-26

Response:
{
  "totalOverdue": 8,
  "totalAmount": 3200.00,
  "byAge": [
    { "range": "1-7 dias", "count": 4, "amount": 1600.00 },
    { "range": "8-30 dias", "count": 3, "amount": 1200.00 },
    { "range": ">30 dias", "count": 1, "amount": 400.00 }
  ],
  "patients": [
    {
      "patientId": "uuid",
      "name": "João Souza",
      "totalOverdue": 400.00,
      "oldestDue": "2026-04-15"
    }
  ]
}

Exportação

Todos os relatórios suportam exportação em dois formatos:

FormatoEndpointUso recomendado
PDF?format=pdfApresentação, arquivamento, envio contábil
CSV?format=csvImportação em Excel/planilhas, análise avançada

Exemplo:

http
GET /reports/sales?from=2026-05-01&to=2026-05-31&format=pdf

O servidor responde com Content-Type: application/pdf e Content-Disposition: attachment.


Fluxo de Caixa

http
GET /reports/cashflow?from=2026-05-01&to=2026-05-31&unitId=uuid

Response 200:
{
  "period": { "from": "2026-05-01", "to": "2026-05-31" },
  "totalRevenue": 58400.00,
  "totalPending": 3200.00,
  "totalCancelled": 800.00,
  "byMethod": {
    "PIX": 28000.00,
    "CREDIT_CARD": 22000.00,
    "CASH": 8400.00
  },
  "daily": [
    { "date": "2026-05-01", "revenue": 2100.00, "invoices": 5 }
  ]
}

Permissões

RelatórioOwnerAdminReceptionistProfessionalViewer
Vendas
Ticket médio
Faturamento
Inadimplência
Fluxo de caixa
Exportação PDF/CSV

Ver também

Desenvolvido com ❤️ pela equipe FastGivr.