Why your KDP and Amazon Ads reports never agree
Four purchases in one report. Three units in another. A third screen says two. Nothing is broken — you're reading four systems that were never designed to agree.
This is the thing that makes authors give up on tracking their advertising. You open the ads console, then your KDP dashboard, then a monthly statement, and every one of them tells you something slightly different about the same books. It feels like one of them must be wrong.
None of them is. They're counting different things, on different clocks, with different rules about when a sale becomes real. Once you know the four reasons, the numbers stop being maddening and start being useful.
Reason one: they use different clocks
Amazon credits an ad-attributed sale to the day of the click, not the day of the purchase. Someone clicks your ad on the 30th, thinks about it, and buys on the 2nd — the ads console files that sale under the 30th. Your royalty report files it under the month it was actually earned.
Print books add a third date. Here is a real pair of rows from a KDP paperback report: an order placed on the 17th, with its royalty date recorded as the 21st. Physical books post their royalty when they're printed and shipped, not when the customer clicks buy. So the same sale can legitimately appear in June in one report and July in another.
Ads console: click date
KDP royalty report: royalty date
KDP orders report: order date
Kindle Unlimited page reads: recorded on UTC, while order dates follow
the marketplace's local time
Four clocks, one bookshelf. Near a month boundary they will disagree, and all of them will be right.
Reason two: they count different populations
The ads console only counts sales it attributes to your ads, inside a fixed attribution window — click, then buy within roughly a fortnight, or the ad gets no credit. Your KDP reports count every sale of the book regardless of what caused it.
So the ads console is a subset, but not a clean one. It misses:
- Organic sales your ads helped cause but couldn't prove
- Purchases made after the attribution window closes
- Sales to someone who saw your ad, didn't click, and searched for you later
And it includes something your royalty report doesn't recognise: a borrow is not a sale. If your book is in Kindle Unlimited, a reader who borrows after clicking your ad shows up as zero revenue in the ads console while the click still costs you money. The page-read income lands in a completely separate report.
This is why the same campaign can look like a disaster in one place and a success in another. It isn't a discrepancy so much as two honest answers to two different questions.
Reason three: the numbers are still moving
Attribution keeps adjusting for roughly two days after the fact. Pull the same report twice and you can get two answers.
I ran into this while building a reconciliation tool. I exported a campaign report, then thirteen hours later exported an advertised-product report covering the identical campaign and date range. The first said $38.68 of spend. The second said $40.89. Same campaign, same dates, $2.21 apart, because the data was still settling between the two pulls.
Practical consequence: note when you pulled each file. If two exports disagree, the newer one is usually closer to final — and neither is worth acting on for the most recent 48 hours.
This is also why judging a campaign on yesterday's numbers is a good way to kill something that was working. Give the data two days to stop moving, and judge campaigns on a settled window rather than the live view.
Reason four: your book has more than one identity
Amazon doesn't have a concept of "your book". It has products.
Your paperback and your ebook are separate ASINs — separate items in every report, even though readers see one title. Sales don't combine, page reads only attach to the ebook, and ad spend is recorded per product.
It gets stranger. In the KDP reports I've worked with, the paperback royalty sheet identifies the book by ISBN and doesn't carry its ASIN at all, while the orders sheet identifies the same book by ASIN. So the identifier you'd use to match a paperback to its ad spend isn't in the sheet that tells you what the paperback earned. If you're building a spreadsheet, match on title and author rather than on any identifier, and treat editions as one book yourself, because nothing upstream will do it for you.
The trap that inflates your income
One more, and this one costs people real accuracy in the other direction.
A KDP dashboard export arrives as a workbook with several sheets, and the same sale appears on more than one of them. A single paperback order can be listed under Combined Sales, again under Paperback Royalty, and again under Orders Processed. They're different views of one transaction, not three transactions.
Add up every sheet and you'll triple your own income. I did exactly this on a first pass, and it produced a book that had apparently sold nine copies when it had sold three. If you're reconciling by hand, pick one sheet as your source of truth for money — ideally the monthly statement's Total Earnings sheet, or the per-format royalty sheets — and use the rest only to look up identifiers.
And the number nobody can give you
If your book is in Kindle Unlimited, part of your income for the current month is genuinely unknowable, including to Amazon.
KU pays from a monthly fund divided across all pages read by everyone in the programme, so the per-page rate isn't set until the month closes. Look at a KDP statement mid-month and the earnings column beside your page reads reads "N/A". Not zero — not available yet.
So any figure combining ad spend with KU income before month end is an estimate. That's fine, and a trailing average is a reasonable one to use, but it should be labelled as an estimate. Anything presenting a confident mid-month KU number is quietly guessing.
How to reconcile them without losing an evening
- Pick one money source. One sheet for royalties. Never sum across sheets that overlap.
- Compare whole months, not weeks. Clock differences mostly wash out over a month; over a week they dominate.
- Ignore the last 48 hours of any ad data you plan to make decisions on.
- Group editions yourself, by title and author. Paperback plus ebook equals one book, whatever the reports say.
- Expect the ads console to be the smaller number. It only sees attributed sales. If it shows fewer units than KDP, that's normal and usually good — the rest is organic.
- Label your KU figures as estimates until the month closes and the real rate posts.
- Write down when you exported each file. Future you will want to know why two spreadsheets disagree.
None of this makes the reports agree. It makes the disagreement legible, which is the most anyone can offer — including any tool, including mine.
Or let something else do the joining
AuthorTally reads the reports you already download and does this reconciliation for you: editions grouped into books, one money source per file so nothing double-counts, export timestamps recorded, and every figure labelled as observed, attributed or estimated so you know which numbers you can lean on.
The break-even check is free and runs entirely in your browser — your reports are never uploaded.
Try the free checkRead next
- Why your Amazon Ads ACOS is lying to you The console measures retail price, you earn a royalty. Why a 14× return can still be a loss.
- Break-even ACOS calculator The ACOS your book actually needs, in about ten seconds.
- KENP royalty calculator What your Kindle Unlimited page reads are worth.
AuthorTally is an independent tool and is not affiliated with, endorsed by, or connected to Amazon.com, Inc. Report formats and attribution rules change; the reasoning here holds, but check the specifics against your own current exports.