When to Use FBA and When Not To: The Operator’s Cost Framework
By Ahmed Abuswa, Head of E-Commerce Operations at Modonix. Updated May 2026. A mechanism-level breakdown of where Fulfillment by Amazon quietly removes margin, and the specific conditions under which Fulfillment by Merchant is the more profitable route.
Fulfillment by Amazon is sold as a logistics decision. It is actually a margin decision, and most operators do not run the math until the margin is already gone. The product moves, the units leave the building, the orders show up in Seller Central, and the seller assumes the unit economics are intact because the top line looks healthy. The damage is not in the top line. It is in the gap between gross revenue and the deposit that actually lands in the bank, and that gap is built from a stack of separate fees that each look small in isolation and are not small once they compound on every unit, every month, across the whole catalog.
This problem happens structurally because FBA charges are not a single line. They are a referral fee, a per-unit fulfillment fee, a monthly storage fee, an inbound placement fee, a low-inventory-level fee, a returns-processing cost, and an aged-inventory surcharge, and they are assessed by different triggers at different times. The seller sees them on different reports. No single screen tells an operator the fully loaded cost to sell one unit of one SKU through FBA, so the operator never feels the full weight until a quarterly profit-and-loss statement forces the number into view. By then the capital is already deployed into the wrong fulfillment model for the wrong products.
The point of this article is not that FBA is bad. FBA is the correct answer for a specific product profile and the wrong answer for another, and the difference is calculable before you ship a single carton. If you want a structured review of your own catalog rather than a generic answer, that is the work we do at modonix.com/services. The framework below is the same one we use to run that review.
Quick operator audit: is FBA actually working for this SKU?
- Do you know the fully loaded FBA cost per unit, including referral, fulfillment, storage, and a returns allowance?
- Is contribution margin still positive after that fully loaded cost, or only after referral fee alone?
- How many days of inventory are you holding, and does that cross into aged-inventory surcharge territory?
- Have you been charged an inbound placement fee, and did you ever model the split-shipment alternative?
- Do you have any stranded units right now that are billing storage and generating zero sales?
- Can you reconcile Amazon-reported inventory against what you actually sent, by shipment?
- If Amazon changed a fee or a policy tomorrow, which SKUs would flip from profitable to negative?
- Do you have a written rule for which products go FBA and which go FBM, or is it default-everything-to-FBA?
Stop guessing which SKUs FBA is draining.
Modonix rebuilds your contribution margin SKU by SKU with the full FBA fee stack loaded in, then gives you a written FBA-or-FBM routing rule for the entire catalog. You see exactly which products are funding the business and which ones are quietly bleeding it.
See Modonix pricing1. The Fee Stack: Why FBA Costs Compound Faster Than Revenue
The first failure pattern is the simplest to describe and the hardest to see in real time. FBA fees stack until the product becomes unprofitable, and they do it without any single event that signals the crossover. There is no alert. The seller does not get a message that says this SKU just went negative. The referral fee comes off the sale price, the fulfillment fee comes off per unit, the storage fee accrues monthly on the cubic footage you occupy, and a returns cost lands whenever a buyer sends the item back. Each of these is a separate deduction with a separate trigger, and the operator who only checks the referral fee is looking at maybe a third of the real load.
The structural trap is that Amazon charges you to sell, and then charges you again to store, and then charges you again to fulfill, and then charges you again to handle the return. As an industry benchmark, the referral fee on most categories runs around fifteen percent of the sale price, and the per-unit fulfillment fee is set by a size and weight tier published on Amazon’s rate card. Those two alone are predictable. The problem is the operator who budgets only for those two and treats storage, returns, and aged-inventory surcharges as rounding error. On a low-priced item, they are not rounding error. They are the difference between a positive and a negative unit.
Operator discussion: sellers fear FBA fees and returns but miss the bigger cost picture (r/AmazonFBA) Operator discussion: total cost of FBA is killing me, any ideas (r/FulfillmentByAmazon) Operator discussion: Amazon will charge you to sell, then charge you again (r/AmazonFBA)Fully Loaded FBA Cost Formula Fully Loaded FBA Unit Cost = Referral Fee + Fulfillment Fee + (Monthly Storage Cost per Unit) + (Return Rate x Return Handling Cost) + (Aged Surcharge Allowance per Unit). Contribution Margin = Sale Price minus Landed Product Cost minus Fully Loaded FBA Unit Cost.
The operator fix: Build one contribution-margin sheet that loads every fee component per SKU, not per category and not per order. Set a hard margin floor, for example a minimum contribution percentage you will accept after the fully loaded FBA cost. Any SKU that prints below the floor goes into a monthly review queue with three exits only: raise price, change fulfillment model, or discontinue. Run it monthly, because fee tiers and your own size and weight measurements both drift over time.
2. The Inbound Tax: Placement Fees and Shipments That Sit for Weeks
The second pattern lives at the front door of the warehouse, before a single unit has sold. Amazon’s inbound placement fee, introduced in 2024, charges sellers a per-unit fee when they send inventory to a single receiving location instead of splitting it across multiple fulfillment centers. The fee is avoidable in theory. In practice, splitting a shipment across several centers means more freight, more cartons, more labeling, and more coordination, so the operator is choosing between a placement fee and a freight-and-labor cost. Either way, a cost that did not exist a few years ago is now baked into the unit economics, and many sellers never rebuilt their margin model to include it.
The second half of this pattern is time. Inventory routinely sits in Amazon inbound shipment status for weeks before it is checked in and made sellable. During that window the units are paid for, the freight is paid for, and the cash is fully committed, but the inventory cannot generate a single order. As an industry benchmark, multi-week inbound receiving delays are a normal and recurring part of FBA operations, not an exception, and they get worse heading into Q4. An operator who plans replenishment as if check-in is instant will stock out on paper-available inventory while the real units sit in a receiving queue.
Operator discussion: Amazon’s new inbound placement fee is insane (r/FulfillmentByAmazon) Operator discussion: the part of FBA no one warned me about (r/AmazonFBA)Inbound Exposure Formula Inbound Exposure = (Placement Fee per Unit x Units per Shipment) + (Units in Transit and Receiving x Landed Unit Cost). Effective Replenishment Lead Time = Supplier Lead Time + Freight Time + Amazon Receiving Time, and reorder points must be set against the full sum, not supplier lead time alone.
The operator fix: Run a standing comparison: placement fee for a consolidated shipment versus the added freight and handling of a split shipment, per SKU and per shipment size. Pick the cheaper path deliberately instead of defaulting. Separately, redefine replenishment lead time as supplier time plus freight time plus a realistic Amazon receiving window, and set every reorder point against that full number. Tooling that tracks the in-transit and receiving pipeline as committed capital, not available stock, is part of what we cover at modonix.com/tools.
3. Stranded and Slow: When Inventory Stops Moving Inside FBA
The third pattern is inventory that is physically inside an Amazon warehouse and cannot be sold. Stranded inventory has a long list of causes: a listing error, a suppressed listing, a pricing error, a compliance flag, a category gate, an ASIN that got merged or split. The unit count still shows in your inventory. The storage clock still runs. The sales count is zero, because the listing the inventory is attached to is not active. Stranded inventory is the purest form of FBA waste, because you are paying rent on goods that the platform itself has made unsellable.
Running parallel to stranded inventory is the slow-mover problem. Storage fees are charged on the cubic footage you occupy, and Amazon layers an escalating aged-inventory surcharge on units that sit past published age thresholds. As an industry benchmark, those surcharges step up the longer a unit ages, and they spike during the Q4 peak storage window. The result is a compounding penalty: the slower a SKU sells, the more storage it accrues per unit sold, and the aged surcharge then accelerates the bleed. A slow SKU in FBA does not just earn less. It actively costs more per unit the longer it underperforms.
Operator discussion: inventory stranded (r/AmazonFBA) Operator discussion: stranded FBA inventory (r/FulfillmentByAmazon) Operator discussion: stranded FBA inventory (r/AmazonFBATips)Slow Inventory Cost Formula Storage Cost per Unit Sold = (Monthly Storage Fee x Months Held) divided by Units Sold in that period. Total Aged Exposure = Units Past Age Threshold x (Base Storage Cost + Aged Surcharge per Unit). As Units Sold falls, Storage Cost per Unit Sold rises non-linearly.
The operator fix: Make the stranded inventory report a named weekly responsibility with a target of zero stranded units carried longer than seven days. For slow movers, set an age trigger well before the aged-inventory surcharge threshold. When a SKU hits that trigger, force a decision: markdown to clear, create a removal order and move it to FBM, or dispose. Holding and hoping is the one option that is not on the list, because holding is the option that is actively billing you.
4. The Black Box: Lost Units and Vanishing Visibility
The fourth pattern is the one operators trust Amazon on by default and should not. Once your products enter Amazon’s network, you lose direct visibility into them. You see a number in a report. You do not see the shelf. And the number is not always right. Units get miscounted, misplaced between fulfillment centers, damaged in handling, or recorded as received in quantities that do not match what you sent. The operator running on the assumption that Amazon-reported inventory equals real inventory is running on an unverified figure.
The harder version of this is outright lost inventory, sometimes expensive inventory, and a reimbursement process that does not move at the speed of the loss. Reimbursement requires you to prove the discrepancy, which requires you to have kept your own shipment records, which many sellers do not do rigorously. Even when the claim is valid, reimbursement valuation is set by Amazon’s estimate of the item’s cost, and as a documented policy direction that estimate is frequently below the seller’s true landed cost. The cash gap between what you lost and what you are reimbursed, multiplied across a year of normal shrinkage, is a real and recurring line item, not an edge case.
Operator discussion: Amazon has lost 200 units of our expensive inventory (r/FulfillmentByAmazon) Operator discussion: Amazon lost inventory showing up on eBay (r/FulfillmentByAmazon) Operator discussion: missing and lost items, FBA inventory report or inbound (r/FulfillmentByAmazon)Inventory Loss Exposure Formula Annual Loss Exposure = (Units Lost or Unreconciled x Landed Unit Cost) minus (Reimbursed Units x Reimbursement Value per Unit). Reconciliation Gap = Units Shipped minus Units Confirmed Received minus Units Sold minus Units On Hand, and any non-zero gap is an open claim or an open loss.
The operator fix: Keep your own shipment records at the carton and unit level for every inbound, and treat them as the source of truth, not Amazon’s report. Run a monthly reconciliation that compares units shipped, units confirmed received, units sold, and units on hand. Any gap becomes a reimbursement claim with a deadline and an owner. File inside Amazon’s claim windows, because a valid claim filed late is the same as no claim.
5. The Beginner Capital Burn: Underestimating the Total Cost of Selling
The fifth pattern is what happens to first-time and early-stage sellers specifically, and it is less about any single fee than about the sum. New sellers model Amazon as product cost plus referral fee, sell at what looks like a healthy markup, and discover after the first full cycle that they are losing money on every order. The total cost of selling on Amazon includes referral, fulfillment, storage, placement, returns, advertising to get any visibility at all, and the cost of the capital tied up in inventory that is in transit or in a receiving queue. A new operator who budgeted for two of those line items is structurally guaranteed to burn capital.
The compounding factor is that the burn is not obvious early. The first orders feel like success because money is coming in. The capital drain shows up one cycle later, when the second inventory order is due and the cash from the first cycle did not fully replenish it. The seller then funds the gap out of reserves, calls it a growth investment, and repeats. This is the mechanism behind the common pattern of a seller who is making sales, is technically growing, and is quietly running the bank balance down every month.
Operator discussion: the real cost of selling on Amazon and how to plan for it (r/AmazonFBATips) Operator discussion: first time seller on Amazon and I am losing money (r/AmazonFBA) Operator discussion: I kept seeing beginners lose money before they understood the costs (r/AmazonFBA)True Cost of Selling Formula True Unit Cost = Landed Product Cost + Referral Fee + Fulfillment Fee + Storage Allowance + Placement Allowance + Returns Allowance + (Ad Spend divided by Units Sold). Real Margin per Unit = Sale Price minus True Unit Cost, and if this is negative, volume makes the problem worse, not better.
The operator fix: Before launching or scaling any SKU, build the true unit cost with every line item loaded, including an advertising allowance per unit and a cost for capital tied up in the pipeline. Confirm the unit is profitable on its own before volume is added. Then, and only then, scale. If you want the loaded cost model and the FBA-or-FBM logic packaged before you commit capital, that is the level of structure we build at modonix.com/pricing.
6. The Race to the Bottom: Price Pressure and Policy Risk
The sixth pattern is external pressure on a margin that is already thin. On a crowded listing or in a crowded category, sellers cut price to hold the Buy Box and to stay visible, and the cut comes straight out of contribution margin, because the fee stack underneath does not shrink when the price does. The referral fee is a percentage, so it falls a little, but the fulfillment fee, the storage fee, and the returns cost are largely fixed per unit. Drop the price and you are absorbing the entire cut against a cost base that did not move. This is the mechanism that turns a competitive category into a margin grinder.
Sitting on top of price pressure is policy risk. Amazon changes fee structures, size and weight tiers, category requirements, and program rules, and those changes can break a listing that was profitable the day before. A new fee, a re-tiered product, a fresh compliance requirement: any of these can flip a SKU from positive to negative with no change on the seller’s side at all. An operator who has no register of which SKUs are most exposed to a policy or fee change is operating without a risk model on a platform that changes the rules regularly.
Operator discussion: is Amazon FBA even worth it anymore (r/smallbusiness) Operator discussion: should I keep going with Amazon FBA if I am not profitable (r/FulfillmentByAmazon)Price and Policy Exposure Formula Margin After Price Cut = (New Sale Price minus Landed Cost minus Fully Loaded FBA Cost), where the FBA Cost is mostly fixed per unit. Policy Exposure Score per SKU = Current Contribution Margin divided by the size of a plausible fee increase, and the lowest scores are the SKUs that flip first.
The operator fix: Set a margin floor price for every SKU and never reprice below it to chase a competitor. Hitting the floor is a signal to change the plan, not the price. Separately, maintain a policy exposure register that ranks SKUs by how little fee headroom they have, so when Amazon announces a change you already know which products to re-model first. We publish ongoing operator breakdowns of these fee and policy shifts at modonix.com/blog.
7. The Decision Layer: When FBA Wins and When FBM Wins
Everything above converges on one decision, and the decision is not all-or-nothing. The right answer for most catalogs is a split: FBA for the product profile it rewards, FBM for the product profile it punishes, reviewed on a schedule. FBA genuinely wins when a product is small, dense, fast-turning, has healthy margin headroom over the fully loaded fee stack, and benefits from Prime placement and Amazon’s customer-facing logistics. For that profile, FBA’s fulfillment cost is competitive and the speed and Buy Box advantage are real revenue.
FBM wins under the opposite conditions. When a product is large, light relative to its size, slow-turning, low-priced, fragile, high-value enough that lost-unit risk matters, or thin on margin, the FBA fee stack consumes the economics and merchant fulfillment keeps control of cost, inventory visibility, and capital. Many operators run a mix on purpose, and some run close to fully one model because their specific catalog and situation point clearly one way. The error is not choosing FBA or FBM. The error is choosing once, by default, and never re-running the math as fees, sizes, and velocity change.
Operator discussion: is Amazon FBA actually worth it in 2025 (r/FulfillmentByAmazon) Operator discussion: is Amazon FBA still worth it in 2026 (r/AmazonFBA) Operator discussion: FBA vs FBM, which one are you sticking with (r/AmazonFBA) Operator discussion: FBA vs FBM for a new patented product (r/FulfillmentByAmazon) Operator discussion: currently doing 100 percent FBA based on my situation (r/FulfillmentByAmazon)FBA vs FBM Routing Formula Route to FBA when (Sale Price minus Landed Cost minus Fully Loaded FBA Cost) is greater than (Sale Price minus Landed Cost minus Fully Loaded FBM Cost) AND the SKU clears your velocity and margin-floor thresholds. Otherwise route to FBM. Re-run per SKU on a fixed schedule, not once at launch.
The operator fix: Score every SKU against the routing formula, assign it FBA or FBM deliberately, and write the assignment down as a rule. Re-run the scoring on a fixed cadence, for example quarterly, and after any major Amazon fee change. The output is a living routing table for the whole catalog, not a one-time setup decision.
The FBA-or-FBM Decision Table
This table is the structural version of the routing formula. It is not a scoring rubric with assumed numbers. It is the set of conditions that push a SKU toward one model or the other, and why.
| Condition | Favors FBA | Favors FBM | Why It Matters |
|---|---|---|---|
| Size and weight profile | Small and dense | Large or light-for-size | FBA fulfillment and storage fees scale hard with size tier and cubic footage |
| Sale price relative to fee load | High enough to absorb the full stack | Low, where fixed per-unit fees dominate | Fulfillment and storage are largely fixed per unit, so low price means thin or negative contribution |
| Inventory velocity | Fast-turning | Slow-turning | Slow SKUs accrue storage and aged-inventory surcharges that compound per unit sold |
| Margin headroom | Wide over the loaded FBA cost | Thin or uncertain | Thin-margin SKUs have no buffer for a fee change or a price war |
| Capital position | Able to fund pipeline plus receiving lag | Capital constrained | FBA ties up cash in transit and receiving queues before any sale |
| Unit value and loss risk | Modest value, low loss impact | High value, lost-unit risk material | Lost or misplaced units are reimbursed below landed cost, if at all |
| Returns rate | Low | High | FBA returns processing is a per-event cost the operator does not control |
| Need for Prime placement | Competitive category, Prime drives conversion | Differentiated or patented, less Prime-dependent | FBA’s real upside is velocity and Buy Box, which only some SKUs need |
FBA Cost Component vs Operator Control
The second table is an operational checklist of where the money goes and what lever the operator actually holds for each component. It separates the costs you can manage from the costs you can only plan around.
| Cost Component | FBA Exposure | FBM Exposure | Operator Control Lever |
|---|---|---|---|
| Referral fee | Charged on every sale | Charged on every sale | Category and price positioning only |
| Fulfillment cost | Amazon per-unit fee by size tier | Your own pick, pack, ship cost | Carrier rates, packaging, in-house process under FBM |
| Storage cost | Monthly per cubic foot, plus Q4 surcharge | Your own warehouse or 3PL rate | Velocity management and inventory ceilings |
| Placement and inbound | Placement fee or added split-shipment freight | Standard inbound freight only | Consolidated vs split shipment comparison per SKU |
| Returns processing | Per-event FBA cost, limited control | Your own returns process and policy | Listing accuracy, sizing info, product quality |
| Lost inventory risk | Material, reimbursed below landed cost | Limited to your own facility | Shipment records and monthly reconciliation |
| Capital tied up | Pipeline plus multi-week receiving lag | Pipeline only, sells on arrival | Reorder points set on true end-to-end lead time |
| Repricing pressure | Cut absorbed against mostly fixed fees | Cut absorbed against your own cost base | Hard margin floor enforced per SKU |
What the FBA Decision Actually Looks Like as an Operational System
Treating FBA as a checkbox at listing creation is the root cause of every failure pattern above. Run properly, the FBA-or-FBM decision is a system with distinct layers, and each layer answers a question the operator otherwise answers by guessing.
- SKU-level landed cost model. The true cost of one unit at the door, including product, freight, duties, and inbound handling. Build this first, because every other layer depends on it.
- Fee ingestion layer. A single place that captures referral, fulfillment, storage, placement, low-inventory, and returns costs per SKU. Build it the moment you have more than a handful of SKUs, because manual tracking fails at scale.
- Contribution margin engine. Sale price minus landed cost minus fully loaded fulfillment cost, calculated per SKU and per fulfillment model. This is the number the whole system exists to produce.
- Size and dimensional audit. Periodic verification of the size and weight tier Amazon has assigned each SKU. Build it once you have physical products in FBA, because tier misclassification quietly inflates fulfillment cost.
- Velocity and aging monitor. Days of inventory on hand and time-in-warehouse per SKU. Build it before your catalog is large enough that slow movers can hide.
- Storage exposure forecast. A forward model of cubic footage and Q4 surcharge risk. Build it before your first peak season in FBA, not during it.
- Inbound and placement strategy. A standing comparison of consolidated placement fee versus split-shipment freight, per shipment. Build it as soon as inbound placement fees apply to your account.
- Reconciliation and reimbursement engine. Monthly comparison of shipped, received, sold, and on-hand units, with a claim workflow for every gap. Build it the moment you ship your first FBA shipment.
- Stranded inventory SOP. A named owner, a weekly cadence, and a target of zero aged stranded units. Build it early, because stranded inventory is a process failure that scales with catalog size.
- FBA and FBM routing rules. A written, per-SKU assignment of fulfillment model based on the routing formula. Build it once you have enough SKUs that default-to-FBA is costing you.
- Repricing guardrails. A hard margin floor per SKU that automated or manual repricing cannot cross. Build it before you enter any contested listing.
- Policy and fee change register. A ranked list of SKUs by fee headroom, so platform changes get a controlled response instead of a quarterly surprise. Build it once and maintain it continuously.
Most operators have two or three of these layers and run the rest on instinct. The failure patterns in this article are simply the predictable output of the missing layers. At Modonix we build the full system around your actual catalog, produce the SKU-level FBA-or-FBM routing table, and hand back a written set of SOPs your team runs without us. If FBA fees, stranded inventory, lost units, or a thinning margin are the reason you are reading this, that is the exact problem we are built to fix. Start at modonix.com/services, or read more operator breakdowns at modonix.com/blog.
Ready to Fix Your Operations?Find the right solution for your business, or download our free self-assessment checklist.Explore Modonix services and pricingDownload the checklist
Free download: When to Use FBA and When Not To, 25-Point Operator Self-Audit
A five-category, 25-question audit that walks your catalog through fee exposure, inventory health, inbound risk, lost-unit controls, and the FBA-or-FBM decision itself. Every unchecked box is a documented operational gap. Print it, score it, and act on the gaps.
Ahmed Abuswa
Head of E-Commerce Operations at Modonix. Ahmed builds profitability and fulfillment systems for e-commerce operators, with a focus on the cost mechanics most sellers do not see until a quarterly statement forces them into view. Connect on LinkedIn.

