> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sourcedock.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Sales

> Your Amazon orders, fees, ad spend, and profit for today, this month, or any days you pick, with a forecast for the month.

## In short

Sales shows your Amazon orders, fees, ads and profit for any day or month, and guesses how the whole month will end. It counts each sale on the day the buyer ordered it.

Say Tonies Sleepy Friends sold 5 this month. On the **Month to date** tile, its product row shows \$150.00 of sales and \$9.10 of net profit. The **est.** mark means Amazon hasn't paid out every one of those orders yet.

Click **Sales** on the bar. For one made-up month walked through every figure, see [Step by step](#step-by-step) below.

![The Sales product table with one row, Tonies Sleepy Friends: Units Sold 5, Refunds 1, Sales \$150.00, Net profit \$9.10 est., ROI 14.6%, Profit margin 6.1%, COGS -\$62.50, with CR and PO chips.](https://mintcdn.com/sourcedock/dpj3qXH7J-lxwv5I/images/deep-dives/capital-recovery-vs-sales/01-tonies-sales-row.png?fit=max\&auto=format\&n=dpj3qXH7J-lxwv5I\&q=85\&s=b2b752f76d08dba35cde8caaed1541c2)

Tonies Sleepy Friends on Sales, Month to date on the seed day (Oct 1-30). Notice 5 units sold and \$9.10 of net profit.

## More details

> [accordion] A quick example
>
> Say it's the 15th. You want to know how this month is going: how many orders, what Amazon took in fees, what ads cost, and what's left as profit. The Sales page shows that for any day or month, and guesses how the whole month will end.
>
> Sales counts each sale on the day the buyer ordered it. Capital Recovery counts it once Amazon ships it and adds the money to your Amazon account, against what you spent on that buy. So the two pages rarely show the same number. See [Capital Recovery vs Sales](https://docs.sourcedock.io/operate/capital-recovery-vs-sales.md).

> [accordion] The tiles
>
> Each tile is one time period. Click a tile to show it in the chart and the product table.
>
> | Tile | Covers |
> | - | - |
> | **Today** | Midnight until now. |
> | **Yesterday** | All of yesterday. |
> | **Month to date** | The 1st of this month until now. |
> | **This month** | SourceDock's **Forecast** for the whole month. |
> | **Last month** | All of last month. |
> | **YTD** | January 1 until today. |
> | **Custom** | The days you pick in **Start day** and **End day**. Up to 366 days. |
>
> Days follow Amazon's Pacific time clock. Click **More** on a tile for its extra lines, or **Full ledger →** for every money line in that period.
>
> To pick which lines the tiles show, click **⋯** (**Choose tile figures**). You can show **Orders / Units**, **Refunds**, **Promo**, **Ad spend**, **Amazon fees**, **COGS**, **Gross profit**, **Net profit**, and more.

> [accordion] How each number is worked out
>
> Say buyers paid \$1,000 this month. You ran a \$20 coupon, spent \$50 on ads, refunds cost you \$30, Amazon's fees were \$300, and the units you sold cost you \$400. Your gross profit is \$1,000 − \$20 − \$50 − \$30 − \$300 − \$400 = \$200.
>
> * **Orders**: Amazon orders placed in this period. An order with two products counts once.
> * **Units**: units buyers ordered in this period. Cancelled units are left out.
> * **Sales**: what buyers paid. Once Amazon pays an order, it's Amazon's paid-out amount. Before that, it's the order price.
> * **Refunds**: refunds Amazon paid back in this period, by refund date, less the fees Amazon gave back. Units sent back in good shape add their cost back.
> * **Ad spend**: Amazon gives one ad total per product per month. SourceDock spreads it evenly over the month's days.
> * **Amazon fees**: Amazon's fees for these orders, plus inbound, storage, removal, and disposal fees, less what Amazon paid you for lost or damaged units.
> * **COGS** (cost of goods sold): what the sold units cost you, from your purchases. Units with no cost are left out, never counted as \$0.
> * **Gross profit**: sales less promo, ad spend, refunds, Amazon fees, and cost of goods.
> * **Net profit**: gross profit less the costs you added on the [Expenses](https://docs.sourcedock.io/operate/expenses.md) page.
> * **Margin**: net profit divided by sales. Buyers pay \$20 and you keep \$5: that's 25%.
> * **ROI**: net profit divided by cost of goods.
>
> Green is above zero and red is below. A number marked **est.** is partly an estimate, because Amazon hasn't paid out every order yet.
>
> ### The forecast
>
> **This month** adds your full days so far to their daily average for each day left. Today is left out of the average. Before the month has 2 full days, it uses last month's daily average.

> [accordion] The chart and the products
>
> The chart shows sales and net profit by hour (for one day) or by day.
>
> The table lists each product sold in the period. Search by product, ASIN, SKU, or order. Click **Filters** to show only **FBA** or **FBM** orders, products with a refund, or products with profit above or below \$0. Filters change the table only, not the tiles.
>
> Click a product to open it, then **Full ledger →** for its **Ledger** and **Orders**.
>
> A product you have a purchase for shows two chips. **CR** opens it on Capital Recovery. **PO** opens it on Purchases. Both open in a new tab.
>
> If some sold units have no cost, click **Add missing costs** to add them. See [Purchases](https://docs.sourcedock.io/operate/purchases.md).

> [accordion] Stores
>
> Each store shows its own money: US dollars for the US store, Canadian dollars for Canada, pesos for Mexico. An order belongs to the store it was placed on. An amazon.ca order is the Canada store's, even when it shipped from your US stock. Its cost uses what the US purchase cost, changed into Canadian dollars at the European Central Bank's rate for that day. Capital Recovery counts that same order on your US store, because the unit came from your US buys.
>
> With more than one store, pick a store beside the title, or **All stores**. **All stores** shows everything in US dollars, at the European Central Bank's rate.

> [accordion] How often it updates
>
> SourceDock pulls your orders from Amazon every 30 minutes. The top says **Last sync** and **Next sync**.

> [accordion] Plans
>
> Sales is part of Pro. A Premier trial has it too. A Premier plan that was already paying on October 20, 2026 also keeps it, for as long as that same plan stays on. On any other Premier plan, the page says **Please update your plan to Pro.** Its button is **Update your plan**.

## Step by step

> [accordion] About this walk-through
>
> > [!NOTE]
> >
> > **Scenario for the walk-through:** The pictures come from the demo store's US store. The blender story below is made up.
> >
> > * Uno card game: 12 bought at \$8.00 each. It sells for \$20.00. Its last sale was the day before the seed day.
> > * YETI Rambler mug: 10 bought at \$16.00 each. It sells for \$40.00. Its last sale was also the day before the seed day, and 2 went to Canada from US stock, 42 and 21 days before the seed day.
> >
> > So the **Yesterday** tile holds one of each: \$20.00 + \$40.00 = \$60.00. The other tiles show the whole US store, so they include the demo's other products too. Find them in the demo store under Sales, with **US** picked in the store menu at the top.
>
> You sell one product on your US store. It is the BrightMix blender, ASIN B0EXAMPLE1. Each one cost you \$8. Buyers pay \$20. Today on the store clock is October 4. The clock is Pacific.
>
> Amazon's referral fee in this story is \$3 a unit. The pick-and-pack fee is \$5 a unit. A cost on this page is stored as a negative number. Adding it takes it off. Money is whole cents. The screen prints money to the cent, like -\$8.00.

> [accordion] What one full day holds
>
> October 1, October 2, and October 3 are the same kind of day. You sell 5 blenders. That is 5 orders, because each order has one unit. Amazon also posts 1 refund that same day, for a blender ordered that same day. The buyer sends it back in sellable shape. One of the five sales has a \$2 coupon.
>
> A sale counts on the order day. A refund counts on the day Amazon posts it. Here both land on the same day, so the day holds both.
>
> Here is that day before any expense you add yourself.
>
> | Line | Amount | How |
> | - | - | - |
> | **Sales** | \$100.00 | 5 × \$20 |
> | **Orders / Units** | 5 / 5 | 5 orders, 5 units |
> | **Refunds** | -\$10.00 | Worked out below |
> | **Promo** | -\$2.00 | The \$2 coupon |
> | **Ad spend** | -\$1.00 | October's ad total, split by day |
> | **Amazon fees** | -\$40.00 | 5 × (\$3 + \$5) |
> | **COGS** | -\$40.00 | 5 × \$8 |
> | **Gross profit** | \$7.00 | The sum below |
> | **Net profit** | \$7.00 | No expense on this line yet |
>
> **Sales** is what buyers paid for units ordered that day. Cancelled units are left out. None are cancelled here.
>
> **Orders** counts Amazon orders. An order with two products counts once in the tile. It still counts on each product row. This story has one product, so orders and units match.
>
> **Promo** is discounts on the orders, such as coupons. The \$2 coupon is stored as -\$2.00.
>
> **Ad spend** is Amazon's ad total for this product for the month. SourceDock splits that total in equal shares over the days so far. October's total so far is \$4.00, and 4 days have started, so each day is \$1.00. The shares add back to \$4.00 to the cent.
>
> The month is still open, so this \$1.00 is an estimate. The line wears **est.** A whole month becomes Amazon's exact figure a few days after it ends. The wait is 96 hours after the month ends.
>
> **Amazon fees** here are the referral fee and the pick-and-pack fee. Both are costs. Orders Amazon has not paid yet would use Amazon's fee estimate. Every sale in this story is paid out.
>
> **COGS** is what the sold units cost, from your purchases. It is the same cost Capital Recovery uses. Units with no cost are left out. They are not counted as \$0. Every unit here has a cost, so COGS is -\$40.00.
>
> **Refunds** on the tile is refund cost, in money. It is not a unit count.
>
> One refund is four parts:
>
> * **Refunded amount** -\$20.00. Amazon gave the buyer the \$20 back.
> * **Refund commission** -\$1.00. Amazon keeps this fee on the refund.
> * **Refunded referral fee** \$3.00. Amazon gives the \$3 referral fee back.
> * **Value of returned items** \$8.00. The unit is back in stock, so its cost comes back.
>
> -\$20 + -\$1 + \$3 + \$8 = -\$10. That is the tile's **Refunds** line.
>
> The first three parts count on the day Amazon posts the refund. **Value of returned items** counts on the day Amazon's returns report says the unit came back. Here both are the same day. If the unit came back a month later, this month would show -\$18 and next month +\$8.
>
> **COGS** still counts all 5 units, the returned one too. Its \$8 comes back inside the refund instead. In profit, the two cancel out for that unit.
>
> **Gross profit** adds the signed lines.
>
> \$100.00 + -\$2.00 + -\$1.00 + -\$10.00 + -\$40.00 + -\$40.00 = \$7.00.
>
> **Net profit** is gross profit plus expenses you recorded. This day has none yet, so net profit is \$7.00 too.
>
> **Margin** is net profit divided by sales. \$7 / \$100 = 7.0%. The page keeps two decimals, then prints one. 7.0% stays 7.0%.
>
> **ROI** is net profit divided by what the sold units cost. The cost is negative in the data, so the page divides by the cost with the minus removed. \$7 / \$40 = 17.5%. If the cost is \$0, ROI is a dash.
>
> Margin and ROI do not wear **est.**, even when profit does.

> [accordion] The page around the tiles
>
> The title is **Sales**. Beside it, an account with more than one store has a menu headed **Show sales for** (shown in capitals). With one store there is no menu.
>
> Under the title you see **Last sync** and **Next sync**. SourceDock pulls orders every 30 minutes. Both times use your computer's clock. The days and the chart stay on Pacific time. Before the first pull, the line says **figures pending**. Until that pull has loaded orders, every money figure is a dash. Refunds against no sales are not shown as a loss.
>
> ![The title Sales with Last sync Oct 28th, 2:27 PM ET · Next sync 5:30 PM ET, and below it Custom, Any date to Any date, and a three-dot menu on the right.](https://mintcdn.com/sourcedock/g6QTK-EfTuTYg92B/images/deep-dives/sales-numbers/01-store-header.png?fit=max\&auto=format\&n=g6QTK-EfTuTYg92B\&q=85\&s=282b0f3fc9b7eb963a20f57eb23707d4)
>
> Whole demo US store: the top of the Sales page on the seed day. Notice Last sync and Next sync under the title, and Custom with two day boxes above the tiles.
>
> Above the tiles, the word **Custom** sits by two day boxes. A **⋯** menu is labeled **Show on tiles**. Every line starts on. **Show all** turns them all back on. **Sales**, the big number, always stays.
>
> ![A menu titled Show on tiles with ticks beside Orders / Units, Refunds, Promo, Ad spend, Amazon fees, COGS, Gross profit, Net profit and Margin / ROI, and Show all at the bottom.](https://mintcdn.com/sourcedock/g6QTK-EfTuTYg92B/images/deep-dives/sales-numbers/02-store-show-on-tiles.png?fit=max\&auto=format\&n=g6QTK-EfTuTYg92B\&q=85\&s=f73571a2b9907317439a288b7d84cdc2)
>
> Whole demo US store: the ⋯ menu above the tiles. Notice every line starts ticked, and Show all sits at the bottom.
>
> The page first opens on **Month to date**. After that, it opens on the last period you picked.
>
> The tiles run in this order. **Today**, **Yesterday**, **Month to date**, **This month** with a **Forecast** badge, **Last month**, then **YTD**. A **Custom** tile appears after you pick a start day and an end day.
>
> Each date is on the Pacific clock. **Today** runs from midnight until now. It is not a full day. **Yesterday** is the whole day before.

> [accordion] Month to date
>
> **Month to date** is October 1 through now. The screen dates it "Oct 1–4". It is three full days plus today.
>
> ![The Month to date tile dated Oct 1-28: Sales \$605.00, Orders / Units 24 / 24, Refunds \$0.00, Promo \$0.00, Ad spend \$0.00, Amazon fees -\$228.19, COGS -\$269.60, Gross profit \$107.21, Net profit \$107.21, Margin / ROI 17.7% / 39.8%, and More.](https://mintcdn.com/sourcedock/g6QTK-EfTuTYg92B/images/deep-dives/sales-numbers/03-store-month-to-date-tile.png?fit=max\&auto=format\&n=g6QTK-EfTuTYg92B\&q=85\&s=3e93ae80f583f3d5b243bec90bb01301)
>
> Whole demo US store: the Month to date tile on the seed day. Notice the dates read Oct 1–28, the 1st of the month through the seed day.
>
> Today, October 4, you sell 5 more blenders. No coupon. No refund. Ad spend is still -\$1.00.
>
> Today alone:
>
> \$100.00 + \$0 + -\$1.00 + \$0 + -\$40.00 + -\$40.00 = \$19.00 gross profit.
>
> The three full days are 3 × \$7.00 = \$21.00 of gross profit. Add today. Gross profit is \$40.00.
>
> You also recorded one expense. On the Expenses page it is named Boxes and tape. It is \$8.00, one time, charged on October 2. It counts in full on that day. It is not spread.
>
> The tile is the whole store.
>
> | Line | Month to date |
> | - | - |
> | **Sales** | \$400.00 |
> | **Orders / Units** | 20 / 20 |
> | **Refunds** | -\$30.00 |
> | **Promo** | -\$6.00 |
> | **Ad spend** | -\$4.00 **est.** |
> | **Amazon fees** | -\$160.00 |
> | **COGS** | -\$160.00 |
> | **Gross profit** | \$40.00 **est.** |
> | **Net profit** | \$32.00 **est.** |
> | **Margin / ROI** | 8.0% / 20.0% |
>
> Sales are 20 × \$20 = \$400.00. All 20 are paid out, so **Sales** has no **est.**
>
> Refunds are 3 × -\$10.00 = -\$30.00. Promo is 3 × -\$2.00 = -\$6.00. Fees are 20 × -\$8.00 = -\$160.00. COGS is 20 × -\$8.00 = -\$160.00. You bought these 20 at \$8, so you put \$160 to work. Three came back sellable. Their \$24 of cost returns inside refunds, not by shrinking COGS.
>
> Ad spend is 4 × -\$1.00 = -\$4.00. The whole \$4.00 is an estimate, so the line wears **est.** Gross profit and net profit wear **est.** because they include that ad estimate. The hover on profit says the ad spend is an estimate.
>
> Net profit is \$40.00 + -\$8.00 = \$32.00. The \$8 is not in gross profit. It is not in the payout either. You paid it outside Amazon.
>
> Margin is \$32 / \$400 = 8.0%. ROI is \$32 / \$160 = 20.0%.
>
> **More** opens a small box. With every tile line on, the box does not repeat those lines. It shows what the tile leaves out.
>
> * **Expenses recorded by you** -\$8.00. The hover names Boxes and tape \$8.00.
> * **Estimated payout** \$180.00.
> * **TACOS** 1.0% **est.**
> * **% Refunds** 15.0%.
>
> The foot says 20 orders, then **Full ledger →**.
>
> ![A small box titled Month to date, Oct 1-28: Expenses \$0.00, Estimated payout \$369.81, TACOS 0.0%, % Refunds 0.0%, and at the foot 24 orders and Full ledger.](https://mintcdn.com/sourcedock/g6QTK-EfTuTYg92B/images/deep-dives/sales-numbers/04-store-month-to-date-more.png?fit=max\&auto=format\&n=g6QTK-EfTuTYg92B\&q=85\&s=8709d98760010c9a4e2e1cbea5354a63)
>
> Whole demo US store: More, opened on the Month to date tile. Notice the foot: 24 orders, then Full ledger →.
>
> **Estimated payout** is what Amazon pays for the period. It is sales, plus promo, plus refund cost with the returned units' cost taken back out, plus Amazon fees. COGS is not in it. Ad spend paid by card is not in it. Your \$8 expense is not in it. It also adds inbound charges booked by Capital Recovery, ads Amazon took from the payout, and reserve or balance moves. Those are \$0 here.
>
> Refund cost without the returned value is -\$18 a refund. That is -\$20 + -\$1 + \$3. Three refunds are -\$54. Today has no refund.
>
> \$400 + -\$6 + -\$54 + -\$160 = \$180.
>
> **TACOS** is ad spend divided by all sales, not only sales the ads brought in. \$4 / \$400 = 1.0%. It wears **est.** because the ad spend does.
>
> **% Refunds** is units refunded divided by units sold. 3 / 20 = 15.0%.

> [accordion] The other tiles on October 4
>
> Each tile uses the same sum. Only the days change.
>
> **Today** is October 4 only. Dates on the tile read "Oct 4".
>
> **Sales** \$100.00. **Orders / Units** 5 / 5. **Refunds** \$0.00. **Promo** \$0.00. **Ad spend** -\$1.00 **est.** **Amazon fees** -\$40.00. **COGS** -\$40.00. **Gross profit** \$19.00 **est.** **Net profit** \$19.00 **est.** **Margin / ROI** 19.0% / 47.5%.
>
> The \$8 expense was October 2, so it is not in **Today**. Margin is \$19 / \$100. ROI is \$19 / \$40.
>
> **Yesterday** is October 3, one full day from the table above. The tile reads "Oct 3".
>
> ![The Yesterday tile dated Oct 27: Sales \$60.00, Orders / Units 2 / 2, Refunds \$0.00, Promo \$0.00, Ad spend \$0.00, Amazon fees -\$19.00, COGS -\$25.00, Gross profit \$16.00, Net profit \$16.00, Margin / ROI 26.7% / 64.0%, and More.](https://mintcdn.com/sourcedock/g6QTK-EfTuTYg92B/images/deep-dives/sales-numbers/05-uno-yeti-yesterday-tile.png?fit=max\&auto=format\&n=g6QTK-EfTuTYg92B\&q=85\&s=6a1e373f21f0a3ff4588b83760c48644)
>
> Uno card game and YETI mug: the demo store's Yesterday tile, the day before the seed day. Notice Sales $60.00 and Orders / Units 2 / 2: one Uno at $20.00 and one mug at \$40.00.
>
> **Sales** \$100.00. **Orders / Units** 5 / 5. **Refunds** -\$10.00. **Promo** -\$2.00. **Ad spend** -\$1.00 **est.** **Amazon fees** -\$40.00. **COGS** -\$40.00. **Gross profit** \$7.00 **est.** **Net profit** \$7.00 **est.** **Margin / ROI** 7.0% / 17.5%.
>
> The expense is not in yesterday either.
>
> **Last month** is September 1 through September 30. The tile reads "Sep 1–30". You sold 60 blenders. No coupons. No refunds. No expense. Amazon's ad read for that whole month is \$0.00.
>
> **Sales** \$1,200.00. That is 60 × \$20. **Orders / Units** 60 / 60. **Refunds** \$0.00. **Promo** \$0.00. **Ad spend** \$0.00. **Amazon fees** -\$480.00. **COGS** -\$480.00. **Gross profit** \$240.00. **Net profit** \$240.00. **Margin / ROI** 20.0% / 50.0%.
>
> \$1,200 + \$0 + \$0 + \$0 + -\$480 + -\$480 = \$240. Margin is \$240 / \$1,200. ROI is \$240 / \$480.
>
> No line wears **est.** September's ad figure is \$0.00, so none of it is an estimate. A month with ad spend stays an estimate until Amazon's read, 96 hours after the month ends. On October 4 that read has not happened yet.
>
> \$0.00 is a real figure. A dash is different. A dash means Amazon has sent no ad total for those days. Gross profit still adds \$0 when the ad line is a dash. So a dash on **Ad spend** does not leave a hole in profit.
>
> **YTD** means the year so far. The first day SourceDock holds this store's orders is September 1. The tile then runs from that day, not from January 1. It does not say that it moved the start. The dates read "Sep 1 – Oct 4".
>
> Add September to month to date.
>
> **Sales** \$1,600.00. **Orders / Units** 80 / 80. **Refunds** -\$30.00. **Promo** -\$6.00. **Ad spend** -\$4.00 **est.** **Amazon fees** -\$640.00. **COGS** -\$640.00. **Gross profit** \$280.00 **est.** **Net profit** \$272.00 **est.** **Margin / ROI** 17.0% / 42.5%.
>
> September's ad figure is \$0.00, so none of it is an estimate. October's -\$4.00 is the estimate. The whole ad line wears **est.** The hover says \$4.00 of it is the estimate. Gross profit is \$240 + \$40 = \$280. Net profit is \$280 + -\$8 = \$272. Margin is \$272 / \$1,600. ROI is \$272 / \$640.
>
> **Custom** is the days you pick. Pick October 1 through October 2. The tile is labeled **Custom** and the dates read "Oct 1–2". That is two full days, plus the \$8 expense, because October 2 is inside the range.
>
> **Sales** \$200.00. **Orders / Units** 10 / 10. **Refunds** -\$20.00. **Promo** -\$4.00. **Ad spend** -\$2.00 **est.** **Amazon fees** -\$80.00. **COGS** -\$80.00. **Gross profit** \$14.00 **est.** **Net profit** \$6.00 **est.** **Margin / ROI** 3.0% / 7.5%.
>
> Two full days of gross profit are \$14.00. Net profit is \$14.00 + -\$8.00 = \$6.00. Margin is \$6 / \$200. ROI is \$6 / \$80. Ad spend still wears **est.**, because these two days are not a whole closed month.
>
> The range can be 366 days. Longer than that, the page says **Pick one year or less.** A start after the end says **The start day is after the end day.** A day after today says **Pick days up to today.** An unfinished first pull says **SourceDock is still loading this store's orders. Pick days once it is done.** A start before the first order day runs from that first day. The start box shows the new day. There is no note.

> [accordion] How this month's forecast is built
>
> The **This month** tile wears a **Forecast** badge. Its dates read "Oct 1–31". No line on this tile wears **est.** The badge and the hover say the whole figure is the forecast.
>
> ![The top of the This month tile: a FORECAST badge, the dates Oct 1-31, and Sales \$694.62.](https://mintcdn.com/sourcedock/tG5SWyMWDF-7qUYV/images/deep-dives/sales-numbers/06-store-this-month-forecast-head.png?fit=max\&auto=format\&n=tG5SWyMWDF-7qUYV\&q=85\&s=6213b0439f1d0638c8fc32e752ba75b2)
>
> Whole demo US store: the top of the This month tile. Notice the Forecast badge and the dates Oct 1–31, the whole month.
>
> Today is left out of the average. A part day would drag the average down. Full days so far are October 1, 2, and 3. That is 3 days. October has 31 days. Days left are 31 − 3 = 28. Today is one of those 28.
>
> Each full day matches, so the daily average is that day. The forecast is the 3 days already in, plus 28 times one day. That is the same as one day times 31.
>
> **1. Start from the full days**
>
> Three full days of sales are 3 × \$100.00 = \$300.00. Units are 15. Orders are 15. The order count is the whole store's. An order with two products is still one order.
>
> **2. Add the daily average for each day left**
>
> The average sale day is \$100.00. 28 × \$100.00 = \$2,800.00. Sales are \$300.00 + \$2,800.00 = \$3,100.00. Units are 5 × 31 = 155. Orders are 155.
>
> **3. Do that for every other line**
>
> Promo is -\$2 × 31 = -\$62.00. Ad spend is -\$1 × 31 = -\$31.00. Refunds are -\$10 × 31 = -\$310.00. Amazon fees are -\$40 × 31 = -\$1,240.00. COGS is -\$40 × 31 = -\$1,240.00.
>
> **4. Add up profit, then take off real expenses**
>
> Gross profit is \$7.00 × 31 = \$217.00. The \$8 expense is not projected. It is the real charge, because October 2 sits inside October 1 through October 31. Net profit is \$217.00 + -\$8.00 = \$209.00.
>
> A charge dated October 20 would sit in this tile too. It would not sit in **Month to date**. Month to date stops today.
>
> Margin divides \$209.00 by \$3,100.00. That is 6.7419…%. The page rounds to 6.74, then prints one decimal. The tile shows 6.7%.
>
> ROI divides \$209.00 by \$1,240.00. That is 16.8548…%. The page rounds to 16.85, then prints one decimal. 16.85 prints as 16.9%.
>
> The forecast tile reads:
>
> **Sales** \$3,100.00. **Orders / Units** 155 / 155. **Refunds** -\$310.00. **Promo** -\$62.00. **Ad spend** -\$31.00. **Amazon fees** -\$1,240.00. **COGS** -\$1,240.00. **Gross profit** \$217.00. **Net profit** \$209.00. **Margin / ROI** 6.7% / 16.9%.
>
> **More** on this tile shows **Expenses recorded by you** -\$8.00 and **Estimated payout** \$1,240.00. Payout is one full day's \$40 payout times 31. The \$8 expense is not in it. **TACOS** is \$31 / \$3,100 = 1.0%. **% Refunds** is 31 / 155 = 20.0%.
>
> Before a month has 2 full days, the average is last month's daily average instead. This October has 3 full days, so it uses this month. Ad spend is projected only when this month has an ad figure and the days the average comes from have one too. If not, ad spend stays a dash. It is never a projection of nothing.
>
> > [!NOTE]
> >
> > Storage is the one line that does not use this month's days. Amazon bills a month's storage after the month ends. Say the latest storage bill is \$30.00 for a 30-day month. That is \$1.00 a day. October has 31 days, so the forecast puts -\$31.00 of storage on **Store fees (no product)**. Product rows carry none of it. This blender month has no storage bill, so that -\$31.00 is not inside the -\$1,240.00 of sale fees above.
>
> The warning chips under the tiles use real units. On **This month** they use month to date, not the 155 projected units. This story has no missing cost, no missing price, and no quiet order, so the chip line is empty.

> [accordion] The chart
>
> The chart sits under the tiles. Its legend is **Sales** and **Net profit**. On **This month** a hollow **Forecast** key is added.
>
> **Month to date** is one bar a day. The title reads **Daily sales and net profit · Month to date**.
>
> ![A bar chart titled Daily sales and net profit · Month to date, from Oct 1 to Oct 28, with blue Sales bars and green Net profit bars, and red bars below \$0 on Oct 6 and Oct 23.](https://mintcdn.com/sourcedock/g6QTK-EfTuTYg92B/images/deep-dives/sales-numbers/07-store-chart-month-to-date.png?fit=max\&auto=format\&n=g6QTK-EfTuTYg92B\&q=85\&s=29679c3708afdb1fdf57be6b393e5360)
>
> Whole demo US store: the chart on Month to date. Notice one pair of bars a day, with a red bar on days when net profit was below \$0.
>
> | Day | Sales | Net profit | Why the net profit |
> | - | - | - | - |
> | Oct 1 | \$100.00 | \$7.00 | The full day |
> | Oct 2 | \$100.00 | -\$1.00 | \$7.00 minus the \$8.00 expense |
> | Oct 3 | \$100.00 | \$7.00 | The full day |
> | Oct 4 | \$100.00 | \$19.00 | Today, with no expense |
>
> The bars add up. Sales are \$400.00. Net profit is \$7 − \$1 + \$7 + \$19 = \$32.00. A net profit below zero is red. October 2 is red.
>
> **Today** and **Yesterday** use an hour bar instead. The title starts with **Hourly**. Each hour is on the Pacific clock. Hours with no money are empty. The hours still add up to the tile.
>
> On **This month**, October 1 to October 3 stay the real bars, including October 2 at -\$1.00. October 4 through October 31 are hollow forecast bars. Each of those is the average day: **Sales** \$100.00 and **Net profit** \$7.00. They are not today's real \$19.00. The **Today** tile is the real day. The forecast chart's October 4 is the average day.
>
> Those bars add up to the forecast tile. Sales are 31 × \$100.00 = \$3,100.00. Net profit is \$7 + -\$1 + \$7 + 28 × \$7 = \$209.00.

> [accordion] The product table
>
> The table is the picked tile's products. **Month to date** is picked below. There is no "Products" heading. The columns that start on are **Product**, **Units Sold**, **Refunds**, **Sales**, **Net profit**, **ROI**, **Profit margin %**, and **COGS**.
>
> **Refunds** in this table is a unit count. The tile's **Refunds** is the money. The money column is named **Refund cost**. It starts hidden. So do **Orders**, **Promo**, **Ad spend**, **Amazon fees**, and **Gross profit**. You can turn them on. They use the same figures as the tile.
>
> ![The product table with columns Product, Units Sold, Refunds, Sales, Net profit, ROI, Profit margin % and COGS. The row Mattel Games 42003 Uno Card Game, B01MG6C6K9, reads 3, 0, \$60.00, \$13.50, 52.9%, 22.5%, -\$25.50, and the row Total of the products shown · Month to date matches it.](https://mintcdn.com/sourcedock/Wo_TE8lDcn_pLDRl/images/deep-dives/sales-numbers/08-uno-table.png?fit=max\&auto=format\&n=Wo_TE8lDcn_pLDRl\&q=85\&s=1104627afd9c24b1cc97ddb0587c2a03)
>
> Uno card game: the product table on Month to date, searched for B01MG6C6K9. Notice Units Sold 3 and Sales $60.00, which is 3 × $20.00.
>
> The BrightMix row is the product only. The \$8 expense is not on it.
>
> | Column | BrightMix blender |
> | - | - |
> | **Units Sold** | 20 |
> | **Refunds** | 3 |
> | **Sales** | \$400.00 |
> | **Net profit** | \$40.00 **est.** |
> | **ROI** | 25.0% |
> | **Profit margin %** | 10.0% |
> | **COGS** | -\$160.00 |
>
> Product net profit is the \$40.00 gross profit. It wears **est.**, like the tile, because it includes the ad estimate. Margin is \$40 / \$400 = 10.0%. ROI is \$40 / \$160 = 25.0%. The tile says \$32.00, 8.0%, and 20.0%, because the tile includes the \$8 expense.
>
> Under the product, **Store fees (no product)** holds money that belongs to the whole store. Here that is the \$8 expense. Its sales are \$0.00. Its net profit is -\$8.00. Its margin and ROI are dashes, because sales are \$0 and cost is \$0.
>
> The bottom row is "Total · Month to date", with **Ledger →**. It matches the tile. 20 units, 3 refunds, \$400.00 sales, \$32.00 net profit with **est.**, 20.0% ROI, 8.0% margin, -\$160.00 COGS. The product row plus the store row add up to this total, to the cent.
>
> Search and filters change the rows only. The tiles stay the store's. A narrowed table labels the bottom row **Total of the products shown**. **Ledger →** is not offered on that row. The search box says **Search products, ASINs, SKUs or orders**. In the filter panel, **Shipped by** offers **FBA** and **FBM**. **Refunds** offers **Has a refund**. **Profit** offers "Profit above \$0" and "Profit below \$0".
>
> Open the blender row. The sentence reads: 20 units sold for \$400.00 this month so far. \$40.00 net profit after fees, ads and cost of goods.
>
> The next line reads: Per unit · Sales \$20.00 · Amazon fees -\$8.00 · COGS -\$8.00 · Net \$2.00.
>
> Each per-unit figure is that column divided by units, rounded to the cent. \$40.00 / 20 = \$2.00. The link **Full ledger →** opens this product only.

> [accordion] The full ledger
>
> **Full ledger →** opens a side panel. The tabs are **Ledger** and **Orders**.
>
> ![A side panel titled All products · Month to date, 19 products · 24 units · Oct 1-28, with tabs Ledger and Orders · 24. The ledger reads Sales \$605.00, Units 24, Refunds 0, Promo \$0.00, Advertising cost \$0.00, Refund cost \$0.00, Amazon fees -\$228.19, Cost of goods -\$269.60, Gross profit \$107.21, Expenses \$0.00, Net profit \$107.21, Estimated payout \$369.81, then Metrics: TACOS 0.0%, % Refunds 0.0%, Sellable returns, Margin 17.7%, ROI 39.8%, Sessions and Unit session percentage.](https://mintcdn.com/sourcedock/g6QTK-EfTuTYg92B/images/deep-dives/sales-numbers/09-store-full-ledger.png?fit=max\&auto=format\&n=g6QTK-EfTuTYg92B\&q=85\&s=49563cf57177a9c518afccf45be96f2b)
>
> Whole demo US store: the full ledger for Month to date. Notice the two tabs, Ledger and Orders · 24, and the Metrics list under the ledger.
>
> The store panel is titled "All products · Month to date". A product panel uses the product name. The store ledger is the tile. The product ledger is the row, so its **Expenses recorded by you** is \$0.00. The hover says the expenses belong to the whole store.
>
> The lines, in order, for the store:
>
> 1. **Sales** \$400.00
> 2. **Units** 20
> 3. **Refunds** 3
> 4. **Promo** -\$6.00
> 5. **Advertising cost** -\$4.00 **est.**
> 6. **Refund cost** -\$30.00
> 7. **Amazon fees** -\$160.00
> 8. **Cost of goods** -\$160.00
> 9. **Gross profit** \$40.00 **est.**
> 10. **Expenses recorded by you** -\$8.00
> 11. **Net profit** \$32.00 **est.**
> 12. **Estimated payout** \$180.00
>
> **Refunds** here is the unit count. **Refund cost** is the money. Open **Refund cost** and the three refunds add like this.
>
> * **Refunded amount** -\$60.00. That is 3 × -\$20.
> * **Refund commission** -\$3.00. That is 3 × -\$1.
> * **Refunded referral fee** \$9.00. That is 3 × \$3.
> * **Value of returned items** \$24.00. That is 3 × \$8.
>
> -\$60 + -\$3 + \$9 + \$24 = -\$30. **Refunded amount**, **Refund commission**, and **Refunded referral fee** always show. **Other refund lines** and **Value of returned items** show only when they are not \$0.00.
>
> Open **Amazon fees**. This month shows two lines.
>
> * **FBA per unit fulfilment fee** -\$100.00. That is 20 × -\$5.
> * **Referral fee** -\$60.00. That is 20 × -\$3.
>
> Other fee lines show only when they are not zero. **Closing fee** is the flat fee on a media item. **Other sale fees** covers the rest of a sale's fees. **Inbound transportation** is what Amazon charged to ship your boxes in, on the day it charged you. **FBA inbound convenience fee** is the placement fee. **FBA storage fee**, **FBA removal fee**, and **FBA disposal fee** are those charges. **Liquidation** is money Amazon paid for units it sold off. **Reimbursements for lost or damaged units** is what Amazon paid you for units it lost or damaged. **Reversal reimbursement** is what it paid when a refund's item never came back. A payment from Amazon is added into fees, so it offsets the costs. **Subscription** is the selling-plan fee. **Returns processing fee**, **Grade and Resell fee**, and **Coupon, deal and Vine fees** are those charges, on the day Amazon charged them. **Chargebacks and A-to-z claims** is money Amazon took back. **Shipping labels** is labels you bought on Amazon for orders you shipped.
>
> **Cost of goods** opens to **Cost of goods sold** -\$160.00 while no purchase has its tax and shipping filled in. When one does, the line splits into **Item cost**, **Sales tax**, **Shipping**, and, if needed, **Split unknown**. Those parts add back to cost of goods sold to the cent. The forecast keeps the one line. It does not project the parts.
>
> ![The ledger with Cost of goods -\$269.60 opened into Cost of goods sold -\$242.00, Lost/damaged by Amazon -\$16.00 and Inbound for units sold -\$11.60, above Gross profit \$107.21.](https://mintcdn.com/sourcedock/g6QTK-EfTuTYg92B/images/deep-dives/sales-numbers/10-store-cost-of-goods.png?fit=max\&auto=format\&n=g6QTK-EfTuTYg92B\&q=85\&s=4b9d5eaa4c7f9f33591205012c6bee70)
>
> Whole demo US store: Cost of goods, opened in the ledger. Notice the three lines under it add up: $242.00 + $16.00 + $11.60 = $269.60.
>
> **Lost/damaged by Amazon** shows only when Amazon lost or damaged units in the period. That cost is added on the day Amazon recorded it. It is not in this month.
>
> **Inbound for units sold** shows when a sold unit carries inbound shipping, or when some of that charge is still waiting on unsold units. Each sold unit carries its share. The payout still takes the whole charge on the day Amazon billed it. A charge Capital Recovery has not booked stays in Amazon fees instead. This month has no inbound bill.
>
> Under the ledger, **Metrics** shows:
>
> * **TACOS** 1.0% **est.**
> * **% Refunds** 15.0%
> * **Sellable returns** 100.0%. All 3 returned units were sellable. 3 / 3 = 100.0%.
> * **Margin** 8.0%
> * **ROI** 20.0%
> * **Sessions** is a dash. So is **Unit session percentage**. Amazon does not give SourceDock sessions for a period.
>
> **% of units taxed** shows only when a sold unit's purchase has its tax filled in, and never on the forecast.
>
> On a product, the **Orders** tab is titled **Last orders**. The store's own panel does not use that title. Each line says **Sale** or **Refund**, the unit count, the Pacific time, and the order number. A sale amount is what the buyer paid. A refund amount is what Amazon gave back. This story's lines are paid out, so they have no extra mark. A sale Amazon has not paid shows **estimated**. A sale Amazon has not changed in over 30 days shows **pending**, and no money counts for it until Amazon pays it. The list is 25 lines a page.

> [accordion] A Canada store, US stock, and All stores
>
> A Canada store's Sales page is in Canadian dollars. Amounts use **CA\$**. A Mexico store has its own Sales page in its own money. One store's page never mixes the other's money.
>
> Say the same blender ships from your US stock, because the Canada store has no purchases of its own. A Canada store that has its own stock uses that cost, in CA\$, with no conversion.
>
> The US cost is \$8.00. SourceDock changes it at the European Central Bank's rate for the day Amazon booked the sale. That day is the UTC date of the booking, which can be the next calendar day on the Pacific clock. For an order Amazon has not paid yet, it uses the order day, and the oldest US stock it expects to ship. The **COGS** hover on the Canada page says this. The US page does not, because its money is already US dollars.
>
> Use a made-up rate that is easy to divide. One euro buys 1.00 US dollar and 1.25 Canadian dollars. Then \$8.00 becomes CA\$10.00. The Canada page's COGS for that unit is CA\$10.00, not \$8.00.
>
> If the bank has no rate for that day, and none in the 7 days before it, SourceDock does not guess. The cost is left out.
>
> **All stores** adds every store in US dollars. The note reads **All stores, in US\$**. Each tile uses one rate. It is the average of the bank's rate for each day of that tile. A weekend uses the nearest earlier bank day, never a later one.
>
> Say the rate was the same on every day of "Oct 1–4". The line reads "1 CA\$ = US\$0.8000, ECB average Oct 1–4". The hover says Amazon pays you at its own rate, so deposits can differ a little.
>
> Your US store's month-to-date sales are \$400.00. Say the Canada store's own sales for that tile are CA\$100.00. At 0.8000, CA\$100.00 becomes \$80.00. **All stores** sales are \$400.00 + \$80.00 = \$480.00.
>
> The rows are converted together, so the products plus **Store fees (no product)** add up to the tile to the cent. Margin and ROI are worked out again from the converted dollars. They are not the old percents moved across.
>
> The Canada page turned \$8.00 into CA\$10.00 at the booking day's rate. **All stores** then turns that CA\$10.00 into US dollars at the tile's average rate. When the two rates match, the cost shows as \$8.00 again. When they differ, the All stores cost is not \$8.00.
>
> A Canada product row wears a **CA** chip. The hover says the row is from your Canada store. The row's ledger figures are in US dollars. Its **Last orders** stay in CA\$, because those amounts are Amazon's own. They are not converted.
>
> The store-wide **Orders** tab on **All stores** does not list every store. It says orders show one store at a time.
>
> If a tile's days have no bank rate, that store is left out of that tile only. Its sales stay in its own money, off to the side. The page says the rate is not in yet, or that SourceDock keeps the bank's rates for the last two years only. It does not guess a rate.

> [accordion] Marks that change how a number looks
>
> **est.** is a small mark on a figure that is not finished. In this October it sits on ad spend, and on gross profit and net profit, for every tile except **Last month** (its ad figure is \$0.00) and **This month**. The forecast uses the badge instead of **est.** COGS never wears **est.** The cost is a real purchase cost. Only which stock an unpaid order ships from is a pick. The hover says so.
>
> One more blender, not in the numbers above, shows the other estimate. The buyer orders it today. Amazon has not paid it. **Sales** includes the \$20 order price, and that \$20 wears **est.** The count can still change if the buyer cancels. **Amazon fees** use Amazon's fee estimate, and that part wears **est.** If Amazon has not sent a price, the sales for that unit are left out. If it has not sent a fee estimate, the fees are left out. If the order has not changed in over 30 days, the unit still counts, with no sales, no fees, and no cost, until Amazon pays it.
>
> A unit with no cost is left out of COGS. Profit looks higher until you add the cost. The ledger says how many units have no cost yet, and links **Add missing costs**. If every unit behind the line has no cost, COGS reads **No cost yet**, never \$0.00.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.