Daily Financial Summary
GET/api/v2/financials/daily-summary
Returns paginated daily financial summary rows. Each row is backed by a polymorphic reportable: a Product or a Financial Line Type.
reports:readGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Authentication: Requires Bearer token.
Filters (Spatie QueryBuilder syntax, filter[name]=value):
- filter[search] — searches product SKU/name and financial line type name/classification; numeric values also match row ID
- filter[date_from] / filter[date_to] — date range on the summary date (YYYY-MM-DD)
- filter[id] / filter[reportable_type] — exact match
- filter[financial_line_type.{operator}] — financial line type NAME on FinancialLineType-backed rows. The financial_line_type filter value can be a plain name ("Shipping") or a classification-qualified value ("Revenue: Shipping" / "Cost: Shipping") — line type names are only unique per classification, so the qualified form (which the application UI now sends) constrains both classification and name. Plain names still match across all classifications for backward compatibility. Advanced text filter operators (append to the filter name): is, is_not, contains, does_not_contain, is_one_of (comma-separated), starts_with, does_not_start_with, ends_with, does_not_end_with, is_empty, is_not_empty. Bare filter[financial_line_type]=value acts as implicit 'is'. Positive operators return only financial-line-type rows that match; negative operators (is_not, does_not_*) exclude matching line-type rows while keeping all other rows (e.g. product-backed rows).
- filter[classification.{operator}] — financial line type classification ('revenue' or 'cost'), same operators as above
- Numeric advanced filters on: id, quantity, quantity_returned, num_orders, revenue, revenue_allocated, revenue_credits, total_revenue, cost, cost_allocated, cost_invoices, cost_returned, total_cost, profit, profit_margin (operators: equals, not_equals, greater_than, greater_than_or_equal, less_than, less_than_or_equal, between, is_empty, is_not_empty)
- Date advanced filters on: date, created_at, updated_at
Sorting: sort param, prefix with - for DESC. Allowed sorts: id, date, quantity, num_orders, total_revenue, total_cost, profit, profit_margin, created_at, updated_at. Default: -date.
Pagination: page, per_page (default 15).
Grouped filters: this endpoint also accepts a filter_groups query param — a base64-encoded JSON tree with AND/OR conjunctions and nested groups (this is what the application UI advanced filters modal sends). Example JSON before encoding: {"conjunction":"and","children":[{"type":"condition","condition":{"column":"financial_line_type","operator":"is","value":"Shipping Revenue"}}]}. Conditions reference the same filter columns/operators listed above. When filter_groups is present, tree conditions are applied with proper parenthesization; flat filter[...] params still work for non-tree filters (search, date_from, date_to).
Request
Responses
- 200
- 401
- 403
- 429
OK
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.
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.