Amazon SKU profit dashboard with every Amazon fee broken out

By General Input

See what each Amazon SKU actually earns after referral fees, FBA fees, storage, refunds and promotions, with the loss makers sitting on top.

Integrations

  • Amazon Seller Partner
  • Google Sheets

Type

App

Categories

  • Finance
  • Operations

Build me an app that my finance lead and I open every week to see what each Amazon SKU actually earns after Amazon takes its cut. Seller Central shows revenue and fees in separate places and never calculates profit, so today we export several reports and join them by SKU in a spreadsheet. This app should do that join for us and be the single screen we work out of.

The main screen is a profit table for a date range I select, with one row per SKU. Each row shows units sold, gross sales, every Amazon deduction broken out into its own column (referral fee, FBA fulfilment fee, storage fee, refunds, promotions), my cost of goods for the units sold, and net margin in both dollars and percent. Default the table to sort loss making SKUs on top, worst margin first, so the products quietly costing me money are the first thing I see. Keep the other sort options available by clicking column headers. Give me a date range picker at the top that defaults to the last full calendar month.

For the data: handlers pull the money side from Amazon Seller Partner List Financial Events for the selected range, and unit counts from Amazon Seller Partner Search Orders over the same range. Read my per unit cost of goods from a Google Sheets tab using Get Values, where the sheet has one row per SKU with the SKU in one column and the unit cost in another. Also call Amazon Seller Partner Get Inventory Summaries so that for any losing SKU I can see how many units are still sitting in FBA, shown as a column or in the row detail.

Important build nuances. List Financial Events caps at a 180 day span, so any range longer than that has to be chunked into sequential calls and the results merged. It is rate limited to 0.5 requests per second with a burst of 30, so fetch the financial events once for the whole range and cache the result in the view, then compute every row from that cached data. Never refetch per row or per SKU. Financial events come back as event type groups such as ShipmentEventList, RefundEventList and ServiceFeeEventList, each containing fee and charge components, so the handler needs to walk those groups and roll the amounts up by SellerSKU to produce one set of totals per SKU.

Handle missing cost of goods explicitly. If a SKU has no cost on file in the sheet, render a visible COGS missing state on that row instead of computing margin as if cost were zero. A SKU showing 100 percent margin because nobody entered a cost is the most common way these dashboards mislead people, so those rows should look obviously incomplete and should not be mixed into the loss making sort as if they were profitable. Also label the margin column as pre ad margin throughout the app, since Amazon's financial data does not include advertising spend and I do not want anyone reading this as a fully loaded number. A short note near the table explaining that advertising is excluded is enough.

Clicking a SKU opens a drill down showing every individual fee event behind that row, listed with date, order or transaction reference, event type and amount, grouped by fee category. This is how I tell why margin moved on a given SKU, so keep the individual events visible rather than only showing subtotals. Include that SKU's current FBA inventory position in the drill down as well.

I need to be able to edit a SKU's cost of goods inline in the table. When I save an edit, the app persists the new value in its own storage so the table updates immediately, and writes the same value back to the source spreadsheet using Google Sheets Update Values so the sheet my team already uses stays correct. Show a clear saved state and surface an error if the sheet write fails rather than silently diverging.

Add an Export button that appends the current view, exactly as filtered and sorted, as a dated snapshot to a Google Sheets tab using Append Values, so my accountant has a running record of each period we reviewed. Include the date range and the export date on every appended row.

Finally, let me flag SKUs to watch. Flagged SKUs are pinned to the top of the table and stay flagged across sessions, stored per user so my finance lead and I can watch different products. Cost of goods edits are shared since they live in the spreadsheet, but the watch flags are personal.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seatsBuild audience segments from product usage and push to LoopsTurn the people who engage with your posts into Pipedrive leads