Go to the app

Catalog

Pricing

Pricing is where you record what an item cost you and what you charge for it, and it is where every integration you connect gets the price it publishes.

Pricing is where you set what an item costs you and what you sell it for. Every item has five money fields: a price, a compare price, a cost, a MAP, and an MSRP. The price each connected integration publishes for you is built from these fields. So this page is where your price starts, even when the number that ships gets adjusted or rounded on the way out.

The PIM keeps money on the variant, never on the product, because two variants of the same product can sell at different prices. On a product without options you never notice: the product editor shows the money fields, and they are set on its one variant. Once a product has options, the product editor drops its Pricing section and every variant gets one of its own.

You open the fields from Catalog in the sidebar: open Products, click a product, and scroll to the Pricing section of the editor that opens. The section changes shape twice as you use more of the PIM: once when you pick another currency, and once when you connect a second account. Both changes are explained below.

Before you start

What your role lets you do

Whatever your role, you can edit every money field on this page, including the per-currency and per-account values. Nothing here is above your level. Roles are set in team, roles and permissions.

How to set a price

  1. Open the product

    From Catalog in the sidebar, open Products and click the product. The product editor opens over the list.

  2. Find the money fields

    Scroll to the Pricing section. If the editor has no Pricing section, the product has options. Scroll to Variants and click a variant row: the variant editor opens with a Pricing section of its own.

  3. Type the price

    Type what you sell it for into Price. The other four fields can stay empty until you need them.

  4. Save

    Click Update at the bottom of the dialog, or Create if the product is new.

That is the whole common case. The amount you typed is now the price every connected integration starts from, and an empty money field simply does nothing. The rest of this page explains the five fields, the costs, other currencies, per-account prices, and the rules that check your numbers. You do not need any of it to put one price on one product.

Every option in detail

The five money fields

All five fields are optional, and every amount you type is in your organization’s currency. Your amounts take as many decimal places as the currency has, so two in dollars and none in yen.

FieldWhat it is for
PriceWhat you sell the variant for. Unless an integration’s settings say otherwise, this is the price it publishes
Compare PriceA higher reference price, the kind a shopper sees crossed out beside the real one. You cannot save it below the price
CostWhat one unit costs you. It is three inputs plus a number the PIM calculates, and the next section explains which one counts
MAPMinimum Advertised Price, the lowest price you are allowed to advertise
MSRPManufacturer’s Suggested Retail Price, a reference value an integration can publish from instead of your price

MAP does nothing on its own. Typing one does not keep any price above it. Each connected account decides that for itself with its Never publish below MAP setting, which is with the rest of its settings on the Integrations page. What typing a MAP does give you is warnings, because the rules near the end of this page compare your other numbers against it.

If you fill one field, fill Price. Fill Cost second if you want to be warned before you sell at a loss, since both the rules and the pricing report compare price against cost. The other three matter when a shopper should see a crossed-out price, when a brand limits what you advertise, or when an integration publishes from a suggested price.

A 0 you type here is a real zero, not an empty field, so a price of 0 still sets off the rules below. In an import or a data source, a 0 clears the field instead.

Which of the three costs counts

There are three cost inputs, and a fourth field the PIM fills by itself.

FieldWho fills itCan you type in it
On-hand CostYou, an import, or the cost a connected store reportsYes
Supplier CostYour data source feedNo
Fallback CostYouYes
Effective CostNo one. The PIM works it out from the other three and your stockNo

Supplier Cost is written by your feed. You cannot type into it in either editor, and an import cannot fill it. When a supplier cost is wrong, fix it at the data source that sends it.

Effective Cost is the cost of the cheapest source that actually has stock. It answers one question: if you sold one unit right now, what would it cost you. So the number follows your stock instead of your typing, and it moves when your stock moves. Which sources have stock is covered in inventory.

How the effective cost is picked, case by case
  • Your on-hand stock and your supplier stock both have units: the cheaper of On-hand Cost and Supplier Cost.
  • Only one of those two has units: that source’s cost, or the other one’s when it has no cost of its own.
  • Neither has units, but your fallback stock does: Fallback Cost.
  • Nothing has units at all: On-hand Cost, or Supplier Cost when on-hand is empty.

Two places treat Effective Cost specially. On the products table, the Cost column shows the effective cost and is the only cost you can filter by. And your exports include the three inputs and leave Effective Cost out.

Prices in another currency

Your whole catalog uses one currency, the one your organization is set to. There is no per-product currency and no per-variant currency. Changing the organization’s currency is an Owner or Admin decision made in your organization settings, and organizations covers where that happens.

You can still save real amounts in other currencies. At the top of the Pricing section is a Currency dropdown with 164 currencies. Pick one that is not your own and the whole section switches to that currency alone:

