Reports

Yielded sales report

Paginated list of every sale where a yield rule moved the price — up at peak, or down to fill quiet spells. Sales made when no rule applied (the implicit standard tier) are not included.

Each row is a snapshot taken at the time of sale: the rule, tier, fill rate, and baseline price are read from provenance stored when the price was resolved, never recomputed from the current rule or price configuration. Editing, renaming, or deleting a rule after a sale does not change how that sale reports.

Money fields are integers in the minor units of each row's currency. Totals are grouped per currency and are never summed across currencies. Rows whose status is refunded or cancelled stay in the list, flagged, but are excluded from the revenue and net-uplift totals so the numbers reconcile with other sales reports.

Results default to most recent sale first, tiebroken on id so ordering is stable when sales share a timestamp. The response also includes a CSV variant when requesting with Accept: text/csv; for large date ranges or background delivery use /shop/reports/yielded-sales/queue.

Requires the reports.view permission (reports.download for the CSV variant). Sites without the advanced_yield_management feature respond 404.

get/shop/reports/yielded-sales

Query parameters

site_idstring uuid required

Restrict the report to yielded sales at the given site.

pageinteger

The page to retrieve results from

per_pageinteger

The number of results to return per page

date_fromstring date
Example:2026-06-01

Restrict to sales made on or after this date, in the site's local timezone.

date_tostring date
Example:2026-06-30

Restrict to sales made on or before this date, in the site's local timezone.

searchstring
Example:massage

Restrict to sales whose order reference or offering name contains the given text, case-insensitively.

offering_idsstring[]

A comma-separated list of offering IDs to filter on.

offering_typesstring[]

A comma-separated list of offering types to filter on.

yield_rule_idsstring[]

A comma-separated list of yield rule IDs to filter on. Matches the rule recorded at the time of sale, so a rule that has since been deleted still matches its historical sales.

tiersstring[]

A comma-separated list of reporting tiers to filter on.

Response

The report was successfully generated.

Example response

{
  "data": [
    {
      "id": "60a8c0901d210625e3a87667",
      "basket_id": "60a8c0901d210625e3a87668",
      "order_ref": "TRY03",
      "status": "completed",
      "offering_name": "60 Minute Massage",
      "offering_exists": true,
      "yield_rule_exists": true,
      "adjustment": {
        "value": 15
      },
      "fill_rate_percent": 85,
      "currency": "GBP",
      "baseline_price": 5000,
      "price_paid": 5750,
      "delta_amount": 750,
      "delta_percent": 15
    }
  ],
  "meta": {
    "from": 1,
    "to": 2,
    "total": 2,
    "current_page": 1,
    "last_page": 2,
    "per_page": 15,
    "path": "http://example.com/api"
  },
  "links": {
    "first": "http://example.com?page=1",
    "next": "https://example.com?page=3",
    "prev": "https://example.com?page=1",
    "last": "https://example.com?page=4"
  },
  "totals": {
    "count": 342,
    "currencies": [
      {
        "currency": "GBP",
        "revenue": 1966500,
        "net_uplift": 256500,
        "tiers": [
          {
            "count": 120,
            "revenue": 690000,
            "net_uplift": 90000
          }
        ]
      }
    ]
  }
}

Changes