Operator reference

FNSKU and MSKU Expiration Date Tracking

The seller-side mechanics of tracking expiration dates inside Amazon FBA: what FNSKU, MSKU, and ASIN actually mean, why per-MSKU is the correct unit of work, and how to structure your SKUs so expiration logic actually works.

Last reviewed·2026-05-28

Short version

For Amazon FBA sellers managing expiration-dated inventory, the correct unit of work is the Merchant SKU (MSKU), not the ASIN. One ASIN can have multiple MSKUs in FBA at the same time, each representing a different inbound batch with its own expiration date and Unsellable by Date. The FNSKU is the Amazon-issued barcode physically labeled on each unit and is tied one-to-one with the MSKU. Tracking expiration at the MSKU level preserves batch identity through fulfillment and lets the seller drive FEFO sequencing, Disposal Requests, and audit trails per batch.

FNSKU, MSKU, ASIN — what each is

Three identifiers, three jobs:

  • ASIN — Amazon Standard Identification Number. Amazon's product identifier. One ASIN per product. ASINs are public; buyers see them in URLs and product pages.
  • MSKU — Merchant SKU. The seller's identifier for an inventory line. Sellers choose MSKU naming. One MSKU per logical inventory variant the seller wants to track separately. MSKUs are private to the seller; buyers never see them.
  • FNSKU — Fulfillment Network SKU. Amazon's barcode label printed on the physical unit inside FBA. One FNSKU per MSKU, assigned by Amazon when the MSKU is created. The FNSKU is what Amazon's warehouse uses to identify the unit at receiving and at pick-and-pack.

The MSKU is the boundary the seller controls. Amazon controls ASIN definitions (and can merge ASINs without warning) and Amazon controls FNSKU issuance. But the seller decides whether to use one MSKU per batch or one MSKU for the whole ASIN — and that decision determines whether expiration tracking works.

Why per-MSKU is the unit of work

