Reporting
Ship By Schedule
Returns ship-by schedule report data showing orders that need to be shipped by specific dates.
Get Inventory Planning Report
Returns a paginated inventory planning report with replenishment data per product. Supports warehouse filtering via filter[warehouse_id], filter[warehouse_id][is], or base64-encoded filter_groups tree.
Get Inventory Planning Summary
Returns summary metrics for the inventory planning report header cards (counts of items at risk, overstocked, out of stock, etc.).
Export Inventory Planning Report
Exports the inventory planning report as CSV or XLSX. Supports column selection and warehouse filtering.
Refresh Velocity Data
Dispatches a tracked background job to recompute product velocity cache and supplier lead time reliability. Returns a tracked_job_log_id for monitoring via the tracked job log endpoints.
Refresh Sales Financials
Dispatches a tracked background job to refresh sales financials data used by the inventory planning report. Returns a tracked_job_log_id for monitoring via the tracked job log endpoints.
Create Draft PO from Planning
Creates a draft purchase order from reorder suggestions in the inventory planning report.
List Scheduled Reports
Returns all scheduled reports for the authenticated user for the inventory_planning report type.
Create Scheduled Report
Creates a new scheduled inventory planning report for the authenticated user.
Delete Scheduled Report
Deletes a scheduled report. Only the owner can delete their own scheduled reports.
Get Profitability Trend
Returns trend data (per-interval metrics) grouped by a dimension. When indirect costs are included (default), per-interval total cost and profit reflect cost-entry allocations; period allocations are day-prorated across intervals. Margin-ladder metrics are available: gross_profit / gross_margin (revenue minus COGS), contribution_margin / contribution_margin_pct (after channel and indirect costs), plus ad_spend and tacos for sku, brand, and supplier groupings.
Get Profitability Cost Breakdown
Returns cost breakdown rows per dimension with financial line type columns, indirect costs (cost-entry allocations), and the margin ladder: gross_profit / gross_margin, contribution_margin / contribution_margin_pct, and company-level operating_profit (contribution margin minus unallocated indirect costs).
Get Profitability Drilldown
Returns paginated order-level drilldown for a specific dimension value, showing revenue, COGS, total cost, profit, and margin per order. Includes financial line type column values when flt_ids[] is provided.
Get Order Breakdown
Returns a full financial breakdown for a single order, including all line items, COGS, allocated costs, and financial line type values.
Get Financial Line Types
Returns all financial line types configured for the current tenant. Used to populate the drilldown column selector.
List Indirect Cost Types
Lists the indirect cost types that have cost-entry allocation activity inside the report window, with allocated totals. Drives the per-type breakdown columns and the indirect cost type filter. Type id 0 represents allocations whose cost entry has no type (Uncategorized).
Get Indirect Cost Drilldown
Itemizes the cost-entry activity behind a Profitability Report figure.
Get Contribution Margin Summary
Contribution margin measures profitability after both cost of goods sold and allocated operating costs:
Get Contribution Margin by Product
Contribution margin measures profitability after both cost of goods sold and allocated operating costs:
Get Contribution Margin by Brand
Contribution margin measures profitability after both cost of goods sold and allocated operating costs:
Get Contribution Margin by Supplier
Contribution margin measures profitability after both cost of goods sold and allocated operating costs:
Get Contribution Margin by Sales Channel
Contribution margin measures profitability after both cost of goods sold and allocated operating costs:
Get Top Products by Contribution Margin
Contribution margin measures profitability after both cost of goods sold and allocated operating costs:
List Unprofitable Products
Contribution margin measures profitability after both cost of goods sold and allocated operating costs:
Get Contribution Margin Cost Analysis
Contribution margin measures profitability after both cost of goods sold and allocated operating costs:
Get Sales Tax Liability
Sales Tax Liability Report: tax collected and sales aggregated by destination jurisdiction (country + region), with a taxable / non-taxable split and Net Tax (tax collected minus refunded tax from credits). Amounts are converted to the tenant base currency.
Get Sales Tax Transactions (Drill-Down)
Paginated transaction drill-down behind a single jurisdiction row of the liability report. Returns the underlying orders and credits (credit amounts are negative) that compose the aggregated row, filtered by the same parameters plus the selected province_code / country_code.
Export Sales Tax Liability
Exports the Sales Tax Liability Report as a downloadable file (CSV, XLSX, or PDF). Accepts the same filter parameters as the liability report. The response is a binary file download (Content-Type varies: text/csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, or application/pdf), not JSON. Columns: Country, Region, Region Code, In-State, Orders, Gross Sales, Taxable Sales, Non-Taxable Sales, Tax Collected, Refunded Tax, Net Tax, with a trailing TOTAL row.
Get Channel Tax Responsibility
Lists every sales channel (integration instance) with its resolved tax-collection responsibility for the Sales Tax Liability Report (Phase 2). Each channel is classified as `seller` (Seller-collected) or `marketplace_facilitator` (Marketplace facilitator).
Update Channel Tax Responsibility
Overrides a single sales channel's tax-collection responsibility (Phase 2). Saving an override sets `source` to override and `is_default` to false for that channel; it persists to integration_instances.tax_collection_responsibility and immediately affects the responsibility / state_responsibility lenses of the Sales Tax Liability Report.
Get Economic Nexus Exposure
Economic Nexus Monitoring dashboard (Phase 3). Returns one row per destination jurisdiction (state/region) with measured sales and transaction counts compared against that jurisdiction's configured economic-nexus threshold, a computed status, and the percent-of-threshold.
Recompute Economic Nexus Exposure
Dispatches the 'Recompute Nexus Exposure' tracked background job (Phase 3), which measures sales by jurisdiction and refreshes the per-tenant nexus exposure cache read by GET /api/reporting/sales-tax/nexus. Progress is reported through the tracked job log endpoints.
List Economic Nexus Thresholds
Lists every configured economic-nexus threshold (Phase 3) — one per jurisdiction. Each threshold defines the dollar amount and/or transaction count, how they combine (threshold_logic), the measurement window, and whether marketplace-facilitated and exempt sales count toward the measured volume.
Update Economic Nexus Threshold
Updates a single jurisdiction's economic-nexus threshold config (Phase 3). All fields are optional; only the supplied fields change.
List Sales-Tax Registrations
Lists every sales-tax registration record (Phase 3). A registered jurisdiction is reported on the nexus dashboard with a 'registered' status regardless of measured volume (registration override).
Create Sales-Tax Registration
Creates a sales-tax registration record for a jurisdiction (Phase 3). The country+region pair must be unique.
Update Sales-Tax Registration
Updates an existing sales-tax registration record (Phase 3). The jurisdiction (country + region) is fixed once created; only the registration details and status may change. All fields are optional.
Delete Sales-Tax Registration
Deletes a sales-tax registration record (Phase 3). The jurisdiction reverts to volume-based status on the nexus dashboard.
Get Inventory Valuation
Returns the inventory valuation report summary grouped by warehouse/category.
Export Inventory Valuation
Streams the inventory valuation report as a CSV file download (Content-Type text/csv, attachment inventory-valuation.csv).
Get Inventory Valuation Drilldown by Category
Returns inventory valuation broken down by category.
Get Inventory Valuation Drilldown by Source
Returns inventory valuation broken down by source (purchase order, initial inventory, etc.).
Get Inventory Valuation Drilldown by Transactions
Returns inventory valuation broken down by individual inventory transactions.
Get Realtime Inventory
Returns real-time inventory levels per product per warehouse. Supports both application UI format (filter[search], filter[warehouse_id]) and legacy Vue 2 format (search, warehouse_id) — both are auto-normalized.
Get Realtime Inventory Summary
Returns aggregate summary totals for the realtime inventory report.
Export Realtime Inventory
Exports real-time inventory data as a CSV file. Columns: SKU, Product Name, Warehouse, Available, Allocated, On Hold, In Transit, Total, Inbound, Projected Total.
Get Financials by Brand
Returns financial summary data grouped by brand.
Get Financials by SKU
Returns financial summary data grouped by SKU/product.
Get Financials by Supplier
Returns financial summary data grouped by supplier.
Get Financials by Sales Channel
Returns financial summary data grouped by sales channel.
Get Financials by Sub-Sales Channel
Returns financial summary data grouped by sub-sales channel.
Get Financials by Product Type
Returns financial summary data grouped by product type (standard, blemished, kit).
Get Monthly COGS
Returns monthly COGS (cost of goods sold) data for a specific year.
Get Purchase Summary by Period
Returns a summary of purchases grouped by period (month or year).
Get Accounting COGS
Returns accounting COGS report data including average cost, quantities sold/returned/adjusted, and COGS totals (gross, returned, adjusted, net).
Get Accounting COGS Drilldown
Underlying movements behind one COGS report row — the individual `accounting_cogs` view rows (sales fulfillments, customer returns, inventory adjustments, FBA movements) that compose the clicked group/SKU aggregate. Paginated, sortable, searchable, with a `totals` block that reconciles to the report row that opened it (same 9 metrics).
Export Accounting COGS
Exports accounting COGS report as a CSV file. group_by[] determines which extra columns appear before the metric columns (Avg Cost, Qty Sold, Qty Returned, Qty Adjusted, Net Qty, Gross COGS, Returned COGS, Adjusted COGS, Net COGS).
Get GINR Report (Prepaid Inventory)
Returns the Goods In Not Received (GINR) / prepaid inventory report — purchase invoices paid but not yet received into inventory.
Get GINR Balance
GINR (Goods Invoiced, Not Received) — also called Accrued Purchases or GRNI — tracks the value of goods that suppliers have invoiced but that have not yet been received into inventory. The balance is calculated as: invoiced − received + discrepancies − adjustments, accumulated from the account's inventory start date (so it behaves like a balance-sheet figure, not a period movement).
Get GINR Trend
GINR (Goods Invoiced, Not Received) — also called Accrued Purchases or GRNI — tracks the value of goods that suppliers have invoiced but that have not yet been received into inventory. The balance is calculated as: invoiced − received + discrepancies − adjustments, accumulated from the account's inventory start date (so it behaves like a balance-sheet figure, not a period movement).
Get GINR Breakdown
GINR (Goods Invoiced, Not Received) — also called Accrued Purchases or GRNI — tracks the value of goods that suppliers have invoiced but that have not yet been received into inventory. The balance is calculated as: invoiced − received + discrepancies − adjustments, accumulated from the account's inventory start date (so it behaves like a balance-sheet figure, not a period movement).
Get GINR Aging
GINR (Goods Invoiced, Not Received) — also called Accrued Purchases or GRNI — tracks the value of goods that suppliers have invoiced but that have not yet been received into inventory. The balance is calculated as: invoiced − received + discrepancies − adjustments, accumulated from the account's inventory start date (so it behaves like a balance-sheet figure, not a period movement).
Get GINR Aging Drilldown
GINR (Goods Invoiced, Not Received) — also called Accrued Purchases or GRNI — tracks the value of goods that suppliers have invoiced but that have not yet been received into inventory. The balance is calculated as: invoiced − received + discrepancies − adjustments, accumulated from the account's inventory start date (so it behaves like a balance-sheet figure, not a period movement).
Get GINR Drilldown
GINR (Goods Invoiced, Not Received) — also called Accrued Purchases or GRNI — tracks the value of goods that suppliers have invoiced but that have not yet been received into inventory. The balance is calculated as: invoiced − received + discrepancies − adjustments, accumulated from the account's inventory start date (so it behaves like a balance-sheet figure, not a period movement).
Get GINR PO Receipts
GINR (Goods Invoiced, Not Received) — also called Accrued Purchases or GRNI — tracks the value of goods that suppliers have invoiced but that have not yet been received into inventory. The balance is calculated as: invoiced − received + discrepancies − adjustments, accumulated from the account's inventory start date (so it behaves like a balance-sheet figure, not a period movement).
Get Accounting Income Statement
Returns an income statement grouped by accounting nominal codes and period. Supports date filtering and period granularity.
Get Accounting Balance Sheet
Returns a balance sheet snapshot as of a date, built from the same accounting_transaction_lines data source as the income statement so the two reconcile.
Get Sales Channel Coverage
Returns paginated sales channel coverage data per product using Spatie QueryBuilder. Shows which products are listed on which sales channels.
Get Full Sales Channel Coverage
Returns listing coverage for every product across the selected sales channels in a single unpaginated response. For each product you get its stock on hand, inventory valuation, default supplier, and a coverage map keyed by channel name plus a Total.
Export Sales Channel Coverage (Async)
Dispatches an async job (a background job) that builds the full unpaginated sales channel coverage CSV in the background. Returns immediately with a tracked_job_log_id that the frontend uses to poll progress via the tracked job log endpoints.
Get Release Schedule
Forward-looking release schedule for held sales orders. Returns held orders (those with a future hold_until_date — a 'do not ship before' release date, used for preorders and scheduled holds) grouped by the application-timezone date on which they become shippable.
Get Supplier Overview
Macro supplier dashboard for the resolved period: headline KPIs (purchase volume, sales volume, profit, active suppliers), the hottest/coldest movers, a 12-month growth heatmap, and the full leaderboard. KPIs and trends are read from monthly supplier metric snapshots.
Get Supplier Leaderboard
Leaderboard rows only — a lightweight endpoint for table page/sort changes on the macro supplier view, without recomputing KPIs, movers, or the heatmap. Rows are computed in-memory from snapshots, then filtered, sorted and sliced; low-volume suppliers are flagged via is_low_volume.
Rebuild Supplier Metric Snapshots
Dispatches the supplier-metric snapshot rebuild as a tracked background job and returns its tracked job log ID for progress polling via the tracked job log endpoints. Rejects a second dispatch with 409 while a rebuild is already queued or running.
Get Supplier Scorecard Settings
Returns the tenant-global supplier scorecard configuration: the six dimension weights (sum to 100), the ordered {min, score} threshold bands per dimension, and the minimum in-period PO count required before a supplier is scored. A default row is created on first access if none exists.
Update Supplier Scorecard Settings
Updates the tenant-global supplier scorecard configuration. The six weights must each be present and sum to exactly 100; every threshold band needs a numeric min and an integer 1-5 score.
Get Supplier Scorecard Summary
Lightweight scorecard + volume sparklines for the supplier Profile chip. Returns the composite scorecard with its dimension breakdown, a directional composite trend hint (up | down | flat), and trailing-12-month purchase/sales volume sparklines. The period is fixed to YoY.
Get Supplier Analytics
Full per-supplier analytics for the Analytics tab: headline KPIs (purchase volume, sales volume, units purchased/sold, profit, margin %), the composite scorecard, a dual-line current-vs-previous trend chart, and the hottest/coolest products ranked by growth.
Get Supplier Product Breakdown
Paginated, sortable per-product breakdown for one supplier (Analytics-tab product table). Each row carries units, purchase/sales volume, profit, margin %, sell-through %, landed unit cost, the landed-cost trend direction (cost_trend), and period-over-period growth %.
Get Supplier Product Drilldown
Single-product drill-down for one supplier: current vs previous purchase/sales totals, a landed-cost-per-receipt trend, and the list of alternate suppliers carrying the same SKU with their cost, lead time and reliability.
Get Supplier PO History
Recent purchase orders for one supplier — backs the 'Recent Purchase Orders' mini-table on the supplier Analytics tab. Returns up to the 10 most recent non-draft purchase orders ordered by purchase order date (DESC), each with its receipt status and an on-time flag.
Get Supplier Scorecard
Standalone composite scorecard for a supplier over the resolved period — the composite, its band, and the per-dimension breakdown.
Get Product Overview
Macro product dashboard for the resolved period: headline KPIs (sales volume, units sold, profit, active products), the hottest/coldest movers, a 12-month growth heatmap, and the full leaderboard. KPIs and trends are read from monthly product metric snapshots.
Get Product Leaderboard
Server-paginated, sortable product leaderboard for the resolved period — used when the macro dashboard's leaderboard table changes page or sort. Returns the standard Laravel pagination envelope.
Rebuild Product Metric Snapshots
Dispatches the product-metric snapshot rebuild as a tracked background job and returns its tracked job log ID for progress polling via the tracked job log endpoints. The rebuild recomputes per-channel sales snapshots first, then derives the per-product snapshots by summation. Rejects a second dispatch with 409 while a rebuild is already queued or running.
Get Product Scorecard Settings
Returns the tenant's product scorecard configuration: the six dimension weights (must sum to 100), the threshold bands that map a raw metric value to a 1–5 score, and min_so_count — the minimum sales-order count before a product is scored.
Update Product Scorecard Settings
Updates the tenant's product scorecard configuration.
Get Product Scorecard Summary
Lightweight scorecard payload for the product Profile-tab performance chip: the composite scorecard, a directional trend hint (up | flat | down) and two short volume sparklines (sales volume and units sold).
Get Product Stock Coverage
Daily Average Consumption (DAC) and Days of Stock reconstructed as a 12-month monthly time series for a product. No history is stored for either metric, so both are rebuilt from source ledgers: DAC at each month is gross units sold over the trailing sales-history window divided by that window length; on-hand at each month is the running balance of stock movements up to that month; Days of Stock is on-hand divided by DAC (null when DAC is 0, i.e. coverage is effectively infinite).
Export Product Stock Coverage
Download the month-by-month Stock Coverage series as a spreadsheet. Columns: Month, Units Sold (that calendar month), DAC (units/day, trailing-window daily average), On Hand (month-end), Days of Stock (on-hand / DAC). Honors the same 'months' span as the JSON endpoint.
Get Product Analytics
Full per-product analytics for the Analytics tab: period KPIs (sales volume, units sold, profit, margin), the computed scorecard, a monthly trend series, the hottest/coolest sales channels, a per-channel growth heatmap and recent orders.
Get Product Channel Breakdown
Server-paginated, sortable per-sales-channel breakdown for one product — the Channels tab table. Each row carries the channel's units, sales volume, profit, order count, average order value, margin, return rate, share of the product's sales and period-over-period growth. Channel-grain data is sales-side only (purchasing is not channel-attributable).
Get Product Channel Drilldown
Single-channel drill-down for one product: the channel's current and previous-period totals, the product's whole-period totals for a share comparison, and recent orders placed on that channel.
Get Product Scorecard
Standalone computed scorecard for one product — the composite, its band and the per-dimension breakdown. Used by the Scorecard Settings live preview.
Get Brand Overview
Macro brand dashboard for the resolved period: headline KPIs (purchase volume, sales volume, profit, active brands), the hottest/coldest movers, a 12-month growth heatmap, and the full leaderboard. KPIs and trends are read from monthly brand metric snapshots.
Get Brand Leaderboard
Leaderboard rows only — a lightweight endpoint for table page/sort changes on the macro brand view, without recomputing KPIs, movers, or the heatmap. Rows are computed in-memory from snapshots, then filtered, sorted and sliced; low-volume brands are flagged via is_low_volume.
Rebuild Brand Metric Snapshots
Dispatches the brand-metric snapshot rebuild as a tracked background job and returns its tracked job log ID for progress polling via the tracked job log endpoints. Rejects a second dispatch with 409 while a rebuild is already queued or running.
Get Brand Scorecard Settings
Returns the tenant-global brand scorecard configuration: the six dimension weights (sum to 100), the ordered {min, score} threshold bands per dimension, and the minimum in-period PO count required before a brand is scored. A default row is created on first access if none exists.
Update Brand Scorecard Settings
Updates the tenant-global brand scorecard configuration. The six weights must each be present and sum to exactly 100; every threshold band needs a numeric min and an integer 1-5 score.
Get Brand Scorecard Summary
Lightweight scorecard + volume sparklines for the brand Profile chip. Returns the composite scorecard with its dimension breakdown, a directional composite trend hint (up | down | flat), and trailing-12-month purchase/sales volume sparklines. The period is fixed to YoY.
Get Brand Analytics
Full per-brand analytics for the Analytics tab: headline KPIs (purchase volume, sales volume, units purchased/sold, profit, margin %), the composite scorecard, a dual-line current-vs-previous trend chart, and the hottest/coolest products ranked by growth.
Get Brand Product Breakdown
Paginated, sortable per-product breakdown for one brand (Analytics-tab product table). Each row carries units, purchase/sales volume, profit, margin %, sell-through %, landed unit cost, the landed-cost trend direction (cost_trend), and period-over-period growth %.
Get Brand Product Drilldown
Single-product drill-down for one brand: current vs previous purchase/sales totals, a landed-cost-per-receipt trend, and the list of suppliers carrying the same SKU with their cost, lead time and reliability.
Get Brand PO History
Recent purchase orders containing one brand's products — backs the 'Recent Purchase Orders' mini-table on the brand Analytics tab. Returns up to the 10 most recent non-draft purchase orders ordered by purchase order date (DESC), each with its receipt status and an on-time flag.
Get Brand Scorecard
Standalone composite scorecard for a brand over the resolved period — the composite, its band, and the per-dimension breakdown.
Get Product Data Health Metrics
Aggregated product data-health metrics for the Product Data Health dashboard: product-type distribution, active/archived breakdown, unit-cost health (>0 / =0 / null), brand and supplier coverage, supplier-price health, kit/bundle component gaps, pricing coverage, image health, and sales-channel mapping coverage.
Check Image Health
Dispatch the on-demand image-health check job. The job re-validates every product image — local (disk) images are checked for existence on their storage disk, remote (URL) images via an HTTP request — records the result on each product image (resolvable + checked-at), and surfaces progress through the tracked job log endpoints.
Sales by Source Type (POS vs Online)
Omnichannel sales segmented by sub-sales-channel source type (in-store / Point of Sale vs online vs marketplace). Integration-agnostic — aggregates Shopify POS, Square, and any classified source. Returns per-segment order_count, units, line revenue, plus point_of_sale_total and online_total. Optional date_from/date_to (Y-m-d). Authenticate with a Personal Access Token.
List Supplier IRR Ranking
Rank every supplier by the pooled internal rate of return on the cash deployed with them.
List Product IRR Ranking
Rank every product by the internal rate of return on its purchasing cash flows (each order's flows prorated to the product by its cost share of the order).
List Supplier Product IRR Breakdown
For one supplier, return its own pooled IRR (in `supplier`) plus every product purchased from it, ranked by IRR.
List Supplier Reconciliation Events
The bulk stock-take write-off events behind a supplier's reconciliation figure, grouped by stock-take (largest first) with per-product lines. Each event carries the stock-take date, warehouse, status, mode (full_count or adjustment), variance direction, units, and cost value, plus a link to the stock-take record. Use to see exactly which physical counts wrote off inventory.
List Product Reconciliation Events
The bulk stock-take write-off events behind a product's reconciliation figure, grouped by stock-take (largest first). Each event carries the stock-take date, warehouse, status, mode, variance direction, units, and cost value, plus a link to the stock-take record.
Get Supplier Cash-Flow Proof
The full proof behind a supplier's pooled return: the pooled metrics, a monthly cash-flow shape (money-in/out + running cumulative for charts), the dated cash-flow ledger (every flow the MIRR is solved on, each linked to its source document), and a per-purchase-order contribution breakdown.
Get Product Cash-Flow Proof
The full proof behind a product's pooled return (cash flows prorated to the product's cost share of each order): pooled metrics, monthly cash-flow shape, the dated ledger, and per-purchase-order breakdown.
Refresh IRR Metrics
Recompute every eligible purchase order's return metric in the background so the supplier and product IRR leaderboards reflect fresh figures. The leaderboards read these persisted metrics, so a refresh is what updates `last_refreshed_at` and clears any pending (not-yet-computed) purchase orders.
List Supplier Pickup Orders
Paginated Supplier Pickup Orders report — one row per drop-ship purchase-order line whose requested shipping method is a supplier pickup (vendor will-call), so a customer collects the goods directly from the merchant's supplier. Each row carries COGS (from the purchase-order line), revenue (from the matching sales-order line), margin, the customer, the supplier, the pickup location, and the derived pickup status.
Get Supplier Pickup Summary
KPI summary totals for the Supplier Pickup Orders report header cards. Honours the same filters as the list endpoint (search, customer_id, supplier_id, warehouse_id, customer_tag, and the advanced filter_groups) EXCEPT status, which is ignored so both the awaiting and picked-up buckets are always represented.