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

> ## Agent Instructions
> Ready for Commerce is an ecosystem that currently contains two products, PIM and Repricer, standing on one shared foundation: one identity, one organization, one team, one bill. Do not call it a platform with features, and never hint at an unreleased product.
> PIM connects to Shopify, Amazon, Square, Google Merchant Center and BigCommerce. Repricer connects to Amazon, Walmart, Shopify, BigCommerce, eBay and Square. The two products do not share one list, and each integration is authorized separately inside each product. The roster grows on purpose, so describe what the product does and let a table carry which integrations do it today, instead of counting them or writing that only one does something.
> Integration is the word this product uses, and it is the default in the documentation: the connection, the account, the Integrations screen, the per-account settings and the sync state are all integrations. Channel is reserved for the narrow sense of a destination where a listing lives, as in a product being live on a channel or archived on the channel.
> Newegg is not a supported channel. Do not describe it.
> On Amazon, PIM manages the offer only: price, availability and condition. It does not publish listing content such as titles, descriptions, images or specifications.
> Sign-in is passwordless: a single-use code emailed to the user, or Google. There are no passwords anywhere, so never describe a password, a sign-up with a password, or an email confirmation link.
> There is no public API for customers and no customer-facing webhooks. There is no organization-wide activity feed and no audit export, but the PIM does keep version history on products, brands, categories, tags and specifications, with who changed what and a restore, so never write that changes are not recorded or that an edit cannot be undone. Do not describe capabilities that are not documented here.
> Never write that the products have no AI, and never write that anything is AI-powered. Both are wrong. The PIM's image Optimizer runs AI-backed transforms the seller starts on purpose: Upscale, Remove background, and the region selection behind Refine. The Repricer reads competitor prices off web pages on the server. No control, badge or tooltip in either product names AI, and the seller never writes a prompt, so describe what the buttons do in the app's own words instead of reaching for the word.
> A PIM product, brand, category or variant can be switched off per connected integration account. Hover the channel badge and the switch is beside the account name in the card that opens. It carries no visible caption, so never call it the Sync switch: Sync is only its accessible name. On a variant-grained provider, Amazon today, the switch moves into the variant editor. On a product it asks whether to delete it from the channel, archive it there, or leave it live. Disabling stops publishing, not reading. There is still no per-field sync toggle.
> The PIM's image Optimizer replaced a feature called Squarify, which no longer exists. It resizes to an aspect ratio or to exact dimensions, removes backgrounds, upscales, trims the transparent margin around a cutout and re-centers it, pads, fills and re-encodes, and it always publishes a new asset instead of changing the original. Nothing crops into the picture: the subject is always contained whole.
> The PIM has no repricing engine and never reacts to a competitor's price. It does build the price it publishes to each integration account from the seller's own fields, configured in that account's settings, so do not write that the PIM has no pricing rules.
> Neither product has an in-app notification center, bell or inbox. Notifications are delivered by email only.
> Billing is per organization and per product, and only the organization owner can see or change it. Team members are free and uncounted, so never describe seats or per-user pricing.
> The seller never picks a plan. Each product has twelve price tiers assigned automatically from usage: the PIM from catalog product count, which includes drafts and archived products, and the Repricer from trailing 30-day sales. Nothing is feature-gated by plan and exceeding a tier never blocks work, so never write that a feature requires a higher plan.
> A subscription that is past due or paused makes the product read-only, which stops repricing and blocks edits without deleting data. Only a canceled subscription locks the seller out. Nothing is ever charged without a payment method on file.
> Pages containing the text 'This page has not been written yet', or its Spanish equivalent 'Esta página todavía no está escrita', are placeholders. Do not treat their headings as documented behavior.

# Sales report

> What you sold over the date range you pick, how the revenue moved day by day, and which of the regions you sell in it came from.

The sales report tells you what you sold over a stretch of time. You pick the dates. It gives you what your orders came to in money, how many items went out, how many orders that was, and what an average order was worth to you.

You get those four figures at the top of it. Under them is a chart of your revenue day by day. Under that is one bar for each region you sell in, so you can see where the money came from. At the bottom is a table with one row for every day in your range.

You come here when the question is about a period instead of about one listing. This report tells you whether selling went up or down since last month. It tells you which of the places you sell brings most of it in, and what your typical order is worth. Nothing on this screen changes a price, and nothing you click here changes anything at all.

Click `Reports` in the sidebar down the left, then click `Sales`, the first of the six cards. The report opens in a dialog over the screen under the title `Sales Report`, and everything on this page is inside that dialog.

## Before you start

### What your role lets you do

