> 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`.
> Direct Data Scheme 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/External Invitation Links: `https://www.datadoe.com/hub/docs/basics/external-invitation-links.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/Managing Data Tables: `https://www.datadoe.com/hub/docs/datadoe-data/managing-data-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 - Manage Images: `https://www.datadoe.com/hub/docs/datadoe-features/actions-manage-images.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 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 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 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/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.

# Migrating from SellerBoard

[SellerBoard](https://sellerboard.com) is an Amazon profit analytics tool. It connects to Seller Central and imports orders, fees, advertising costs, and refunds. It applies your product costs and shows profit and loss (P&L) by day, product, and marketplace.

DataDoe is an Amazon **data layer**. It stores Seller Central, Vendor Central, and Amazon Ads data in a documented schema. You can access the data through the app, exports, BigQuery, the DataDoe application programming interface (API), and [Model Context Protocol (MCP)](/hub/docs/datadoe-mcp/overview). P&L is one of many available datasets. You can also analyze sales, advertising, inventory, and settlements from the same source, as well as manage your sales and ads with [Actions](/hub/docs/datadoe-features/actions).

## What's different from SellerBoard?

The main differences are:

- **No value-added tax (VAT) row:** DataDoe does not add VAT as a parent row in P&L reports or profit tables. We are working on adding VAT to P&L reports in the near future.
- **Different cost of goods sold (COGS) engine:** DataDoe uses dated unit costs instead of SellerBoard's batch, period, or first-in, first-out costs. You can upload your COGS export CSV from SellerBoard to DataDoe to match the costs. Learn more about [uploading COGS to DataDoe](/hub/docs/datadoe-data/uploading-cogs).

## How to view the Profit and Loss report in browser?

Open the **Profit & Loss** tab in [Reports](https://app.datadoe.com/reports). The tab opens by default. Choose a Seller and a date range. You can also compare the result with the preceding period of the same length.

Set an interval to split the report into daily, weekly, or monthly columns.

The report follows the SellerBoard parent-row structure. Expand a row to see more detail where available.

| Parent row                           | What the report shows                                                                |
| ------------------------------------ | ------------------------------------------------------------------------------------ |
| Sales                                | Shipped item price plus buyer shipping, minus shipping promotions                    |
| Units                                | Shipped units                                                                        |
| Refunds                              | Number of `REFUND` finance events on the posted date                                 |
| Promo                                | Always `0` (settlement promotions are not booked as a P&L line)                      |
| Advertising cost                     | Negative advertising spend, including VAT in European Union marketplaces             |
| Shipping costs                       | Negative buyer shipping (child row: Fulfillment by Amazon (FBA) shipping chargeback) |
| Giftwrap                             | Order-item gift wrap                                                                 |
| Refund cost                          | Refund transactions plus sellable and unsellable return COGS on the receipt date     |
| Amazon fees                          | Selling and posted fees; lost or missing inventory is excluded                       |
| Cost of goods                        | Sold COGS plus inventory lost or damaged by Amazon and missing returns               |
| Gross profit / Net profit            | Same total today (no separate VAT or overhead line)                                  |
| Estimated payout                     | Sales plus fees, refund cost, ads, shipping, giftwrap, promo                         |
| TACOS, % Refunds, Margin, ROI        | Total advertising cost of sales, refund rate, margin, and return on investment       |
| Sessions and unit session percentage | Traffic                                                                              |

[Profit by Date](/hub/data-scheme?source=SELLER_CENTRAL&table=b24cd69c061d107e5d5897d6fd06f95cd0432b3ed51b04b4ad8207e601da964c) and [Profit by SKU & Date](/hub/data-scheme?source=SELLER_CENTRAL&table=57a0cb319c10a395853afc0671579bf7ef0ff45d8a40c88ed9d2a5f61b4169a4) tables use the same calculation rules. AI agents can read this table through MCP to recreate the report **Total** for a Seller and date range.

## How to create a P&L summary with an AI agent?

> You can just paste the following prompt into your AI agent and let it do the work.

First, [connect DataDoe MCP](/hub/docs/datadoe-mcp/overview). To recreate the report **Total**, list the Seller and find the **Profit by Date** source (`amazon_profit_by_date`). Then create an export for the required dates with sum aggregations and no `groupBy`.

Use `amazon_profit_by_date`, not `amazon_profit_by_sku_and_date`. Calculate total advertising cost of sales (TACOS) from the date-range totals instead of adding daily values.

Shipping costs, Giftwrap, and Estimated payout appear in the app report but are not separate Profit by Date columns. Buyer shipping is included in `total_sales`.

Paste the following prompt into your AI agent and replace the three placeholders. The prompt includes exact MCP tool names, argument names, limits, and call order. The agent must copy `sourceId` from `exports_sources_get` instead of guessing it.

### Prompt for SellerBoard-style P&L report generated with DataDoe MCP

```text
You are using DataDoe MCP. Produce a SellerBoard-style P&L summary.
Include parent rows only and one Total for the date range.
Match Reports → Profit & Loss for the Seller and dates below.
Do not include daily, weekly, monthly, or comparison columns.

Inputs:
- seller name: {{seller_name}}
- from: {{from}}   (YYYY-MM-DD, inclusive)
- to: {{to}}       (YYYY-MM-DD, inclusive)

Do not use SQL, BigQuery, or the DataDoe web app.
Use only the tools named below.
Follow this order.

1) Tool: sellers_and_vendors_list
   Arguments (exact keys):
   {
     "query": "{{seller_name}}",
     "page": 1,
     "pageSize": 10
   }
   Pick the Seller Central row whose display name matches {{seller_name}}.
   Save its id as sellerOrVendorId (UUID).

2) Tool: exports_sources_get
   Arguments (exact keys):
   {
     "sellerOrVendorIds": ["<sellerOrVendorId from step 1>"],
     "query": "Profit by Date",
     "page": 1,
     "pageSize": 8
   }
   Select the source where table is amazon_profit_by_date and the user-facing name is "Profit by Date".
   Save sourceId from that object.
   If enabled is false, stop and tell the user to enable the table.

3) Tool: exports_create
   Create one total for {{from}} to {{to}} on amazon_profit_by_date.
   Use the exact argument keys below.
   Values for aggregations.column must be source columns.
   Values for columns must be the aliases:
   {
     "sellerOrVendorIds": ["<sellerOrVendorId from step 1>"],
     "sourceId": "<sourceId from step 2>",
     "from": "{{from}}",
     "to": "{{to}}",
     "outputType": "JSON",
     "limit": 1,
     "columns": [
       "sales",
       "units",
       "refunds",
       "advertising_cost",
       "refund_cost",
       "amazon_fees",
       "cost_of_goods",
       "net_profit",
       "sessions"
     ],
     "aggregations": [
       { "column": "total_sales", "aggregation": "sum", "alias": "sales" },
       { "column": "total_units_sold", "aggregation": "sum", "alias": "units" },
       { "column": "refund_count", "aggregation": "sum", "alias": "refunds" },
       { "column": "ad_spend", "aggregation": "sum", "alias": "advertising_cost" },
       { "column": "refund_cost", "aggregation": "sum", "alias": "refund_cost" },
       { "column": "total_fees", "aggregation": "sum", "alias": "amazon_fees" },
       { "column": "cogs_total", "aggregation": "sum", "alias": "cost_of_goods" },
       { "column": "profit", "aggregation": "sum", "alias": "net_profit" },
       { "column": "total_sessions", "aggregation": "sum", "alias": "sessions" }
     ]
   }
   Do not set groupBy, dateInterval, filters, skip, or orderByColumn.

   Report row → export field:
   Sales → sales (UI: item_price + buyer shipping − ship promo)
   Units → units
   Refunds → refunds
   Promo → always 0 (not in this table)
   Advertising cost → advertising_cost
   Shipping costs → n/a (buyer shipping stays inside sales)
   Giftwrap → n/a (not on Profit by Date)
   Refund cost → refund_cost
   Amazon fees → amazon_fees
   Cost of goods → cost_of_goods
   Gross profit / Net profit → net_profit
   Estimated payout → n/a
   Sessions → sessions

4) If the status from step 3 is not already COMPLETED, tool: exports_get
   Arguments:
   { "exportId": "<id from step 3>" }
   Poll every 5 seconds until status is COMPLETED. Stop on ERROR or BLOCKED_NO_TOKENS.

5) Tool: exports_raw_download
   Arguments:
   { "exportId": "<same id>" }

Present the parent rows in the following report order.
Do not add other rows.
Show costs as negative values.
Show sales, units, and sessions as positive values.

- Sales = sales
- Units = units
- Refunds = refunds
- Promo = 0
- Advertising cost = if advertising_cost > 0 then -advertising_cost else advertising_cost
- Shipping costs = n/a
- Giftwrap = n/a
- Refund cost = refund_cost (already signed)
- Amazon fees = if amazon_fees > 0 then -amazon_fees else amazon_fees
- Cost of goods = if cost_of_goods > 0 then -cost_of_goods else cost_of_goods
- Gross profit = net_profit
- Net profit = net_profit
- Estimated payout = n/a
- TACOS = abs(Advertising cost) / Sales   (if Sales is 0, null)
- % Refunds = Refunds / Units   (if Units is 0, null)
- Margin = Net profit / Sales   (if Sales is 0, null)
- ROI = Net profit / abs(Cost of goods)   (if Cost of goods is 0, null)
- Active subscriptions = 0
- Sessions = sessions
- Unit session percentage = Units / Sessions   (if Sessions is 0, null)

State that this is the Profit by Date total for {{from}} to {{to}}.
Explain that value-added tax (VAT) is omitted and cost of goods sold (COGS) uses unit costs uploaded to DataDoe.
```
