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.
Request
Section titled “Request”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.
Response
Section titled “Response”{ "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.