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,REFUNDEDouDRAFTsão excluídos dos totais de receita.
Relatório de Vendas
Endpoint
GET /reports/salesParâmetros
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
from | date | ✅ | Data inicial (YYYY-MM-DD) |
to | date | ✅ | Data final (YYYY-MM-DD) |
groupBy | string | ❌ | procedure, product, professional, method, category |
professionalId | uuid | ❌ | Filtrar por profissional |
categoryId | uuid | ❌ | Filtrar por categoria de procedimento |
unitId | uuid | ❌ | Filtrar por unidade |
status | string | ❌ | PAID, PARTIAL ou ambos (padrão: ambos) |
Resposta Completa
{
"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.
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.
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
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
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:
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:
| Formato | Endpoint | Uso recomendado |
|---|---|---|
?format=pdf | Apresentação, arquivamento, envio contábil | |
| CSV | ?format=csv | Importação em Excel/planilhas, análise avançada |
Exemplo:
GET /reports/sales?from=2026-05-01&to=2026-05-31&format=pdfO servidor responde com Content-Type: application/pdf e Content-Disposition: attachment.
Fluxo de Caixa
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ório | Owner | Admin | Receptionist | Professional | Viewer |
|---|---|---|---|---|---|
| Vendas | ✅ | ✅ | ❌ | ❌ | ✅ |
| Ticket médio | ✅ | ✅ | ❌ | ❌ | ✅ |
| Faturamento | ✅ | ✅ | ❌ | ❌ | ✅ |
| Inadimplência | ✅ | ✅ | ❌ | ❌ | ❌ |
| Fluxo de caixa | ✅ | ✅ | ❌ | ❌ | ✅ |
| Exportação PDF/CSV | ✅ | ✅ | ❌ | ❌ | ✅ |