What you pickedWhat the fields showWhat you can do
Your organization’s currencyYour real amountsEdit them as usual
Another currency, nothing saved for itYour amounts converted at the current rateThe field is locked. Click Edit at the end of the field to unlock it and type a real amount for that currency
Another currency, with a saved amountThe amount you savedClick Reset at the end of the field to drop your amount and lock the field back onto the converted amount

In another currency the three cost inputs fold into one Effective Cost field, so you keep one cost per currency instead of three. And until you connect an account, another currency shows no Price or Compare Price field at all, only cost, MAP, and MSRP. The next section explains where your prices went.

Your product and your currency amounts are saved in two steps. When the second step fails, the product is saved, the amounts are not, and a message starting Master prices saved tells you so.

That message promises to retry on the next save, and it means the next time you save this product. Reopen it and click Update again, because the retry never runs on its own.

Three more things about currency catch people out:

  • A converted amount is only as fresh as the exchange rates behind it, which refresh every 4 hours, and nothing warns you about a stale one.
  • Switching your organization’s currency and switching it back does not restore your old amounts. Each switch converts your amounts again, and the rounding sticks.
  • A recurring data source cannot write these per-currency amounts; only your organization’s currency goes in. Per-currency amounts in bulk come from an import.

Prices per connected account

Connect a second account and the Price and Compare Price fields disappear. In their place you get a table, one row per account, with the columns Integration, Price, and Compare price. A row is labeled with the integration and the account, like Shopify · My Store, and every cell has the same Edit and Reset controls the currency fields use. Your price is not gone: it is now set per account, on the row for the account you mean.

A cell you never edited shows your organization’s price, converted when you are looking at another currency. Every account starts from the same number until you type one of its own.

These rows set the price and the compare price only. Cost, MAP, and MSRP never vary per account: they keep one value per variant, plus the per-currency amounts above. Per-account prices are saved in the same second step as the currency amounts, and they fail with the same Master prices saved message.

A row managed by Repricer is read-only in every currency. Instead of Edit it shows Managed by Repricer. Once the variant has a saved SKU, those words are a link to the listing in the Repricer. The PIM shows you the live price on that account instead of publishing one of its own, and undoing the pairing is the only way to get the row back. Rows can even appear for integrations you never connected in the PIM, because the Repricer prices listings on integrations of its own; those rows are read-only too.

When the table appears, and when the two fields stay
  • The table needs a product that has been saved at least once. A product you are still creating shows the two fields, however many accounts you have connected.
  • With no account connected there is no table, and the two fields have your organization’s own amounts.
  • With exactly one account the two fields stay, and in another currency they edit that account’s row instead of your organization’s amount.
  • One account plus Repricer-managed rows in the currency you are looking at brings the table up too, so everything about the price is in one place.

Reading prices from the products table

You do not need to open a product to read its prices. The products table under Catalog shows Price, Cost, Compare Price, MAP, and MSRP as columns you can sort and filter, where Cost is the effective cost. A product with one variant shows the amount itself, and a product with several shows the range across them.

Three more columns start hidden: On-hand cost, Supplier cost, and Fallback cost. Once shown, you can sort by them, and they are the three you cannot filter by.

Changing many prices at once

Nothing on the products table changes a price in bulk: its four bulk actions cover status, tags, integration sync, and deleting, and none of them touches money. To change many prices at once, send the new amounts through an import, or let a data source deliver them on its own schedule. An import can write the per-currency amounts too; a data source cannot.

Limits

WhatLimit
The most a money field takes21,474,836.47 in a currency with cents
Currencies in the Currency dropdown164

What pricing cannot do

You cannotDo this instead
Give a product or a variant its own currencySave per-currency amounts from the Currency dropdown
Give one account its own cost, MAP, or MSRPOnly the price and the compare price vary per account
Type into Supplier CostCorrect it at the data source that feeds it
Change prices in bulk from the products tableSend an import, or use a data source
Export the Effective Cost amountExport the three cost inputs it is picked from
Make a price watch a competitorUse Repricer, which reacts to competitors for you

What your integrations get

The price you type is an input, not the number that ships. Every connected account has its own publishing settings, in its settings dialog on the Integrations page, and it builds the price it sends in a fixed order:

  1. Price source priority takes the first of your Price, MAP, and MSRP that has a value. The compare price can never be a source, because a crossed-out price is not a selling price.
  2. Price adjustment raises or lowers the result by a percentage or a fixed amount.
  3. Rounding gives it the ending you chose, such as .99.
  4. Never publish below MAP, when it is on, lifts the result back up to your MAP. It runs last, so nothing rounds the price back under.

When none of the sources has a value, the product is not published at zero. It is flagged on that integration’s badge on the product instead, and you get a message naming it, like No price is available for Shopify (none of the configured price sources has a value).

The compare price has settings of its own. Compare-at price source picks where it comes from, and a compare price that is not higher than the price being published is cleared on the channel instead of sent. Every one of these settings is worked through in integrations.

Each integration takes different pieces of the money you keep here:

