Getting Your Amazon FBA Sales Report Into a Readable Format

Most sellers don't realize Amazon doesn't give you a built-in "Top 10 Report" button. You have to pull data from the Business Reports dashboard or use the GetFlattenedReport endpoint in the Selling Partner API, then filter and format it yourself. I've been doing this since 2018, and the process hasn't changed much. Here's what actually works. It's not an official Amazon product. People use the term to describe a custom report that lists your top 10 best-selling SKUs by revenue, units sold, or profit margin, exported as a PDF. You can build one in a spreadsheet, run it through a PDF generator, or use third-party tools like Helium 10 or Jungle Scout if you don't want to maintain your own pipeline. The core data comes from the same two sources regardless of which path you take. Navigate to Reports > Business Reports. Set your date range to the last 30, 60, or 90 days depending on how fresh you need the numbers. Under the "Detail Page Sales and Traffic" or "Amazon Managed Commerce" section, you can export a spreadsheet. The raw file will contain every SKU with columns for ordered units, item sales, and sometimes refunded units. Import that into Google Sheets or Excel, sort by your metric of choice, and copy the top 10 into a clean layout. Export that sheet as PDF.

This takes roughly 15 to 25 minutes on a first attempt. Once you've built a template, it drops to about 5 minutes per run. The export itself is usually ready within 10 minutes of clicking the download button, but large catalogs can push that to 30 minutes or more.

The API Route for Automation

If you're doing this weekly, the spreadsheet method gets old fast. The Selling Partner API has a GetReport and CreateReport endpoint that accepts report type GET_FLATTENED_ORDER_REPORT or GET_V2_SETTLEMENT_REPORT_DATA_XML. You submit the report request, wait for the status to flip to DONE, then download the file. From there it's a simple script to parse the XML or TSV, aggregate by SKU, sort, and write a PDF using something like Python's reportlab or even a headless Chrome print-to-PDF approach. I built a Python script around this a while back. The bottleneck isn't the API call itself, which typically completes in under 2 minutes for a 90-day window, it's the polling loop waiting for report generation. Amazon's servers queue these, and during Q4 you'll see generation times stretch to 15 or 20 minutes. Factor in exponential backoff on your polling, and you're looking at a script that runs for about 20 minutes end-to-end during peak season.

Get the Full Details

Amazon FBA Beginner Guide | PDF
Amazon FBA Beginner Guide | PDF

A Real Problem I Ran Into

Last year I noticed my top 10 was consistently wrong. The report showed a certain SKU as my number one revenue generator, but when I cross-referenced it with the payments ledger, the numbers didn't match. The issue was that the Business Reports export includes pre-order and unshipped units in the ordered-quantity column. So a product that was heavily pre-ordered but hadn't actually shipped yet appeared as a top seller even though no money had moved. I fixed it by switching to the settlement report instead, which only reflects completed transactions, and filtering out any row where the shipment status wasn't shipped. That took my accuracy from roughly 73 percent to 99 percent on reconciliation checks. Here are the mistakes I see people make repeatedly. First, using a single date range without accounting for refund windows. A product that sold well in late December will show inflated numbers if you pull a report in early January before those refunds process. Second, ignoring multi-SKU variations. If you sell the same product in five sizes and each size has its own ASIN, your top 10 list might show five entries for essentially one product. Aggregate by parent ASIN if that's what matters to your business. Third, not deduplicating orders that appear in both the order report and the refund report. This doubles your revenue figure and makes the top 10 completely unreliable. The spreadsheet method falls apart if you have more than 5,000 active SKUs. Amazon's export will time out or truncate the file, and you'll end up with partial data that skews your ranking. The API route has its own ceiling. The report types I mentioned have a hard 90-day lookback window, so if you want year-over-year comparisons you'll need to make multiple requests and merge them yourself. There's also the issue of API throttling. New seller accounts get lower quota limits, and hitting the rate limit mid-script means losing your progress unless you've built in checkpoint saving.

If those constraints apply to you, a third-party tool like DataHawk or SellerBoard handles the aggregation and scheduling automatically, though you'll pay between $30 and $100 per month depending on the feature tier. For a one-person operation with under 2,000 SKUs, the manual method is perfectly fine. Beyond that, the automation pays for itself within the first month just in saved time.

Quick Setup Checklist

Start with the Business Reports export to validate your numbers. Compare the exported revenue against your actual bank deposits for one month. If the variance is under 5 percent, your data source is reliable. Build a single Excel template with your sorting logic and conditional formatting for the top 10. Once that's stable, move to the API if you need it weekly. Keep the template separate from your raw data exports so you don't accidentally overwrite anything. I use a simple folder structure: raw exports go into a dated subfolder, the template lives in a parent folder, and the final PDF goes into an archive subfolder named by month and year. The whole thing, once running smoothly, produces a clean PDF in about 3 minutes from trigger to file on disk. Most of the time people waste is on the first setup, which is where the real work happens.

Fba quick-start-guide | PDF
Fba quick-start-guide | PDF