The classic inventory costs formula is Inventory costs = Purchase costs + Ordering costs + Holding costs + Shortage costs (Shopify). For a print-on-demand store, holding cost is near zero — you never warehouse stock — so the formula collapses to what you actually pay per order: supplier COGS, supplier shipping, payment fees, and the ad spend that bought the customer. The real number to compute is per-order profit, not annual carrying cost.

Most articles that rank for this keyword hand you the textbook formula and a warehouse example: hold $100,000 in stock, pay a percentage to store it. That math is real for a retailer with pallets. It describes almost nothing about how a print-on-demand store actually loses money.

If you run an operating POD store — real orders, real ad spend, a supplier who prints on demand — you need the same formula bent to your model. This walks the standard formula, shows which terms go to zero for POD, and rebuilds it into a per-order cost you can act on. For how these costs land in your books, see the companion piece on inventory costs and accounting.

The standard inventory costs formula

The widely taught version sums four buckets. Shopify states it as Inventory costs = Purchase costs + Ordering costs + Holding costs + Shortage costs (Shopify). Here is what each term means:

  • Purchase costs — what you pay the supplier for the goods themselves (your COGS).
  • Ordering costs — the cost of placing and receiving each order: purchasing labor, transportation in, inspection.
  • Holding (carrying) costs — the cost of keeping unsold stock: storage, insurance, capital tied up, shrinkage, obsolescence.
  • Shortage costs — what a stockout costs you: lost sales, rushed reorders, unhappy customers.

Holding cost is the term the SERP obsesses over, because for a stocking retailer it is the silent killer. Shopify notes that most retailers spend 20% to 30% of their average inventory value each year on carrying costs, running higher in categories like fashion and home goods (Shopify). On $100,000 of average inventory at a 20% rate, that is $20,000 a year just to hold the goods.

That is a large, real cost — if you hold inventory.

Why the formula breaks for print-on-demand

You don't. A POD item is produced after the customer pays, so three of the four terms behave differently than the textbook assumes:

Holding cost drops toward zero. You warehouse nothing. There is no storage bill, no capital frozen in unsold units, no obsolescence when a design stops selling — you simply stop advertising it. The 20-30% carrying-cost drag that dominates a stocking retailer's inventory math is not your problem. This is the single biggest reason POD exists.

Ordering cost becomes per-order and automated. You don't place bulk purchase orders and inspect pallets. Each customer order triggers one supplier order automatically. So "ordering cost" stops being a batch expense and folds into your per-unit cost.

Shortage cost mostly disappears — and a new cost replaces it. You can't really stock out, because there is no stock. But the money that a stocking retailer loses to shortages, a POD seller loses to something the textbook ignores entirely: refunds, reprints, and chargebacks on items that can't be restocked. A printed item has no resale value, so a refund eats the full production cost on top of the refund itself. More on that below.

Strip the near-zero terms and the formula stops being an annual carrying-cost calculation. It becomes a per-order landed-cost calculation. That is the number that decides whether your store makes money.

The POD inventory costs formula

Rebuild it around a single order:

True cost per order = Supplier COGS + Supplier shipping + Payment processing fee + Allocated ad spend + Returns/chargeback reserve

Subtract that from your selling price and you have per-order profit — the only version of "inventory cost" that changes what you do next. Each term:

  • Supplier COGS — what Printify, Printful, or Gelato charges to produce the unit.
  • Supplier shipping — what the supplier bills you to ship it.
  • Payment processing fee — the gateway's cut of the sale, typically a percentage plus a flat fee per transaction.
  • Allocated ad spend — your monthly ad spend divided by orders, i.e. what it cost to acquire that buyer.
  • Returns/chargeback reserve — a small per-order set-aside for the refunds and disputes you know are coming.

This is the operating cousin of the classic formula. It reads more like a unit-economics line than a warehouse budget — which is exactly the framing in the broader ecommerce ops economics guide for small stores.

Worked example: a real operating store

Say you run a store doing 340 orders a month at a $31 average order value, spending $2,800 a month on Meta ads. Take one typical order:

Line item Amount
Selling price (AOV) $31.00
Supplier COGS −$12.00
Supplier shipping −$5.00
Payment processing (about 2.9% + $0.30) −$1.20
Allocated ad spend ($2,800 ÷ 340 orders) −$8.24
Returns/chargeback reserve −$0.75
Per-order profit $3.81

The arithmetic: 31.00 − 12.00 − 5.00 − 1.20 − 8.24 − 0.75 = $3.81 per order. Across 340 orders, that's about $1,295 a month before your platform subscription, apps, and your own time.

