Get Top Products by Contribution Margin
GET/api/reporting/contribution-margin/top-products
Contribution margin measures profitability after both cost of goods sold and allocated operating costs:
- Gross Profit = Revenue − COGS
- Contribution Dollars = Gross Profit − Allocated Costs
- Contribution Margin % = Contribution Dollars ÷ Revenue × 100
reports:readGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Revenue and COGS come from per-order-line financial records that are kept current by background financial calculations. Allocated costs come from the cost allocation system (cost entries prorated across products, orders, brands, suppliers, or sales channels).
Returns the products ranked by contribution dollars (gross profit minus allocated costs). Use order=desc (default) for your biggest profit contributors, or order=asc to surface the weakest performers. Each product row has the same shape as the by-product report lines, including SKU, brand, and default supplier.
Ranking note: candidates are drawn from the top revenue-generating products (twice the requested limit) before being re-ranked by contribution dollars, so a low-revenue product with very high margin can occasionally fall outside the candidate pool.
Date filtering: date_from and date_to must BOTH be provided for date filtering to apply — if either is omitted the report covers all available history. Sales figures are filtered by order date; allocated costs are matched by their allocation period when one is set (any overlap with the requested range counts), otherwise by their allocation date.
Authentication: Requires Bearer token. Scope: reports (read/write).
Request
Responses
- 200
- 401
- 403
- 422
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Unprocessable Entity
Response Headers
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.