IntegrationWhat it gets about price
ShopifyThe price and the compare price, once per enabled market. The effective cost, MAP, and MSRP go once each, in your organization’s currency, because Shopify keeps a single value for each
AmazonThe price only, inside your offer on an existing ASIN, next to the condition, the SKU-to-ASIN link made on the first push, and the quantity you fulfill yourself. No compare price, no cost, and no product content in either direction
SquareThe price only; Square has no compare price field. The effective cost goes out as vendor information, which needs a Square plan that accepts it, and after one rejection the PIM stops sending it to that account until you reconnect
GoogleThe price and the compare price, as Google’s own sale price pair, plus the effective cost. Your MAP becomes the floor for Google’s automated discounts. No MSRP
BigCommerceThe price and the compare price as its sale pair, your MSRP and MAP into BigCommerce’s fields of the same names, with MAP set on the product rather than each variant, plus the effective cost

Shopify adds one hard requirement: your organization’s currency has to match the store’s own base currency. Until they match, publishing to the store and reading from it both stop, and you see a sync error. Prices for Shopify’s other markets are the one exception to your single currency, and only the price and the compare price can vary per market. A market you saved no amounts for keeps Shopify’s own converted price.

Nothing on this page reacts to another seller. The PIM builds every published price from your own fields and never reads a competitor’s price. It also never changes a price on its own. The product that watches competitors and moves prices is Repricer.

When something goes wrong

The rules that check your prices as you type

Nine rules compare your money fields against each other while you type, in both editors. Three of them are errors: while one shows, Create and Update are disabled and you cannot save the product. The other six are warnings that never block you.

The ruleBlocks savingShows underMessage
Compare price below the priceYesCompare PriceCompare-at price must be greater than or equal to the price
Price below your costYesPricePrice is below cost (negative margin)
MAP above MSRPYesMAPMAP cannot be greater than MSRP
Price below MAPNoPricePrice is below MAP (minimum advertised price)
Price above MSRPNoPricePrice is above MSRP
Cost above MAPNoOn-hand CostYour cost is above MAP
Cost above MSRPNoOn-hand CostYour cost is above MSRP
Cost above MAPNoMAPLower than your cost
Cost above MSRPNoMSRPLower than your cost

When your cost is above MAP and MSRP at once, the two warnings under On-hand Cost merge into one, Your cost is above MAP and MSRP. These messages are not translated, so they appear in English whatever language you use the app in.

Five details make the rules predictable:

  • Equal always passes. You can save a compare price equal to the price, a MAP equal to the MSRP, and a price equal to the cost.
  • An empty field skips every rule, and a 0 is not empty: a price of 0 against any cost is a negative margin like any other number.
  • The cost the rules compare is On-hand Cost, or Supplier Cost when on-hand is empty, and never Effective Cost. That is why Effective Cost never shows a rule message, and why a product can be blocked while the effective cost beside it looks fine.
  • In another currency the comparison forgives a difference of one cent, so conversion rounding alone can never block a save. In your organization’s currency it forgives nothing.
  • A variant is checked in the variant editor, where a failing rule disables its own Update. Back on the product, saving does not re-check the variants.

A feed can leave a product the editor will not save. A supplier cost that climbs above your price always goes in, and Update stays blocked until you raise the price or the cost comes down.

The reason is direction. A cost is a fact about your business, and a price is a decision you make. So a feed reporting a higher cost is never blocked by a rule about your decision. The product starts losing money with no message and shows up in the report below. A price the PIM reads back from a channel works the same way. It goes in as it is, and a rule it breaks becomes a warning on the product’s integration badge.

The pricing report catches what is already saved

The rules watch your typing and never re-read the catalog. Finding saved problems is the pricing report’s job, under Reports in the sidebar. You get a Guardrail violations count, a Negative margin count, and a Needs attention table naming each variant, its issue, and the numbers behind it. Click a product there and it opens so you can fix it.

The report measures margin against Effective Cost; the editor’s rules measure it against On-hand Cost or Supplier Cost, as above. A variant can therefore appear under Negative margin in the report and still save without complaint, or the other way around, and neither side is wrong.

Error messages

MessageWhat it means
Amount can't exceed $21,474,836.47The most a money field takes, shown while you type with your own currency’s number. Enter a smaller amount
This value is too large. Please enter a smaller amount.The same limit, caught at save
Master prices saved. Currency overrides could not be saved: {error}. Will retry on next save.The product saved; your per-currency or per-account amounts did not. Reopen the product and click Update again
No price is available for Shopify (none of the configured price sources has a value).Every price source for that account is empty. Fill one of them, or reorder Price source priority in its settings. The name matches the integration
Your Shopify store currency ({shop_currency}) does not match your organization currency ({org_currency}). Prices can't be pushed until they match. Reconnect the correct store, or change your organization's default currency, then retry.The currency requirement above. Nothing syncs with that store until the two match

Where to go next