Whatever your role, if you can open `Reports` you can read this report end to end, and nothing on it is hidden or trimmed for anyone. Roles are set in [team, roles and permissions](/team#what-each-repricer-role-can-do).

### Your sales are a couple of hours behind

Every figure here is built from the orders Repricer reads out of your seller accounts, and it reads them every 2 hours. So the last hour or two of your selling is usually not in the report yet, and a range that ends today is always a little short. [What Repricer reads](/repricer/integrations/pull) has the rest of that schedule.

## How to read the sales report

<Steps>
  <Step title="Open the report">
    Click `Reports` in the sidebar down the left, then click the `Sales` card, the first of the six. The report opens in a dialog over the screen.
  </Step>

  <Step title="Pick the period you want">
    In the bar across the top of the dialog is a dropdown reading `Last 30 days`. Open it and pick another period from the list, or pick a start date and an end date of your own on the calendar beside it.
  </Step>

  <Step title="Read the four figures">
    Under the heading `Overview` are `Total Revenue`, `Units Sold`, `Total Orders` and `Avg Order Value`. Hover the small info icon beside any of them and you get a sentence saying what that figure counts.
  </Step>

  <Step title="Look at the shape of it">
    `Revenue Trend`, the chart under those figures, is your revenue day by day with the oldest day at the left. Hover any point on the line for that day's date and its revenue.
  </Step>

  <Step title="Find the day you want">
    `Daily Breakdown`, the table at the bottom of the dialog, is one row per day, newest first. Click a column heading to sort by that column instead.
  </Step>
</Steps>

That is the whole report. Close the dialog with the × at the top of it, with the Escape key, or by clicking outside it, and you are back on the six cards.

Everything below explains one piece at a time. The last two sections are the ones worth reading on the day your figure does not match what your marketplace tells you.

## Every option in detail

The report has four parts, in this order down the dialog: `Overview`, `Revenue Trend`, `Revenue by Region` and `Daily Breakdown`. The sections below follow them in that order.

The date range and the `Integration`, `Account` and `Region` dropdowns are in the bar across the top of the dialog, and they narrow all four parts at once. [Reports](/repricer/reports) covers what each of those does.

### The four figures at the top

`Overview` is the heading over the row of figures at the top of the report dialog, and every one of them counts your whole date range.

| Figure | What it counts |
| --- | --- |
| `Total Revenue` | What your orders came to, in your organization's currency |
| `Units Sold` | How many individual items those orders were for |
| `Total Orders` | How many orders came in |
| `Avg Order Value` | `Total Revenue` divided by `Total Orders` |

`Avg Order Value` reads as zero when you pick a range with no orders in it, because there is nothing to divide by.

On a narrow screen the four figures are shortened to fit, so your revenue reads as a rounded figure with a `K` or an `M` on the end. Widen the dialog and you get the exact figure back.

### Reading the revenue chart

`Revenue Trend` is the chart under the four figures at the top of the report dialog. It has one point for every day in your range, with your oldest day at the left and today at the right. A line going up is a stretch where you sold more as it went on.

Hover any point, or tap it on a phone, and you get that day's date and its revenue. The figures down the left edge are shortened the way the ones above them are. Read the chart for the shape, and read `Daily Breakdown` at the bottom of the dialog when you need the figure itself.

The chart and that table cover exactly the same days in opposite directions. The chart starts at your oldest day and the table starts at your newest.

### Reading revenue by region

`Revenue by Region` is the panel under the revenue chart, about halfway down the report dialog. A region is one place a seller account of yours sells, so one Amazon account selling in two countries is two regions here. [Accounts and regions](/repricer/integrations/accounts#where-your-regions-come-from) covers where your regions come from.

You get one bar per region, longest first, with the region's name at the left of the bar and its revenue at the right. So this is a chart you can read a figure off, not only a shape.

Every bar is in your organization's currency, whatever currency that region sells in. That is what makes the bars comparable, because a region selling in pesos and a region selling in dollars are converted first and then put beside each other.

Revenue is the only thing split up this way. How many units and how many orders each region brought you are not on this chart, and not anywhere else in this report.

When nothing sold anywhere in your range, the panel reads `No regional data available` instead of drawing bars.

### Reading the daily breakdown table

`Daily Breakdown` is the table at the bottom of the report dialog, and it is where you find the exact figures.

| Column | What it shows |
| --- | --- |
| `Date` | One day |
| `Revenue` | What that day's orders came to |
| `Units` | How many individual items that day's orders were for |
| `Orders` | How many orders came in that day |
| `Avg Order Value` | That day's revenue divided by that day's orders |

The table opens with your newest day first, and clicking any column heading sorts by that column instead. Above the rows is the same toolbar every other table in the Repricer gives you, with `Search`, `Columns`, `Filter` and `Density` on it. [Filters](/repricer/filters) covers what those four do.

**There is a row for every day in your range**, including the days you sold nothing. Those days read zero instead of being left out, which is what makes the chart above them a continuous line.

**This table has no pages.** Every day is on screen at once, one under the other. So a short range gives you a short table, and `All time` on a long history gives you a very long one. Scroll it, or pick closer dates.

### What the sales report cannot do

| You cannot | Do this instead |
| --- | --- |
| See which products the money came from | Open `Units Sold Report`, which has a table of your SKUs, and [units sold](/repricer/reports/units-sold#how-to-read-the-units-sold-report) covers it |
| See what you kept after marketplace fees and what the goods cost you | Open `Profitability Report`, which [profitability](/repricer/reports/profitability) covers |
| See how many units or orders each region brought in | Read `Units by Region` in `Units Sold Report` |
| See a refund, an order, or who bought | This report is built from daily totals. Look those up where the order was placed |

## What the numbers count

### What is in your revenue and what is not

`Total Revenue`, the first of the four figures at the top of the report dialog, is what your orders came to. Your marketplace's commission is not taken off it, and neither is what the goods cost you, so it is a larger figure than what you kept. `Profitability Report` is the one that takes both off.

Refunds work the other way. Where your integration tells Repricer about a refund, that money comes off your revenue before the figure is built. `Units Sold` and `Total Orders` never move for a refund, because they count what was ordered from you, whatever happened to it after.

**A refund comes off the day the order came in**, not the day you gave the money back. So refunding an order from 3 weeks ago changes that day's row in `Daily Breakdown`, and today's row stays where it was.

<Accordion title="Which integrations tell Repricer about a refund">
  | Integration | What a refund does to your revenue |
  | --- | --- |
  | Amazon | Nothing. Amazon reports the orders and not the refunds, so revenue here is what was ordered |
  | Walmart | Nothing, for the same reason |
  | Shopify | Comes off, at the amount refunded on the items |
  | BigCommerce | Comes off, at the amount refunded on the order |
  | eBay | Comes off when an order is canceled, at what its items came to |
  | Square | Comes off, at the amount returned on the order |

  So when you compare this report against Amazon's own figures you are comparing one gross figure with another, and when you compare it against Shopify you are not.
</Accordion>

### Why your figure and your marketplace's figure differ

Four things move your figure and theirs apart, and none of them is a mistake.

| What | Which way it moves your figure |
| --- | --- |
| Your sales are read every 2 hours | Down, over a range that ends today. The last hour or two of selling is not in yet |
| Refunds | Down, on the integrations that report them, and not at all on the ones that do not |
| Fees and costs | Up, against any figure of your marketplace's that already has its commission taken off |
| One currency for everything | Either way, by however much the rate has moved |

[What Repricer reads](/repricer/integrations/pull) has the reading schedule, and [reports](/repricer/reports) has the one currency every figure on this screen is converted into.

### Why the average is not the average of the column

`Avg Order Value` at the top of the report dialog is your whole `Total Revenue` divided by your whole `Total Orders`. The `Avg Order Value` column in `Daily Breakdown`, the table at the bottom, is each day's revenue divided by that day's orders.

Those are two different sums, so adding up the column and dividing by the number of days does not give you the figure at the top. A day with one large order and few others has a high figure in its own row and almost no effect on the figure above.

## When something goes wrong

Every message that can appear instead of this report is on [reports](/repricer/reports), with what to do about each one. The two below are not messages. The report loads, and the figures are not the ones you expected.

### Every figure reads zero

This report does not tell you it found nothing. When there is nothing to count in your range, `Total Revenue`, `Units Sold` and `Total Orders` all read zero, `Revenue by Region` reads `No regional data available`, and every row in `Daily Breakdown` reads zero. That looks the same whether you sold nothing or you narrowed the screen too far.

Three things to check, in this order:

| What to check | What to do |
| --- | --- |
| Your date range | Open the dropdown at the top of the dialog and pick `All time`. Anything at all in your history shows up |
| The `Integration`, `Account` and `Region` dropdowns in that same bar | Set all three back to `All`. One of them may be on an account that sold nothing in that period |
| Whether anything has come in yet | An account you connected today has nothing until its first read finishes, which [what Repricer reads](/repricer/integrations/pull) covers |

### A day you know you sold on reads zero

The usual reason is the clock. Sales are read every 2 hours, so today's row and the end of yesterday's are still filling in, and the figures move when you come back later.

The other reason is the scope. In the bar across the top of the dialog are the `Integration`, `Account` and `Region` dropdowns, and a day counts only what they leave in. So a day whose only order was on an account you have narrowed away reads zero.

## Where to go next

<Columns cols={2}>
  <Card title="Units sold" icon="boxes" href="/repricer/reports/units-sold">
    The same days counted in items instead of money, and which of your products they were.
  </Card>

  <Card title="Profitability" icon="chart-pie" href="/repricer/reports/profitability">
    What is left of this revenue after marketplace fees and what the goods cost you.
  </Card>

  <Card title="Reports" icon="chart-bar" href="/repricer/reports">
    The date range, the three dropdowns and the currency, which all six reports share.
  </Card>

  <Card title="What Repricer reads" icon="download" href="/repricer/integrations/pull">
    Where your sales come from, how often they are read, and how far back they go.
  </Card>
</Columns>