Amazon's FBA inventory record is tracked at the MSKU level, not at the per-unit level. When a buyer orders a product, Amazon's fulfillment system picks any unit of any MSKU mapped to that ASIN (subject to the seller's account preferences). Within a single MSKU, Amazon does not distinguish between two units — they are interchangeable inventory, even if the units came from two different inbound shipments with two different expiration dates.

The consequence: if a seller uses one MSKU for two expiration batches of the same product, Amazon's fulfillment may ship either batch interchangeably. The seller cannot run FEFO sequencing (because there is no batch boundary to discount differently), cannot file a per-batch Disposal Request (because the seller cannot identify which units in FBA belong to which batch), and cannot maintain a per-batch audit trail.

The fix is structural: use one MSKU per expiration batch. Each new inbound with a materially different expiration date gets a new MSKU and a new FNSKU. Amazon now treats the batches as separate inventory lines. FEFO pricing, Disposal Requests, and audit trails all become per-batch decisions that key off the MSKU.

How to set up MSKUs for expiration tracking

Two paths in Seller Central, plus an underlying convention:

  1. Add a Product (single MSKU). Use Seller Central's Add a Product flow to create a new MSKU as a new variant of an existing ASIN. Assign a memorable MSKU naming convention — many sellers encode the expiration month or lot number in the MSKU itself (for example, SKIN-B0XYZ-2026-03 for a batch expiring March 2026). The MSKU and FNSKU appear in your inventory after creation.
  2. FlatFile (bulk). For new inbound lines covering multiple batches at once, sellers can use the Inventory Loader FlatFile (.csv or .xlsx) to create many MSKUs in one upload. Each row creates one MSKU with its own FNSKU. The FlatFile format requires careful column-by-column attention; small column errors cause silent rejections.

The naming convention does not matter to Amazon — Amazon treats MSKUs as opaque strings — but it matters operationally. A consistent naming pattern that includes the batch identifier (lot number, PO, expiration month) makes the seller's inventory readable at a glance and makes audit-trail reconciliation faster.

Worked example

A supplement seller has one ASIN, B0XYZ, with three inbound batches received over six months:

  • Batch A — 1,200 units, received March, expires October 2026.
  • Batch B — 900 units, received June, expires February 2027.
  • Batch C — 1,500 units, received August, expires August 2027.

The wrong setup: one MSKU (SUPP-B0XYZ) covering all three batches. Amazon's warehouse cannot tell Batch A from Batch C — they all have the same FNSKU label. Disposal Requests filed against SUPP-B0XYZ will dispose of an arbitrary mix. FEFO pricing is impossible. When Amazon eventually FEFO-blocks the October batch, the only seller-side record is the unit total dropping.

The right setup: three MSKUs.

  • SUPP-B0XYZ-OCT26 with FNSKU X0YYY1, mapped to expiration October 2026.
  • SUPP-B0XYZ-FEB27 with FNSKU X0YYY2, mapped to expiration February 2027.
  • SUPP-B0XYZ-AUG27 with FNSKU X0YYY3, mapped to expiration August 2027.

Each MSKU is now a separate inventory line. FEFO pricing discounts SUPP-B0XYZ-OCT26 to sell it first. Disposal Requests target individual MSKUs on individual Unsellable by Dates. The audit log records every action per MSKU.

Common mistakes

  • Reusing the same MSKU across batches. The most common mistake. Saves a few minutes at intake; costs visibility, FEFO sequencing, and per-batch disposal control later.
  • Encoding ambiguous metadata in the MSKU name. Naming an MSKU SUPP-B0XYZ-1 requires the seller to remember whether the "1" was the first batch ever or the first batch in the current calendar year. Encoding the expiration month or PO directly is sturdier.
  • Letting Amazon issue a new FNSKU without printing it on the case-pack. A new MSKU gets a new FNSKU; the case-pack going to Amazon needs to carry that exact FNSKU. Generic labels or labels from a previous MSKU cause receiving exceptions or, worse, mis-attribution.
  • Discarding the MSKU once a batch is fully disposed. An MSKU with zero units in FBA can be archived but not deleted from a seller's record — the audit trail of "this MSKU existed, these units shipped, this disposal was filed" is what supports later Seller Support cases, accounting reconciliation, and Amazon reimbursement claims.

How Shelfdoc helps

Shelfdoc is built around the MSKU as the unit of work. The seller authorizes Shelfdoc to Amazon SP-API; Shelfdoc reads the FBA inventory report at the MSKU level and surfaces every active MSKU in an intake queue. The seller maps each MSKU to an expiration date, an Unsellable by Date, and any optional references (PO, invoice, lot number, FNSKU). From that point forward every workflow keys off the MSKU.

Shelfdoc's Inventory Intelligence layer also handles the "next-batch problem": when the seller marks an ASIN as expiration-tracked, every new MSKU that arrives under that ASIN on the next sync flows into the Unmapped queue automatically — so the seller never has to remember to look. The seller can paste a list of FNSKUs and Shelfdoc resolves them to MSKUs and ASINs through the SP-API.

What Shelfdoc does not do

  • Shelfdoc does not create MSKUs in Seller Central. That stays in Seller Central; the seller creates new MSKUs through Add a Product or FlatFile.
  • Shelfdoc does not print FNSKU labels. Labeling stays at the seller's prep stage; Shelfdoc reads the MSKU/FNSKU mapping from Amazon.
  • Shelfdoc does not modify Amazon's record of an MSKU's expiration date directly. Date correction goes through Seller Support with the inbound shipment paperwork.
  • Shelfdoc does not guarantee Amazon-side outcomes — Buy Box wins, FEFO sequencing acceptance, or disposal timing.

Frequently asked questions

What is the difference between FNSKU, MSKU, and ASIN on Amazon FBA?
ASIN is Amazon's product identifier — one ASIN per product. MSKU (Merchant SKU) is the seller's identifier — one MSKU per logical inventory line the seller wants to track separately. FNSKU is Amazon's barcode label printed on the physical unit, tied one-to-one with the MSKU. ASIN and MSKU are not the same: a single ASIN can have multiple MSKUs (and therefore multiple FNSKUs), one per inventory variant the seller chose to keep separate.
Why should an Amazon FBA seller use one MSKU per expiration batch?
Because Amazon's FBA inventory record is tracked at the MSKU level, not at the unit level. If a seller uses one MSKU for two expiration batches, Amazon cannot distinguish between them at fulfillment — commingled units of "the same MSKU" are interchangeable. Disposal Requests, FEFO pricing, and per-batch audit trails all break. Using one MSKU per expiration batch preserves the batch boundary so the seller can run different decisions per batch.
How does a seller create a new MSKU for a new expiration batch?
In Seller Central, sellers create new MSKUs through Add a Product (for a new variant of an existing ASIN) or through bulk inventory file uploads (FlatFile). Each new MSKU gets its own FNSKU assigned by Amazon at creation. The seller then ships under the new MSKU with the correct case-pack expiration date in the shipping plan, and Amazon receives the units under that MSKU.
What happens if Amazon receives a case-pack with the wrong FNSKU label?
Amazon attempts to identify the unit through other signals — typically the manufacturer barcode if the listing allows it. A mismatch usually results in either a receiving exception (the unit is set aside for resolution) or, worse, commingled receipt against the wrong MSKU. The remedy is a Seller Support case with the inbound shipment paperwork; outcomes vary by Amazon's receiving operation.
What is commingling in Amazon FBA and how does it interact with expiration tracking?
Commingling is the Amazon FBA practice of pooling units from multiple sellers under one ASIN, where any seller's unit can ship for any seller's order. Within a single seller's own inventory, "internal commingling" between two batches of the same MSKU has the same effect — Amazon picks one unit interchangeably. Per-MSKU tracking is the seller's defense: by giving each expiration batch its own MSKU and FNSKU, the seller forces Amazon to treat the batches as separate inventory lines.
Can a seller change the expiration date on an existing MSKU?
The expiration date is stored at receiving per inbound shipment, not on the MSKU itself. A seller can update the shipping-plan declared expiration date for a future inbound. For units already in FBA, the seller can attempt a Seller Support case to correct Amazon's stored value if it is wrong — the outcome depends on the supporting documentation. The safe pattern is to use a new MSKU when the batch has a materially different expiration date.
How does Shelfdoc work with FNSKU and MSKU identifiers?
Shelfdoc is MSKU-first by design. The seller maps each MSKU to an expiration date, an Unsellable by Date, and optional references (PO number, invoice number, lot number, FNSKU for traceability). FEFO pricing, Disposal Request scheduling, Subscribe & Save rotation, and Audit Log entries all key off the MSKU. Shelfdoc reads FBA inventory through the SP-API at the MSKU level so the seller's record stays consistent with what Amazon stores.

Run expiration tracking at the MSKU level

Map every MSKU. Resolve every FNSKU to its batch. Drive FEFO sequencing and Disposal Requests per batch instead of per ASIN.

Create account