Skip to main content

What are KDP royalty parameters in DataDoe?

Amazon Ads reports retail sales of your books, not the royalties Kindle Direct Publishing (KDP) pays you. DataDoe does not fetch prices or royalties from KDP. You upload your royalty assumptions per book edition (ASIN), and DataDoe uses them to estimate author earnings from your ads.

KDP royalty parameters are available only for accounts whose Amazon Ads profile is an Amazon KDP author account. The Ads connection can be paired with Seller Central or Vendor Central or connected alone. The parameters belong to that Amazon Ads connection.

If KDP Royalties is disabled for an account that is a KDP author account, reauthorize Amazon Ads for it so DataDoe can read the current profile, or contact support.

Where do I upload KDP royalty parameters?

  1. Open Sellers & Vendors (opens in a new tab).
  2. Click KDP Royalties next to an account connected with an Amazon Ads KDP author account. Accounts connected with Amazon Ads alone are on the Ads tab.
  3. Upload a CSV file, or click Add ASIN to enter parameters for one book edition. Click a book in the list to edit its history. Click the trash icon of a book to delete all its royalty parameters, in every distribution channel.

What is the file format?

You can download a sample CSV (opens in a new tab).

ColumnRequiredDescription
asinYesBook edition ASIN (10 characters). Each format of a book has its own ASIN.
book_formatYesEBOOK, PAPERBACK, HARDCOVER or AUDIOBOOK.
fromYesDate the parameters apply from (YYYY-MM-DD or MM/DD/YYYY). The column is required; leave the value empty to apply the row to all history.
distribution_channelNoAMAZON (default) or EXPANDED_DISTRIBUTION (paperback and hardcover only).
currency_codeNoMust be the marketplace currency. Defaults to it.
book_work_idNoYour own identifier that groups the editions of one book.
list_price_ex_taxSee noteKDP list price after the applicable tax treatment.
royalty_rateSee noteRoyalty rate as a fraction, for example 0.7 for 70%.
ebook_royalty_optionSee noteSEVENTY_PERCENT or THIRTY_FIVE_PERCENT. eBooks only.
delivery_cost_per_unitSee noteeBook delivery cost. Required for the 70% option.
printing_cost_per_unitSee notePrinting cost of a print edition.
estimated_royalty_per_unitNoYour royalty per unit, for example from a KDP report. Empty means it is estimated with KDP rules.
calculation_methodNoPROVIDED_PER_UNIT or KDP_RULE_ESTIMATE. Defaults from the values you provide.
ku_page_rateNoKindle Unlimited royalty per page read (KENP) for ku_rate_month. eBooks only.
ku_rate_monthNoMonth of ku_page_rate (YYYY-MM). Required together with ku_page_rate.
audio_royalty_per_unitSee noteAudiobook royalty per unit from your audio contract. Required for audiobooks.
source_referenceNoWhere the values come from. Defaults to the file name.

DataDoe records where each row comes from: values entered in DataDoe (this file, the grid, the API or MCP) are stored as USER_CONFIGURATION.

How is the royalty per unit estimated?

When estimated_royalty_per_unit is empty, DataDoe estimates it with the KDP royalty rules:

  • eBook, 70% option: royalty rate × (list price − delivery cost)
  • eBook, 35% option: royalty rate × list price
  • Paperback and hardcover: royalty rate × list price − printing cost

Audiobooks always use audio_royalty_per_unit. Values are calculated exactly, without rounding. Empty values stay unknown; they are never treated as 0.

How do effective dates work?

Like COGS, each row applies from its from date until the next row of the same ASIN and distribution channel. To change a price or rate, add a row with a new from date instead of editing the old one, so past ad performance keeps the parameters that applied at the time.

Re-uploading KDP royalty parameters

DataDoe matches each row on the account, ASIN, distribution channel and from date.

  • Matching row → the parameters are overwritten with what is in the file.
  • New row → the row is added.
  • Rows not in the file → stay unchanged.

If any row in a file is invalid, nothing is saved. Fix the rows listed in the upload result and upload the file again.