Short version
FIFO (First-In-First-Out) is warehouse rotation by receipt date — oldest stock ships first. FEFO (First-Expiry-First-Out) is rotation by expiration date — soonest-expiring stock ships first. On Amazon FBA the seller doesn't control fulfillment sequencing, so FIFO doesn't apply at all and FEFO becomes a per-MSKU pricing problem: discount the soonest-expiring MSKU so its offer wins the Buy Box first. Same goal as warehouse FEFO (clear the soonest-expiring stock); different mechanism (price-driven Buy Box rotation instead of physical pick sequence).
What FIFO and FEFO actually mean
FIFO — First-In-First-Out
A warehouse rotation principle: ship units in the order they arrived. The oldest receipt date ships first regardless of expiration. FIFO works well for inventory with no expiration constraint — books, electronics, apparel, hard goods. The principle keeps inventory moving and prevents stale stock from sitting indefinitely.
FEFO — First-Expiry-First-Out
A different warehouse rotation principle: ship units in the order they expire. The soonest expiration date ships first regardless of when the unit arrived. FEFO is the correct principle for expiration-dated inventory — supplements, food, beauty, OTC pharmacy — because the goal is to clear units before they become unsellable.
When FIFO and FEFO coincide
The two often line up: older receipts usually have closer expiration dates, so shipping by receipt date and shipping by expiration date pick the same unit. The principles diverge when receipt order doesn't match expiration order — for example, a January shipment of long-shelf-life stock arriving alongside a March shipment of short-shelf-life stock. FIFO ships the January stock first; FEFO ships the March stock first. For expiration-dated inventory, FEFO is the right call.
Why FIFO doesn't apply on Amazon FBA
On Amazon FBA, the seller does not control fulfillment sequencing. Amazon's commingled fulfillment may pick any unit under a given MSKU for a given order. There's no setting that lets the seller specify “ship the oldest receipt date first.”
That means FIFO as a fulfillment principle doesn't translate to Amazon FBA. The seller can't enforce it. The principle still applies to physical inventory the seller controls — a private warehouse, a 3PL — but inside FBA, fulfillment sequencing is Amazon's.
Why FEFO becomes a pricing problem
FEFO matters more than FIFO for expiration-dated inventory — the cost of not clearing soonest-expiring stock is FEFO blocks, Disposal Requests, and missed margin. Since the seller can't enforce physical FEFO inside FBA, the only available lever is price.
The mechanism: assign one MSKU per expiration batch (per FNSKU and MSKU expiration date tracking). Submit a discounted price on the soonest-expiring MSKU through the Listings Items API. Amazon's Buy Box logic preferentially routes orders to the cheaper offer. Buyers order the soonest-expiring batch first. The at-risk inventory clears through normal sales instead of through a Disposal Request.
See Amazon FBA FEFO pricing for the full pricing mechanics.
When each matters
FIFO matters when:
- You operate a private warehouse or 3PL alongside Amazon FBA.
- You sell non-expiration-dated categories (electronics, apparel, books) and want to prevent stale stock from sitting indefinitely.
- You're running a separate fulfillment channel where you control pick sequencing.
FEFO matters when:
- You sell expiration-dated categories — consumables, food, beauty, supplements, OTC.
- You have multiple batches of the same product in FBA at the same time.
- You need to clear soonest-expiring stock before Unsellable by Date.
For Amazon FBA sellers with expiration-dated inventory, FEFO matters almost always. FIFO rarely.
A real-shaped example
A supplements seller has two batches of the same ASIN in FBA:
NUT-Q126-LOT12— 587 units, received January 14, Unsellable by Date March 8.NUT-Q226-LOT19— 1,184 units, received March 4, Unsellable by Date July 22.
The January batch arrived earlier (FIFO says ship it first) and also expires earlier (FEFO says ship it first). FIFO and FEFO coincide. No conflict.
Now suppose a third batch arrives:
NUT-Q226-LOT41— 800 units, received April 5, Unsellable by Date April 30 (short-shelf-life clearance lot).
FIFO would ship the January Q1 batch first because it arrived first. FEFO would ship the April Q2 short-dated lot first because it expires soonest. The correct call for expiration-dated inventory is FEFO — ship the April lot first or it becomes a Disposal Request.
On Amazon FBA, the seller can't enforce either physically. The lever is per-MSKU pricing: discount NUT-Q226-LOT41 below the other two MSKUs. The cheaper offer wins more of the Buy Box rotation. Buyers preferentially order the April lot. The at-risk batch clears before its Unsellable by Date.
Common mistakes
- Assuming Amazon runs FEFO automatically. Amazon's fulfillment doesn't guarantee FEFO at the unit level. The seller-side workaround is per-MSKU pricing.
- Discounting at the ASIN level instead of the MSKU level. Whole-ASIN price drops discount every batch, including the still-good ones. Per-MSKU pricing targets only the at-risk batch.
- Confusing FIFO with FEFO. In conversations with vendors or consultants, “we run FIFO” sometimes gets used loosely to mean “we rotate stock.” For expiration-dated inventory on Amazon FBA, the discipline is FEFO via pricing — not FIFO via sequencing.
- Waiting too long to apply FEFO pricing. Velocity at a discount takes time to build. A 5% discount that gets time to work clears more units at less margin hit than a panic 25% discount in the last week.
How Shelfdoc helps with FEFO pricing
- Each ASIN with multiple mapped MSKUs gets a FEFO Pricing tab. The seller sets a discount in dollars or percent on the soonest-expiring MSKU.
- The price update submits through the Listings Items API. Amazon decides Buy Box assignment and listing-level acceptance.
- When the discounted MSKU clears, the next-soonest MSKU rotates into the discount slot automatically (if the seller opted into auto-rotation). The cleared MSKU's price restores to baseline.
- An alert fires when the discounted batch's velocity at the current discount isn't enough to clear it before Unsellable by Date — the signal to deepen the discount or switch to a scheduled Disposal Request.
What Shelfdoc does not do
- Shelfdoc does not pick the discount level. The seller decides what margin to trade for velocity.
- Shelfdoc does not run physical-warehouse FIFO rotation. FIFO is a sequencing decision in fulfillment systems the seller controls directly.
- Shelfdoc does not change Amazon's Buy Box logic, search ranking, or listing acceptance.
- Shelfdoc does not handle Amazon advertising campaigns or Subscribe & Save discount rotations. Those are separate Amazon products.
Related topics
- Amazon FBA FEFO pricing — the full per-MSKU pricing mechanic.
- FNSKU and MSKU expiration date tracking — the per-MSKU model FEFO pricing depends on.
- Amazon FBA Unsellable by Date — the date that drives FEFO decisions.
- Amazon FBA Removal Order + expiration — the fallback when FEFO pricing alone doesn't clear the batch.
- Amazon FBA expiration date SOP — the full operator playbook.
- Expiration date glossary.
- Resources hub — every guide, glossary entry, calculator, and decision framework, organized by topic.
Frequently asked questions
- What's the actual difference between FIFO and FEFO?
- FIFO (First-In-First-Out) ships units in the order they arrived at the warehouse — oldest receipt date first. FEFO (First-Expiry-First-Out) ships units in the order they expire — soonest expiration first. The two coincide when receipt date and expiration date line up. They diverge when an older receipt has a later expiration than a newer one — for example, a January shipment of long-shelf-life stock vs. a March shipment of short-shelf-life stock.
- Which is better for expiration-dated inventory — FIFO or FEFO?
- FEFO is the correct principle for expiration-dated inventory. The goal is to clear units before they expire, regardless of when they arrived. FIFO can work for inventory with no expiration constraint (electronics, apparel, books), but on consumables FIFO ships the wrong unit when receipt order doesn't match expiration order.
- Does Amazon FBA run FEFO?
- Amazon's commingled fulfillment doesn't guarantee FEFO at the unit level — the system may pick any unit under a given MSKU for a given order. For expiration-dated inventory, the seller-side workaround is to assign one MSKU per expiration batch, then use per-MSKU pricing to influence which batch sells first. The Buy Box winner ships first; cheaper offers tend to win the Buy Box.
- Can a seller force FIFO on Amazon FBA?
- No. The seller doesn't control Amazon's fulfillment sequencing. There's no setting that says "ship the oldest unit first." The seller controls price submission per MSKU through SP-API; Amazon decides which offer wins the Buy Box for each order.
- How does FEFO pricing actually work on Amazon FBA?
- The seller assigns a unique MSKU per expiration batch, then submits a discounted price on the soonest-expiring MSKU through the Listings Items API. The cheaper offer wins more of the Buy Box rotation, and buyers preferentially order that MSKU. As the at-risk batch clears, the seller restores its price to baseline and applies the discount to the next-soonest MSKU.
- I run a warehouse alongside Amazon. Should I use FEFO in both places?
- In your own warehouse, FEFO is a fulfillment-sequencing decision — you physically pick the soonest-expiring unit first. On Amazon FBA, fulfillment sequencing is Amazon's; your only lever is pricing. The principle (clear soonest-expiring stock first) is the same; the mechanism (physical sequencing vs. price-driven Buy Box) differs.
Run FEFO via pricing on every ASIN with multiple batches in FBA
Per-MSKU price updates submitted through the Amazon Listings Items API. Automatic rotation as the at-risk batch clears. A timestamped audit trail for every price change.
Create account