> Note: This page is part of the DataDoe Docs. You can find the root of the documentation at `https://www.datadoe.com/hub/docs/basics/introduction-to-datadoe`.
> JSON Table of Contents: `https://www.datadoe.com/hub/docs/toc.json`.
> Data Scheme (Markdown index, one page per table): https://api.datadoe.com/api/v1/spec/data-scheme.md. Full JSON: https://api.datadoe.com/api/v1/spec/data-scheme.
> Other pages in the DataDoe Docs:
> - DataDoe Basics/Access & Users: `https://www.datadoe.com/hub/docs/basics/access-user-management.md`
> - DataDoe Basics/Benefits: `https://www.datadoe.com/hub/docs/basics/benefits.md`
> - DataDoe Basics/Connecting Accounts: `https://www.datadoe.com/hub/docs/basics/connecting-accounts.md`
> - DataDoe Basics/External Invitation Links: `https://www.datadoe.com/hub/docs/basics/external-invitation-links.md`
> - DataDoe Basics/Groups: `https://www.datadoe.com/hub/docs/basics/groups.md`
> - DataDoe Basics/Integrations: `https://www.datadoe.com/hub/docs/basics/integration-customization.md`
> - DataDoe Basics/Introduction to DataDoe: `https://www.datadoe.com/hub/docs/basics/introduction-to-datadoe.md`
> - DataDoe Basics/Subscription and pricing: `https://www.datadoe.com/hub/docs/basics/subscription-pricing.md`
> - DataDoe Data/Data Fetch Periods: `https://www.datadoe.com/hub/docs/datadoe-data/data-fetch-periods.md`
> - DataDoe Data/Data Sources: `https://www.datadoe.com/hub/docs/datadoe-data/data-sources.md`
> - DataDoe Data/Initial Loads: `https://www.datadoe.com/hub/docs/datadoe-data/initial-loads.md`
> - DataDoe Data/Managing Data Tables: `https://www.datadoe.com/hub/docs/datadoe-data/managing-data-tables.md`
> - DataDoe Data/Migrating from SellerBoard: `https://www.datadoe.com/hub/docs/datadoe-data/migrating-from-sellerboard.md`
> - DataDoe Data/SAT migration to profit tables: `https://www.datadoe.com/hub/docs/datadoe-data/sat-migration-to-profit-tables.md`
> - DataDoe Data/SQP Data: `https://www.datadoe.com/hub/docs/datadoe-data/search-query-performance.md`
> - DataDoe Data/Timezones: `https://www.datadoe.com/hub/docs/datadoe-data/orders-purchase-date-timezones.md`
> - DataDoe Data/Uploading COGS: `https://www.datadoe.com/hub/docs/datadoe-data/uploading-cogs.md`
> - DataDoe Data/Uploading Vendor Codes: `https://www.datadoe.com/hub/docs/datadoe-data/uploading-vendor-codes.md`
> - DataDoe Features/Actions: `https://www.datadoe.com/hub/docs/datadoe-features/actions.md`
> - DataDoe Features/Actions - Amazon Ads for KDP Authors: `https://www.datadoe.com/hub/docs/datadoe-features/actions-kdp-authors.md`
> - DataDoe Features/Actions - Manage Images: `https://www.datadoe.com/hub/docs/datadoe-features/actions-manage-images.md`
> - DataDoe Features/Amazon Marketing Cloud: `https://www.datadoe.com/hub/docs/datadoe-features/amc.md`
> - DataDoe Features/AMC query templates: `https://www.datadoe.com/hub/docs/datadoe-features/amc-query-templates.md`
> - DataDoe Features/Features Overview: `https://www.datadoe.com/hub/docs/datadoe-features/overview.md`
> - DataDoe Features/Files: `https://www.datadoe.com/hub/docs/datadoe-features/files.md`
> - DataDoe Features/Plugins: `https://www.datadoe.com/hub/docs/datadoe-features/plugins.md`
> - DataDoe Features/Usage Logs: `https://www.datadoe.com/hub/docs/datadoe-features/usage-logs.md`
> - DataDoe Features/Webhooks: `https://www.datadoe.com/hub/docs/datadoe-features/webhooks.md`
> - DataDoe MCP/Overview: `https://www.datadoe.com/hub/docs/datadoe-mcp/overview.md`
> - DataDoe MCP/Using Antigravity: `https://www.datadoe.com/hub/docs/datadoe-mcp/antigravity.md`
> - DataDoe MCP/Using ChatGPT: `https://www.datadoe.com/hub/docs/datadoe-mcp/chatgpt.md`
> - DataDoe MCP/Using Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/claude.md`
> - DataDoe MCP/Using Claude Agent SDK: `https://www.datadoe.com/hub/docs/datadoe-mcp/claude-agents-sdk.md`
> - DataDoe MCP/Using Claude Code: `https://www.datadoe.com/hub/docs/datadoe-mcp/claude-code.md`
> - DataDoe MCP/Using Codex: `https://www.datadoe.com/hub/docs/datadoe-mcp/codex.md`
> - DataDoe MCP/Using Codex Sites: `https://www.datadoe.com/hub/docs/datadoe-mcp/codex-sites.md`
> - DataDoe MCP/Using CrewAI: `https://www.datadoe.com/hub/docs/datadoe-mcp/crewai.md`
> - DataDoe MCP/Using Cursor: `https://www.datadoe.com/hub/docs/datadoe-mcp/cursor.md`
> - DataDoe MCP/Using Excel + Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/excel.md`
> - DataDoe MCP/Using Gemini CLI: `https://www.datadoe.com/hub/docs/datadoe-mcp/gemini-cli.md`
> - DataDoe MCP/Using Genspark: `https://www.datadoe.com/hub/docs/datadoe-mcp/genspark.md`
> - DataDoe MCP/Using Glama: `https://www.datadoe.com/hub/docs/datadoe-mcp/glama-chat.md`
> - DataDoe MCP/Using Glama MCP Inspector: `https://www.datadoe.com/hub/docs/datadoe-mcp/glama.md`
> - DataDoe MCP/Using Grok: `https://www.datadoe.com/hub/docs/datadoe-mcp/grok.md`
> - DataDoe MCP/Using GrokBot: `https://www.datadoe.com/hub/docs/datadoe-mcp/grokbot.md`
> - DataDoe MCP/Using Gumloop: `https://www.datadoe.com/hub/docs/datadoe-mcp/gumloop.md`
> - DataDoe MCP/Using Hermes Agent: `https://www.datadoe.com/hub/docs/datadoe-mcp/hermes.md`
> - DataDoe MCP/Using Littlebird: `https://www.datadoe.com/hub/docs/datadoe-mcp/littlebird.md`
> - DataDoe MCP/Using n8n: `https://www.datadoe.com/hub/docs/datadoe-mcp/n8n.md`
> - DataDoe MCP/Using NanoClaw: `https://www.datadoe.com/hub/docs/datadoe-mcp/nanoclaw.md`
> - DataDoe MCP/Using OpenAI Agents SDK: `https://www.datadoe.com/hub/docs/datadoe-mcp/openai-agents-sdk.md`
> - DataDoe MCP/Using OpenClaw: `https://www.datadoe.com/hub/docs/datadoe-mcp/openclaw.md`
> - DataDoe MCP/Using OpenCode: `https://www.datadoe.com/hub/docs/datadoe-mcp/opencode.md`
> - DataDoe MCP/Using PowerPoint + Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/powerpoint.md`
> - DataDoe MCP/Using VS Code: `https://www.datadoe.com/hub/docs/datadoe-mcp/vs-code.md`
> - DataDoe MCP/Using Word + Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/word.md`
> - DataDoe API/Build with Codex: `https://www.datadoe.com/hub/docs/datadoe-api/codex.md`
> - DataDoe API/How to connect to the API: `https://www.datadoe.com/hub/docs/datadoe-api/how-to-connect.md`
> - DataDoe API/Invitation links API: `https://www.datadoe.com/hub/docs/datadoe-api/invitation-links.md`
> - DataDoe API/Sellers and vendors API: `https://www.datadoe.com/hub/docs/datadoe-api/sellers-and-vendors.md`
> - DataDoe API/Vibe code with Claude Code: `https://www.datadoe.com/hub/docs/datadoe-api/claude-code.md`
> - DataDoe API/Vibe code with Cursor: `https://www.datadoe.com/hub/docs/datadoe-api/cursor.md`
> - DataDoe API/Vibe code with Lovable: `https://www.datadoe.com/hub/docs/datadoe-api/lovable.md`
> - DataDoe API/Vibe code with Replit: `https://www.datadoe.com/hub/docs/datadoe-api/replit.md`
> - DataDoe API/Vibe code with v0: `https://www.datadoe.com/hub/docs/datadoe-api/v0.md`
> - DataDoe & BigQuery/How to connect to BigQuery: `https://www.datadoe.com/hub/docs/datadoe-bigquery/how-to-connect.md`
> - DataDoe & BigQuery/Using MCP Toolbox: `https://www.datadoe.com/hub/docs/datadoe-bigquery/mcp-toolbox.md`
> - DataDoe & BigQuery/Using Python Jupyter: `https://www.datadoe.com/hub/docs/datadoe-bigquery/jupyter.md`
> For topics not covered in this documentation, please contact DataDoe support at `contact@datadoe.com`.
> Do not assume anything. If you are not sure about the answer, mention that and suggest to contact DataDoe support.