Notice what dominates. It isn't holding cost — that line doesn't exist. It's ad spend ($8.24) and supplier COGS + shipping ($17.00) together eating over 80% of the order. The lever that a stocking retailer pulls (cut carrying cost) isn't available to you; your levers are acquisition cost and supplier cost. That is a completely different optimization problem than the ranking articles describe.

The cost the textbook formula hides: unrecoverable refunds

The "shortage cost" term is where POD math gets punishing, and no generic inventory-costs article covers it. When you refund a POD order, the item can't go back into stock, so you eat the full production cost on top of the refund. A chargeback is worse: on Shopify Payments the disputed amount plus a $15 chargeback fee are pulled from your payout immediately, and a lost dispute typically costs 2x to 2.5x the order value once you add unrecoverable COGS, shipping, ad spend, and your time (chargeback.io).

Run that against the example. Your per-order profit is $3.81. One lost chargeback on that $31 order costs roughly 2x the order value — call it $62 out of pocket. That single event erases the profit from about 16 other orders. This is why the returns/chargeback reserve belongs in your inventory costs formula, not in a footnote.

The mechanics of moving these costs onto the income statement — and why a printed item's COGS lands differently than restockable inventory — are covered in recording cost of goods sold.

What about EOQ and reorder points?

The classic formula usually arrives with Economic Order Quantity — the square-root formula for the batch size that minimizes ordering plus holding cost. For a stocking business it matters. For pure POD it's close to irrelevant: you don't buy in batches, so there is no optimal batch to solve for. If you hold a small buffer of a bestseller through a third-party fulfillment center, EOQ comes back into play; otherwise, skip it and spend the effort on acquisition cost instead.

The operating discipline that replaces EOQ is watching per-order profit by product and by ad campaign, then cutting the losers. That is closer to merchandising than to warehousing — see ecommerce merchandising operations for how the product mix and cost picture connect.

Let Victor compute it on your live orders

Working the per-order formula by hand once is useful. Doing it across every SKU, every ad campaign, and every order — as costs and ad spend shift week to week — is not something a spreadsheet keeps up with.

PodVector AI's Victor is an AI employee that connects to your Shopify store, your Meta Ads and Google Ads accounts, and your Printify, Printful, or Gelato supplier, and computes true per-order profit from your live data — COGS, shipping, fees, and allocated ad spend already netted out. Victor is not a dashboard you have to read; it's an operator that surfaces which orders and products actually make money and delivers the report to your Google Drive. Every write action it takes is approval-gated, so nothing happens without your sign-off. Put Victor on your store and see your real per-order numbers.

FAQs

What is the basic inventory costs formula?

The standard version is Inventory costs = Purchase costs + Ordering costs + Holding costs + Shortage costs (Shopify). It sums what you pay for goods, what it costs to order them, what it costs to hold them, and what stockouts cost you. It was designed for businesses that keep physical inventory in a warehouse.

How is the formula different for print-on-demand?

Holding cost drops close to zero because you never warehouse stock, and shortage cost is replaced by refund and chargeback losses on items you can't restock. So the useful formula becomes a per-order calculation: Supplier COGS + Supplier shipping + Payment fee + Allocated ad spend + Returns reserve, subtracted from your selling price.

What is a normal inventory carrying cost rate?

For retailers that hold stock, Shopify reports most spend 20% to 30% of average inventory value per year on carrying costs, higher in categories like fashion and home goods (Shopify). For a pure POD store this number is largely moot, because you hold almost no inventory to carry.

Should POD sellers use the EOQ formula?

Usually no. Economic Order Quantity optimizes the batch size for businesses that buy inventory in bulk. POD produces one unit per order, so there is no batch to optimize. It only becomes relevant if you pre-stock a bestseller in a fulfillment warehouse.

Why does a refund cost more than the refund amount for POD?

Because a printed item can't be restocked, so you eat the production cost on top of the refund. A chargeback adds a $15 Shopify Payments fee and, when lost, typically costs 2x to 2.5x the order value once COGS, shipping, ad spend, and time are counted (chargeback.io). Build a small per-order reserve into your formula to cover it.

Where do ordering costs go in the POD formula?

They fold into per-order cost. You don't place and inspect bulk purchase orders; each customer order automatically triggers one supplier order. The supplier's COGS and shipping already capture that per-unit expense, so there is no separate batch ordering-cost term to track. If you're modeling fixed monthly overhead separately, the three months of operating expenses framework is a better fit for that side of the ledger.