A founder signs a contract with a co-packer, sees a quoted "cost per unit" of $2.75, and builds a pricing model around it. Six months later, the real landed cost on the invoice comes out to $3.73 a unit — a 36% gap that quietly erases the margin the founder thought they had. This isn't a rare mistake. It's the default outcome for food and beverage brands that treat co-packer fees as a single line item instead of the layered cost structure they actually are.
If you're outsourcing production of a packaged food or beverage product, your bookkeeping has to catch up to how co-packers actually bill. Get this wrong and you won't find out until your gross margin — the number every lender, investor, and acquirer looks at first — turns out to be fiction.
What a Co-Packer Actually Charges You For
"Co-packer fee" sounds like one number. It isn't. Contract manufacturers typically bill across several categories, and each one behaves differently in your books:
- Variable per-unit run costs — labor, line time, waste, and the portion of facility overhead attributable to each unit produced. This is the number most founders fixate on, because it's the one that shows up on a per-case quote.
- Fixed per-run charges — cleaning the production line, reconfiguring equipment for your SKU, staging ingredients and packaging, and handling allergen protocols. These are charged once per production run, no matter whether you make 1,000 units or 50,000.
- Ingredients and packaging — sourced either by you, the co-packer, or split between you, depending on whether you're using a turn-key, partial turn-key, or tolling arrangement.
- Setup and onboarding fees — a one-time cost to bring a new SKU onto the line, often in the low thousands of dollars for a simple shelf-stable product and higher for complex or allergen-heavy formulations.
The fixed per-run charge is the one that breaks naive pricing models, because it doesn't scale down with your order size. A $4,000 setup spread over a 1,000-unit run adds roughly $4.00 to your per-unit cost. Spread that same $4,000 over a 50,000-unit run and it adds about $0.08 per unit. If your books only track the "per unit" number on the quote sheet, you're comparing runs that aren't actually comparable — and pricing your product off whichever run size happened to be in front of you when you built the spreadsheet.
Why All of This Belongs in COGS — Not Overhead
The classification question is simple in principle and easy to get wrong in practice: any co-packer cost that scales with production volume is Cost of Goods Sold, not a general operating expense. That includes the co-packer's labor and overhead, not just the ingredients and packaging you can see and touch.
Founders coming from a services or SaaS background — or just moving fast — tend to misclassify a predictable set of costs:
- Marketplace and retailer fees (Amazon referral fees, distributor chargebacks) get lumped into COGS when they're really the cost of selling through a channel, not the cost of making the product.
- Outbound shipping on DTC orders sometimes gets buried in "marketing," especially when it's offered as "free shipping," when it's actually a fulfillment cost that belongs with COGS.
- Samples start as production cost but should shift to a marketing expense once they leave the warehouse for a trade show or influencer mailer.
- Packaging design work is not the same as packaging materials — the physical label and box are COGS, but the one-time creative fee to design them is an operating expense.
- Warehouse storage for finished goods is commonly booked as an operating expense at the early stage, even though a strong argument exists for treating it as part of landed COGS once volume grows.
None of these are complicated rules on their own. What makes them dangerous is that they compound. Misclassify co-packer setup fees as overhead, bury a distributor's short-pay chargeback in "miscellaneous," and book free-shipping costs as marketing, and your reported gross margin can be 5–10 points higher than reality — right up until a lender's diligence team, or your own cash balance, tells you otherwise.
The Minimum Order Quantity Cash Trap
Co-packers set minimum order quantities (MOQs) that reflect what's efficient for their line, not what's efficient for your cash position. MOQs vary widely by format:
- Bottled beverages: roughly 1,000–3,000 cases
- Canned beverages on craft lines: roughly 2,500–10,000 cans
- Industrial pre-printed cans: often around 180,000 units
- General beverage categories: 5,000–50,000 units per SKU
Run the math on a mid-size beverage order — say 50,000 units at $1.18 per unit plus ingredient and packaging minimums — and you can tie up $80,000 to $150,000 in cash before a single unit reaches a shelf. Most co-packers also require a deposit of 30–50% at booking, with the balance due at shipment. Meanwhile, if you're selling into retail or distribution, you're likely collecting on Net 60 to Net 120 terms. That mismatch — cash out in weeks, cash back in months — is exactly the kind of thing that looks fine on a P&L and then blindsides you on a cash flow statement.
There's a second trap layered on top: shelf life. Beverage brands typically hold 38–41 days of inventory when they're managing cash well. An oversized run to hit a lower per-unit price can leave you sitting on months of product, and for anything perishable or date-coded, that's not a carrying-cost problem — it's a write-off waiting to happen. Waste and spoilage commonly run 3–5% of total COGS for food and beverage brands; an MOQ decision made purely to chase a lower unit price can push that percentage far higher for a single run.
Before signing off on any production run, it's worth checking three numbers against your books, not just the quote sheet:
- Months of cover at a realistic sell-through rate — more than 4–6 months on a perishable product is a spoilage flag, not a bulk discount.
- Total cash due upfront, measured against what you actually have in reserve or available credit — not what the discounted per-unit price implies you're "saving."
- True per-unit cost at each run size you're considering — pilot run, MOQ, and the next tier up — so the fixed per-run charge is properly amortized instead of hidden inside a single blended number.
Turn-Key, Partial Turn-Key, and Tolling: Same Fee, Different Books
Co-packer relationships generally take one of three shapes, and each one changes what you're actually recording as COGS versus a pass-through:
- Turn-key: the co-packer sources ingredients and packaging and bills you one combined price. Simple to book, but hardest to audit line-by-line — you're trusting their markup on raw materials along with their labor.
- Partial turn-key: the co-packer sources some inputs (often ingredients) while you supply others (often packaging). Your books need separate ledger accounts for what you're buying directly versus what's embedded in the co-packer's invoice, or your ingredient cost tracking becomes unreliable.
- Tolling: you supply the ingredients and packaging yourself and pay the co-packer purely for facility time and labor. This gives you the clearest visibility into true material costs, but it also means your own purchasing and inventory records — not the co-packer's invoice — are the source of truth for a big chunk of COGS.
If you switch models between production runs (common as brands scale and start buying ingredients direct to cut cost), your chart of accounts needs to follow. Otherwise you'll end up comparing "cost per unit" across two runs that were actually built on completely different accounting bases.
Keep Your Production Costs as Auditable as Your Ledger
The pattern across all of this — fixed versus variable fees, MOQ cash timing, and turn-key versus tolling — is the same one that trips up a lot of physical-product businesses: the real cost of a unit isn't one number on an invoice, it's a calculation that draws from several sources at once. That's a hard thing to keep straight in a spreadsheet that doesn't show its work, and it's exactly the kind of relationship a plain-text ledger is built to make visible — every co-packer invoice, ingredient purchase, and per-run fixed charge as its own auditable entry, not a blended average that looks clean until someone asks how you got there. Beancount.io gives you that transparency with plain-text accounting, version-controlled from day one. Get started for free and see your true landed cost per unit, not just the number on the quote.