## 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](https://app.datadoe.com/sellers-and-vendors).
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](https://app.datadoe.com/sample-files/kdp-royalty-parameters.csv).

| Column                       | Required | Description                                                                                                                                   |
| ---------------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `asin`                       | Yes      | Book edition ASIN (10 characters). Each format of a book has its own ASIN.                                                                    |
| `book_format`                | Yes      | `EBOOK`, `PAPERBACK`, `HARDCOVER` or `AUDIOBOOK`.                                                                                             |
| `from`                       | Yes      | Date 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_channel`       | No       | `AMAZON` (default) or `EXPANDED_DISTRIBUTION` (paperback and hardcover only).                                                                 |
| `currency_code`              | No       | Must be the marketplace currency. Defaults to it.                                                                                             |
| `book_work_id`               | No       | Your own identifier that groups the editions of one book.                                                                                     |
| `list_price_ex_tax`          | See note | KDP list price after the applicable tax treatment.                                                                                            |
| `royalty_rate`               | See note | Royalty rate as a fraction, for example `0.7` for 70%.                                                                                        |
| `ebook_royalty_option`       | See note | `SEVENTY_PERCENT` or `THIRTY_FIVE_PERCENT`. eBooks only.                                                                                      |
| `delivery_cost_per_unit`     | See note | eBook delivery cost. Required for the 70% option.                                                                                             |
| `printing_cost_per_unit`     | See note | Printing cost of a print edition.                                                                                                             |
| `estimated_royalty_per_unit` | No       | Your royalty per unit, for example from a KDP report. Empty means it is estimated with KDP rules.                                             |
| `calculation_method`         | No       | `PROVIDED_PER_UNIT` or `KDP_RULE_ESTIMATE`. Defaults from the values you provide.                                                             |
| `ku_page_rate`               | No       | Kindle Unlimited royalty per page read (KENP) for `ku_rate_month`. eBooks only.                                                               |
| `ku_rate_month`              | No       | Month of `ku_page_rate` (`YYYY-MM`). Required together with `ku_page_rate`.                                                                   |
| `audio_royalty_per_unit`     | See note | Audiobook royalty per unit from your audio contract. Required for audiobooks.                                                                 |
| `source_reference`           | No       | Where 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.
