Skip to content

External reports

The menu item sales report returns, per menu item and sales unit, how many were sold, at what price and plate cost, how much was discounted, and the resulting margins.

GET /v1/external/restaurant/{restaurant_id}/reports/menu-item-sales/

It needs a token with the cogs-well.view permission that belongs to restaurant_id.

Terminal window
curl "https://dev-api.katalystos.com/v1/external/restaurant/64f0a1b2c3d4e5f607182930/reports/menu-item-sales/?start_at=10/01/2026&end_at=10/31/2026&with_id=1" \
-H "X-KATALYST-AUTH-TOKEN: $T"
Parameter Default Meaning
start_at today First business day, MM/DD/YYYY.
end_at start_at Last business day, MM/DD/YYYY; must not be before start_at.
with_id 0 1 adds item_id, item_unit_id and item_sales_category_id to each row. Use it if you join rows to your own catalogue.
rc_id all Only checks from this revenue center.
service_area_ids all Comma-separated service area ids.
sub_category_ids all Comma-separated menu sub-category ids.
modifier_ids all Comma-separated modifier ids; only items sold with one of them.
sort_by item_name Any row field, e.g. qty or net_amount.
sort_direction desc asc or desc, applied with sort_by. Without sort_by rows are by name, A to Z.

Dates are business days in the restaurant’s timezone; see Money and timezones. Only closed checks count, and a check counts on the business day it was opened.

{
"success": true,
"restaurant_timezone": "America/New_York",
"items": [
{
"item_name": "Cold brew",
"item_unit": "Large",
"item_sales_category_name": "Beverages",
"qty": 182,
"item_price": 5.5,
"plate_cost": 1.12,
"gross_amount": 1001,
"gross_margin": 4.38,
"discount_amount": 38.5,
"discounted_price": 5.28,
"net_margin": 4.16,
"net_amount": 960.96,
"item_id": "64f0b3c4d5e6f70819203a4b",
"item_unit_id": "64f0b3c4d5e6f70819203a4c",
"item_sales_category_id": "64f0a9e8d7c6b5a493827160"
}
],
"start_at": "2026-10-01 04:00:00",
"end_at": "2026-11-01 03:59:59"
}

All amounts are dollars.

Field Meaning
qty Items sold, comped ones included.
item_price Menu price of one item.
plate_cost Cost of one item at the time of sale; 0 if the restaurant has not set one.
gross_amount qty × item_price.
gross_margin item_price − plate_cost, per item.
discount_amount All discounts on these items, in total.
discounted_price Price of one item after discounts, truncated to cents.
net_margin discounted_price − plate_cost, per item.
net_amount qty × discounted_price.

Rows are grouped by item, sales unit, price and plate cost at the time of sale, so an item whose price or cost changed within the range appears once per value.