Flavoso APIGuidesReports
Reports
Sales per day, week or month and sales per dish, by the same rules as the figures in the dashboard.
Sales report
GET /reports/sales needs reports:read and takes these parameters:
| Parameter | Meaning |
|---|---|
from, to | Calendar days (YYYY-MM-DD) in the restaurant's local time, at most 366 days. For October: from=2026-10-01&to=2026-10-31. |
group_by | day, week, month or total. |
The response names currency, timezone, the period, totals over everything and buckets per period. Every bucket has the same fields:
| Field | Meaning |
|---|---|
period_start, period_end | The period. |
orders | Number of orders that count. |
gross, net, tax | Sales gross and net and the tax, in cents. |
tips | Tips. Not revenue, shown separately. |
delivery_fees, service_fees | Delivery and service fees. |
discounts | Discounts, for example from the stamp card. |
by_tax_rate | Per tax rate rate_bps, gross, net, tax; a share without a rate on file with rate_bps: null and net and tax as null. |
by_payment_method | Split by online and on_site. |
by_type | Split by pickup, delivery, dine_in. |
cancelled | Cancelled orders: count and gross, separately. |
The exact shape of every field is in the reference.
# October by day, in the restaurant's local time
curl "https://api.flavoso.com/v1/reports/sales?from=2026-10-01&to=2026-10-31&group_by=day" \
-H "Authorization: Bearer $ACCESS_TOKEN"
# The whole year as one total (at most 366 days per request)
curl "https://api.flavoso.com/v1/reports/sales?from=2026-01-01&to=2026-12-31&group_by=total" \
-H "Authorization: Bearer $ACCESS_TOKEN"What counts
Counting follows the same rules as the figures in the dashboard, summed in the database, not added up from lists. An unpaid online order never counts; cancelled orders are not in the sales but separately under cancelled. A day is the restaurant's calendar day in its time zone.
Sales per dish
GET /reports/products?from=…&to=…&limit=… returns a period's best-selling dishes, sorted by quantity, with quantity and gross: { "object": "list", "data": [{ "product_id", "name", "quantity", "gross" }] }. limit takes 1 to 100 (default 25); there is no pagination, has_more only says whether there are more dishes. Counting follows the sales, without cancellations. A deleted dish appears with product_id: null and its name from the orders.
# The 20 best-selling dishes of October
curl "https://api.flavoso.com/v1/reports/products?from=2026-10-01&to=2026-10-31&limit=20" \
-H "Authorization: Bearer $ACCESS_TOKEN"Reconciling with a POS or accounting
- Once a day, after midnight in the restaurant's time zone, fetch the previous day.
- Compare gross, tax per rate and tips with your own end-of-day report for the Flavoso channel.
- Differences usually come from orders cancelled after they were taken over, or from tips booked as revenue.
- For accounting:
group_by=monthandby_tax_rategive the figures per tax rate.
Still unclear? Write to support@flavoso.com and include the id from X-Request-Id. It lets us find your request in the log.