Skip to Content
YuzeDocs
Reports

List product sales

GET
/v1/reports/product-sales

Returns the quantity and value sold per product for a date range, like the dashboard product report. Needs reports:read. Voided and comped lines are counted in their own columns, not in quantity.

Authorization

bearerAuth
headerAuthorizationBearer <api_key>

Query Parameters

branchId?string

String. One branch id from List branches. A branch outside the key's branch list returns 403 branch_forbidden; an id that is not in your company returns 404. Left out: every branch the key can read.

Match^[A-Za-z0-9_-]{1,128}$
from?string

Date YYYY-MM-DD (a London day) or an ISO-8601 date-time with offset. Start of the range, included. Left out: 6 days before to.

to?string

Date YYYY-MM-DD (a London day, included) or an ISO-8601 date-time with offset (excluded). End of the range, at most 92 days after from. Left out: today in London.

groupBy?string

none or day. day adds a breakdown per London day. Left out: none.

Default"none"
Value in"none""day"
limit?integer

Integer, 1 to 500. Rows per page. Left out, 100.

Range1 <= value <= 500
Default100
cursor?string

String. pagination.nextCursor from the previous page, sent with the same filters. Left out: the first page.

Lengthlength <= 2048

Response Body

Product rows

application/json
  1. response
data*
pagination*
meta*
Example Request
curl -X GET 'https://europe-west2-fyre-pos.cloudfunctions.net/publicApi/v1/reports/product-sales?branchId=YOUR_BRANCH_ID&from=2026-11-11&to=2026-11-11&groupBy=none&limit=100'
Example Response
{  "data": {    "currency": "GBP",    "totals": {      "rows": 2,      "quantity": 14,      "grossSales": 98,      "discounts": 4,      "netSales": 94,      "voidedQuantity": 1    },    "rows": [      {        "name": "Margherita Pizza",        "productId": "prod_margherita",        "categoryId": "cat_mains",        "unitCost": 2.4,        "quantity": 8,        "grossSales": 80,        "discounts": 4,        "netSales": 76,        "voidedQuantity": 1,        "voidedAmount": 10,        "compedQuantity": 0,        "costOfGoodsSold": 19.2      },      {        "name": "Cola",        "productId": "prod_cola",        "categoryId": "cat_drinks",        "unitCost": 0.4,        "quantity": 6,        "grossSales": 18,        "discounts": 0,        "netSales": 18,        "voidedQuantity": 0,        "voidedAmount": 0,        "compedQuantity": 0,        "costOfGoodsSold": 2.4      }    ]  },  "pagination": {    "limit": 100,    "hasMore": false,    "nextCursor": null  },  "meta": {    "requestId": "6f1c2a9e-4b1d-4c4b-9d8e-0a1b2c3d4e5f",    "range": {      "from": "2026-11-11T00:00:00.000Z",      "to": "2026-11-12T00:00:00.000Z",      "fromInput": "2026-11-11",      "toInput": "2026-11-11",      "timezone": "Europe/London",      "toIsExclusive": true    },    "branchIds": "all",    "generatedAt": "2026-11-12T09:30:00.000Z"  }}