> ## 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.

# Cost, fees and profit

> Your cost plus the fee the sales channel takes is what turns a price into profit, and the table shows you all three once the cost is there.

Your cost is what one unit of an item costs you. There is one cost per listing and you put it there yourself, because until it is there the Repricer cannot tell you whether a sale makes you money.

On a marketplace, where you sell alongside other sellers, the Repricer also estimates the fee the channel takes out of a sale at your current price. Put the two together and you get profit: your price, minus that fee, minus your cost. There is a column for each of the three on every row of your [listings table](/repricer/listings).

Most people come here for one of three reasons. The `Profit` column is empty and they want to know why, repricing has stopped on listings that need a cost, or they want to know what a sale really leaves them.

You get to all of it from `Listings`, in the sidebar down the left. `Cost`, `Fees` and `Profit` are three columns in the table, and the full breakdown for one item is on the `Insights` tab inside a listing.

## Before you start

### What your role lets you do

| What you want to do | The lowest role that can |
| --- | --- |
| Read the `Cost`, `Fees` and `Profit` columns | `Analyst` |
| Type a cost onto a listing | `Editor` |
| Send costs in with an import | `Manager` |

Roles are set in [team, roles and permissions](/team#what-each-repricer-role-can-do).

### A zero in a file clears a cost

<Warning>
  A `0` in the `Cost` column of an import file empties the cost on every listing that file matches. Nothing keeps the old number, so it is gone. The import asks you to confirm first.
</Warning>

## How to get a cost onto your listings

<Steps>
  <Step title="See what is there already">
    Click `Listings` in the sidebar down the left and read the `Cost` column. On a store of your own, some rows are filled in before you touch anything, because the Repricer copies the cost you already keep on the product.
  </Step>

  <Step title="Type a cost on one listing">
    Click the cell in the `Cost` column on the row you want. It turns into a box. Type the amount and press Enter.
  </Step>

  <Step title="Send the rest in with a file">
    For more listings than you want to type, click `Uploads` in the sidebar and run an [import](/repricer/uploads/imports) with a `SKU` column and a `Cost` column in it.
  </Step>

  <Step title="Check the profit">
    Back on `Listings`, the `Profit` column on that row now has a number in it. Hover the cell for the sum that produced it.
  </Step>
</Steps>

That is all a cost needs from you. `Profit` fills in on every listing that has one, and a listing whose strategy builds its floor out of your cost starts repricing again as soon as the number saves.

Everything below explains where a cost can come from, which channels get a fee estimate, and what that estimate leaves out. You do not need any of it to fill a cost in.

## Every option in detail

### Where your cost comes from

There is one cost per listing, and everything in the table below writes to it. The same item on two connected accounts is two listings, so it has two costs, and filling one in does nothing to the other.

| Where it comes from | What it does to a cost you already have |
| --- | --- |
| The `Cost` column in the listings table | Replaces it |
| `Unit Cost`, under `Cost of Goods` on the `Pricing` tab inside a listing | Replaces it |
| An [import](/repricer/uploads/imports) with a `Cost` column in the file | Replaces it, and a `0` clears it |
| A [sync link](/repricer/listings/sync-links) that copies `Cost` from another listing | Replaces it |
| The product in your own store, read the first time the listing shows up | Leaves it alone. This only ever fills an empty cost |
| A variant matched in the [PIM](/repricer/integrations/pim) | Replaces it, and locks the field here |

**A store of your own can fill the cost in for you, once.** Shopify and BigCommerce both keep a cost on the product itself. The Repricer copies that number across the first time the listing shows up. It never writes over a cost that is already there, so a number you correct here stays corrected through every later sync.

**A listing matched in the PIM has no cost you can type.** Your cost, MAP and MSRP all come down from the matched variant. On the `Pricing` tab, `Unit Cost` is a box you cannot type into with `Managed by PIM` beside it. Click that badge and the variant opens in the PIM in a new tab.

Nothing keeps the cost you replaced. There is one number per listing and no history behind it, so write the old one down if you might want it back.

### Which channels get a fee estimate

A marketplace takes a percentage of every order you sell through it, and that percentage can be worked out before the order happens. So there is a number to estimate, and the Repricer estimates it. On a store of your own what comes out of a sale is card processing. That depends on your plan, your payment provider and the card the shopper used, so the Repricer does not guess at it.

| Channel | What the `Fees` column gives you |
| --- | --- |
| Amazon | An estimate from Amazon itself, for the price the listing is at |
| Walmart | An estimate the Repricer calculates from Walmart's published rates |
| eBay | An estimate the Repricer calculates from eBay's published rates |
| Shopify | Nothing |
| BigCommerce | Nothing |
| Square | Nothing |

**Where the column is empty, profit is your price minus your cost.** Nothing failed and nothing is missing. `Profit` on those rows is what you keep before your payment provider takes anything, so it is the best case rather than the final number.

There is no field for a fee anywhere in the Repricer, on any channel. If you know what a sale really costs you, put the difference into the cost.

### What is inside a fee estimate

Hover a cell in the `Fees` column of the listings table and a panel opens headed `Fee breakdown`. The `Referral` and `Total Fees` lines each also show what they come to as a percentage of the price you are charging.

| Row | What it is |
| --- | --- |
| `Referral` | The channel's cut of the sale. On eBay this is the final value fee |
| `Fulfillment` | What the channel charges to pick, pack and ship. Only on an item the channel fulfills |
| `Total Fees` | Everything in the estimate added up |

A badge beside that heading reads `FBA` when the estimate has a fulfillment fee in it and `FBM` when it does not.

`Total Fees` can come to more than the rows above it. On eBay you also pay a small fixed fee on every order, and that fee is inside the total without a row of its own.

### Reading the profit on one listing

`Profit` is a column in the listings table, and it is your price, minus the estimated fee, minus your cost. It is worked out while you look at it, so a cost you correct changes the number with no reload.

The color of the number tells you where the listing stands before you read the number itself.

| Color | What it means |
| --- | --- |
| Green | You are making money on this listing |
| Amber | You are making money, and your profit is under 10% of the price |
| Red | You are selling at a loss, and the number has a minus sign in front of it |
| Plain | Your price covers your cost and the fee exactly, and no more |

Hover a cell in that column and you get the whole sum: `Price`, `Cost` and `Fees`, then `Profit`, `Margin` and `ROI`, under a heading that reads `Profitable`, `Loss` or `Break even`.

**`Margin` and `ROI` answer different questions.** `Margin` is your profit as a share of what the shopper pays, so it tells you how much of a sale you keep. `ROI` is your profit as a share of what you paid, so it tells you how hard your money is working. A cheap item can have a thin margin and a very high ROI at the same time.

### The full breakdown on the Insights tab

In the listings table, click any cell that does not open an edit and the listing opens in a dialog over the page. `Insights` is the third tab across the top of it. Four cards run along the top of that tab reading `Profit`, `Margin`, `ROI` and `Fees`. Hover any of the four and you get the formula behind it.

Under those four, the card called `Margin Analysis` takes one sale apart a line at a time.

| Row | What it is |
| --- | --- |
| `Selling price` | What the item is going for on the channel right now |
| `Referral fee` | The channel's cut, with what it is as a percentage of the price |
| `Fulfillment fee` | The fulfillment charge, on an item the channel fulfills |
| `Product cost` | Your cost, with what it is as a percentage of the price |
| `Net profit` | What is left of the price after the fee and your cost |

Open this card when the `Profit` column gives you a number you did not expect. It shows you which of the lines above is the one taking the money.

<AccordionGroup>
  <Accordion title="Why the Fees card can read lower than the Fees column">
    The `Fees` card and the `Margin Analysis` card add up the referral fee and the fulfillment fee, which is what the formula under the `Fees` card says they do. The `Fees` column in the listings table adds up everything in the estimate.

    On eBay that difference is the fixed fee per order, so the tab reads a few cents better than the table on the same listing. The table is the number your strategy prices against.
  </Accordion>

  <Accordion title="Where else your cost and your fees turn up">
    Two cards on your [dashboard](/repricer/dashboard), `With Cost` and `Without Cost`, split your listings by whether they have one. Click either and your listings open filtered to the rows it counted.

    The [profitability report](/repricer/reports/profitability) works out margin and ROI across the catalog. It counts only the listings that have a cost, so the totals on it describe part of your catalog and not all of it.

    An [export](/repricer/uploads/exports) can take the numbers out. `Cost` is in the `Pricing` group of columns, and `Referral Fee`, `FBA Fee`, `Total Fees` and `Est. Profit` are together in a group called `Fees & Profit`.
  </Accordion>
</AccordionGroup>

### Limits

| What | Limit |
| --- | --- |
| Costs on one listing | 1 |
| Fee estimates on one listing | 1 |
| Past costs kept | 0 |

### What cost and fees cannot do

| You cannot | Do this instead |
| --- | --- |
| Type in a fee of your own, or correct one | Build what you know into the cost |
| Split a cost into freight, duty, prep or storage | Add them up yourself and type the one number |
| Keep a second cost per supplier, or per quantity you buy | Type the one that applies today |
| Read a cost back after you replaced it | Type the old number in again |
| Change a cost on many listings from the table | Run an [import](/repricer/uploads/imports) with a `Cost` column |
| Get a fee estimate on a store of your own or on Square | Read `Profit` there as your price minus your cost |
| See which fee category the channel put your item in | Compare the estimate against what the channel actually charged you |

## What the fee estimate can miss

A fee estimate is a number good enough to price against. It is not your settlement statement, and knowing what it leaves out is what tells you how much room to leave above your cost.

### What the estimate covers

It covers the fees a channel charges on the sale itself, at the price the listing was at when the estimate was calculated. On Amazon the figures come from Amazon. On Walmart and eBay the Repricer applies the channel's published rates for the category the item is in.

That is the whole of it. Every charge below is real money leaving your account and none of it is in the number.

### What it leaves out

<AccordionGroup>
  <Accordion title="The Amazon charges that are not part of a sale">
    | What Amazon also bills you for | When |
    | --- | --- |
    | Storage, monthly and long term | Every month your stock is in their warehouse |
    | Inbound placement, prep and labeling | When you send stock in |
    | Returns processing, removals and disposals | When a unit comes back or goes out again |
    | Refund administration | When you refund a shopper |
    | Advertising | Whenever an ad of yours runs |
    | Your selling plan | Every month |
    | Currency conversion and payouts | Every time you get paid |

    None of these is charged per sale, which is why none of them is in a per-sale estimate. If they matter to you, work out what they come to per unit and add that to your cost.
  </Accordion>

  <Accordion title="What is not modeled on Walmart and eBay">
    Walmart fulfillment charges are not in the estimate, so an item Walmart ships for you shows the referral fee alone and reads better than it is.

    Fee promotions, category caps and store subscription discounts are outside it too. So are insertion fees, listing upgrades, international surcharges, advertising, and the higher rates a channel charges a seller below standard.

    The Repricer keeps its own copy of the published rates. The channels change theirs once or twice a year, so there is a stretch after a rate change where the estimate is the old one.
  </Accordion>

  <Accordion title="Why the estimate can be behind your price">
    A fee estimate is calculated for one price. New estimates are worked out in the background, account by account, and nothing on screen tells you when the estimate you are reading was last done.

    So a price that moved in the last few minutes can still show the fee, and the profit, for the price before it. The number catches up on its own, and there is nothing to click.
  </Accordion>

  <Accordion title="Shipping on Walmart and eBay">
    On Walmart and eBay the estimate is calculated from the item price alone. Both channels take their cut of the total the shopper pays, shipping included.

    So on a listing where the shopper pays shipping on top, the real fee is higher than the estimate by the channel's cut of the shipping.
  </Accordion>
</AccordionGroup>

## When something goes wrong

### The `Profit` column is empty

| Why | What to do |
| --- | --- |
| The listing has no cost | Fill the `Cost` column in on that row |
| The channel has not given the Repricer a price yet | Wait for the next sync, which runs every 10 minutes |

### The `Fees` column is empty

| Why | What to do |
| --- | --- |
| The listing is on a store of your own, or on Square | Nothing. There is no fee estimate on those |
| The listing only just arrived | Wait. A first estimate follows the first sync of a new account |
| The listing is not active on the channel | Put it back on sale on the channel |

### Repricing stopped and the reason is a missing cost

Two things tell you. `Repricing Status` on the row reads `Not working`, and hovering that cell gives you a panel headed `Repricing Issues` with `Missing cost price` in it. A banner across the top of the app counts every listing in the same state, and [the Repricer interface](/repricer/interface) covers what it does.

Only a strategy that builds its floor out of your cost needs one. A strategy with a minimum price you type yourself reprices with no cost at all, so a listing on one of those never shows this. You change which of the two you are on in [the price floor and ceiling](/repricer/strategies/price-floor), and [listing and repricing status](/repricer/listings/statuses) covers every other reason repricing stops.

### A number you do not believe

| What you see | Why |
| --- | --- |
| A high profit on a store of your own | Only your cost comes off there, because there is no fee estimate |
| A profit that moved while you were reading it | Your price on the channel changed, or a fresh fee estimate came in |
| A cost you never typed | Your own store filled it in, or the matched variant in the PIM owns it |
| A calculated minimum price above what you expected | Your cost and the estimated fee are both in that sum, and the fee is easy to forget |

## Where to go next

<Columns cols={2}>
  <Card title="Pricing on a listing" icon="tag" href="/repricer/listings/pricing">
    The `Unit Cost` field itself, and the price limits it works alongside.
  </Card>

  <Card title="The price floor and ceiling" icon="arrow-down-to-line" href="/repricer/strategies/price-floor">
    The strategy setting that turns your cost and fees into a minimum price.
  </Card>

  <Card title="Imports" icon="upload" href="/repricer/uploads/imports">
    Getting a cost onto hundreds of listings from a spreadsheet.
  </Card>

  <Card title="Profitability" icon="chart-pie" href="/repricer/reports/profitability">
    Margin and ROI across every listing you have given a cost.
  </Card>
</Columns>
