---
title: "Commission breakdown report"
method: GET
path: "/shop/reports/commission-breakdown"
tags: ["Reports"]
---

# Commission breakdown report

`GET /shop/reports/commission-breakdown`

Returns a paginated, item-level breakdown of commission earned by practitioners
at the requested site for the given period. Each row represents a single sold
item and includes the offering, the commission rate applied, and the resulting
commission and surcharge amounts. Money fields are decimal strings in the site's
currency (rather than minor-unit integers) to preserve the precision of the
underlying commission calculation.

For background CSV delivery use
[`/shop/reports/commission-breakdown/queue`](/endpoints/Reports#queueCommissionBreakdownExport).

## Query parameters

- `site_id` string, required
- `date_from` string, date, required
- `date_to` string, date, required
- `practitioner_id` string, uuid
- `earner_id` string
- `earner_type` 'practitioner' | 'user'
- `page` integer
- `per_page` integer

## Response `200`

The report was successfully generated.

- CommissionBreakdownResponse
  - `data` CommissionBreakdownRow[], required
    - `practitioner_id` string, object-id, nullable, required — The unique identifier of the practitioner. Deprecated: kept for backwards compatibility and only populated when `earner_type` is `practitioner`. Prefer `earner_id`, which also covers rows earned by a plain `User` under a `sold` attribution rate.
    - `practitioner_name` string, nullable, required — The practitioner's name, or "Unknown" if their record has been removed. Deprecated: kept for backwards compatibility and only populated when `earner_type` is `practitioner`. Prefer `earner_name`.
    - `earner_id` string, required — The unique identifier of the entity that earned commission on this item — a `Practitioner` for a `performed` rate, or a `Practitioner` or `User` for a `sold` rate, depending on who is recorded as the basket item's `sold_by` attribution.
    - `earner_name` string, required — The earner's name, or "Unknown" if their record has been removed.
    - `earner_type` 'practitioner' | 'user', required — Discriminator indicating which underlying entity `earner_id` refers to.
    - `attribution` 'performed' | 'sold', required — Which side of the sale the commission rate applied to this item rewarded — the practitioner who performed the service, or whoever is recorded as the item's `sold_by` attribution.
    - `period_from` string, date, nullable, required — Start of the commission period this item falls within.
    - `period_to` string, date, nullable, required — End of the commission period this item falls within.
    - `basket_item_id` string, object-id, required — The unique identifier of the basket item.
    - `basket_id` string, object-id, required — The unique identifier of the basket this item was in.
    - `order_ref` string, required — The order reference for the order containing this item.
    - `customer_name` string, nullable, required — The customer's name as it appeared on the basket when the commission was generated. `null` when the basket had no customer attached (e.g. a walk-in). Snapshotted at generation time so a later customer rename or removal doesn't alter historical rows.
    - `offering_name` string, required — The name of the offering that was sold.
    - `offering_type` string, required — The type of offering (e.g. `appointment`, `session`).
    - `item_date` string, date, nullable, required — The date the item took place.
    - `item_price` integer, required — The price of the individual item, in the site currency's minor unit.
    - `item_total_cost` integer, required — The total cost of the item used as the commission base, in the site currency's minor unit.
    - `rate_type` 'percentage' | 'flat', required — Whether the rate applied to this item paid a `percentage` of its value or a `flat_amount` per item.
    - `rate_percentage` number, nullable, required — The commission rate percentage applied to this item. `null` when `rate_type` is `flat`.
    - `rate_flat_amount` integer, nullable, required — The flat commission amount applied to this item, in the site currency's minor unit. `null` when `rate_type` is `percentage`.
    - `commission_amount` integer, required — The net commission earned on this item, in the site currency's minor unit.
    - `surcharge_amount` integer, required — Any commission surcharge applied to this item, in the site currency's minor unit.
    - `total_commission` integer, required — The total commission for this item including any surcharge, in the site currency's minor unit.
    - `currency` string, required
  - `meta` PaginationMeta, required — Counts and positional information for the current page of a list response. Use `current_page` and `last_page` to drive pagination UI, `total` for result counts, and `per_page` to confirm the page size the server actually applied (which may differ from the requested value when capped).
    - `from` integer, required — The item number from which this results set starts from
    - `to` integer, required — The item number from which this results set ends at
    - `total` integer, required — The total number of results
    - `current_page` integer, required — The current page number
    - `last_page` integer, required — The page number of the last result set
    - `per_page` integer, required — The number of results per page
    - `path` string, required — The path of this api request

## Other responses

- `400` — The request failed.

---

[API](https://skmtc.dev/try/apis/trybe-api.md) · [All operations](https://skmtc.dev/try/apis/trybe-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/try/trybe-api/revisions/f37f92702da5/schema)
