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:

ParameterMeaning
from, toCalendar 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_byday, week, month or total.

The response names currency, timezone, the period, totals over everything and buckets per period. Every bucket has the same fields:

FieldMeaning
period_start, period_endThe period.
ordersNumber of orders that count.
gross, net, taxSales gross and net and the tax, in cents.
tipsTips. Not revenue, shown separately.
delivery_fees, service_feesDelivery and service fees.
discountsDiscounts, for example from the stamp card.
by_tax_ratePer 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_methodSplit by online and on_site.
by_typeSplit by pickup, delivery, dine_in.
cancelledCancelled 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=month and by_tax_rate give 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.