Purchasing & Supplier Management

Managing MOQs, price-break tiers, and true unit cost across suppliers.

Tracking minimum order quantities and price breaks to see true unit cost across suppliers.

Last updated September 16, 2026

Vendor cost lives on the supplier and the SKU, and on the qty tier. It does not live on the Shopify variant price.

Keep a supplier price list

MSRP and compare-at are merchandising. They are not PO cost. Selling price is what the channel charges. If you buy from the variant, every reorder inherits last year's promo and the next receipt wrecks WAC. Keep a supplier price list: vendor item, currency, unit cost, MOQ, case pack, and the breaks (12, 48, 144). The recommended buy rounds to MOQ and to case. That is the order qty. The PO locks the tier you actually ordered, not the quote from the last email.

Weigh cheaper tiers against cover

A cheaper tier that forces 5x demand is not cheaper once you age the extra units. Run the landed unit through weeks of cover. If the 144-break saves $0.40 and you will sit on 100 units into next season, you bought a storage problem. MOQ exists so the factory makes a run. It is not a reason to ignore sell-through. Case-pack rounding is the same trap at a smaller scale: buy 36 because the carton is 12, not 40 because a spreadsheet likes round numbers. Whether min/max recommended 28 or 36 is a buying-policy question. This is the price list that prices whatever qty you send.

Two suppliers means two cost records

Two suppliers for one SKU means two cost records and two MOQs. One on-hand. One WAC after those receipts. The China factory and the US backup are not the same list. The PO names the supplier, the tier, and the pack. Receiving the backup at the factory cost is how the average lies. Receiving both into the same SKU is correct. Pretending they share an MOQ is not. A US backup MOQ of 12 and a China MOQ of 500 are two constraints, not an average of 256. A CAD list and a USD list are two lists. Do not convert in your head and paste the number onto the wrong supplier.

Quote versus contracted price

Quote versus contracted price: the ack is the contract for that release. If they quoted the 144-tier and you ordered 48, you do not get the 144 price. If they ship 48 and invoice the 12-tier, that is a price variance on the receipt, not a reason to rewrite the list. Do not let Shopify, a line sheet PDF, or a buyer Slack be the price list. The list is what the next PO will pull. The PO is what AP will match. How average cost then moves is a receipt event, not a merchandising field.

Vendor cost is a supplier record. MSRP is a tag. The PO is the lock.

Run this with AI

Connect Claude or ChatGPT to your Fulfil data with the Fulfil MCP, then run this prompt on your own numbers.

You are the buyer locking true unit cost, MOQ, and price-break tiers across suppliers.
Here is: sku, supplier, vendor_cost, qty_tier, moq, case_pack, recommended_buy, msrp, shopify_variant_price, quote_price, po_locked_tier, weeks_of_cover_at_tier, second_supplier_cost.
[paste]

Produce:
1. SKUs whose PO cost is coming from Shopify variant price or MSRP instead of the supplier list.
2. Buys that take a cheaper tier by ordering far above demand (age the extra units).
3. One SKU, two suppliers, one cost record or one shared MOQ (should be two lists, one on-hand, one WAC after receipt).
4. POs that did not lock the tier actually ordered (quote vs contract).
Vendor cost is a supplier record. MSRP is merchandising. The PO is the lock.

See it run on
your data.

Fulfil runs inventory, fulfillment, purchasing, and accounting for scaling DTC brands in one system.