What this report contains
One row is one merchant SKU in one country, as of the moment you pulled the file. The row puts three things side by side: what you are holding, how fast it has been selling, and what Amazon suggests you do about it.
The identity columns come first — country, merchant_sku, fnsku, asin, condition, and the supplier and supplier_part_no fields the file carries alongside them. Then the demand side, sales_last_30_days and units_sold_last_30_days, both trailing 30-day windows rather than figures for any particular date.
The unit counts are the bulk of the file. total_units sits above a breakdown by state — available, inbound, fc_transfer, fc_processing, customer_order and unfulfillable — and then three columns for inbound shipments by stage: working, shipped and receiving.
Cover is expressed twice, and the pair is the point: total_days_of_supply_including_units_from_open_shipments counts units in open inbound shipments, while days_of_supply_at_amazon_fulfillment_network counts only what is already in Amazon's network. Both arrive typed as strings.
Amazon's own output is the last group: alert, recommended_replenishment_qty, recommended_ship_date and recommended_action. These carry Amazon's suggestion for the SKU. This page documents what the columns hold, not how Amazon computes them — neither the method behind the quantity nor the set of values alert and recommended_action can take is published.
Two of those columns are not present everywhere. The EU-5 file omits recommended_action, and an MX file omits both recommended_action and unit_storage_size — 30 columns for US, 29 for EU, 28 for MX. A typed copy that holds one schema across marketplaces fills the missing ones with nulls, so an empty column means "this marketplace does not publish it", not "nothing to recommend".
How to get it
Through the Selling Partner API it is a Reports API request for report type GET_RESTOCK_INVENTORY_RECOMMENDATIONS_REPORT. You submit the request with the marketplace you want, poll it until Amazon returns a document ID, then download the document, which is TSV. There is no date range to supply: the report has no data start or end time, because it describes the present rather than a period.
Requests are made per marketplace, and the supported set is narrow — North America, the EU 5 and Japan. Asking for any marketplace outside it is not an empty file but a guaranteed fatal request, so a fan-out across every marketplace an account sells in will fail on the ones Amazon does not publish. Credentials are endpoint-scoped in any case, so one credential cannot span two regions.
In Seller Central, Amazon lists Restock Inventory among the tools for managing FBA inventory — it is the tool for keeping "inventory at healthy levels", with recommendations "based on your sales history, along with demand and seasonality forecasts" — and documents the FBA inventory area as Inventory → FBA Inventory in the main menu. Whether that page offers the same file as a download is written down only in Seller Central's login-gated help, so the API above is the route this page can stand behind.
The trap that catches people is the EU file. One EU-5 request returns the whole region — a single file of DE, GB, FR, ES and IT rows together, 517,705 rows in one measured file — so five per-marketplace requests each return the same region-wide file, and any per-marketplace label you stamp on the download is wrong for four fifths of its rows. NA does not behave this way: a US request returns US rows only, and an MX request against an account with real MX volume returned 3,941 MX-only rows. Read the country from the in-file country column, never from the request you made.
Sample rows
Illustrative values, not data from a real account. Shown to give the shape of the file.
| country | merchant_sku | asin | available | inbound | units_sold_last_30_days | days_of_supply_at_amazon_fulfillment_network | recommended_replenishment_qty | recommended_ship_date |
|---|---|---|---|---|---|---|---|---|
| US | EXAMPLE-SKU-01 | B0EXAMPLE01 | 120 | 0 | 300 | 12 | 400 | 2026-10-01 |
| US | EXAMPLE-SKU-02 | B0EXAMPLE02 | 900 | 200 | 150 | 180 | 0 | |
| DE | EXAMPLE-SKU-03 | B0EXAMPLE03 | 60 | 240 | 600 | 3 | 500 | 2026-09-28 |
| GB | EXAMPLE-SKU-03 | B0EXAMPLE03 | 45 | 0 | 90 | 15 | 150 | 2026-10-05 |
| JP | EXAMPLE-SKU-04 | B0EXAMPLE04 | 0 | 100 | 240 | 0 | 300 | 2026-09-25 |
Field reference
| Column | Type | Description |
|---|---|---|
country | string | The country the row's inventory belongs to, as Amazon labelled it in the file. This is the only reliable way to tell an EU row's country apart, because one EU-5 file carries DE, GB, FR, ES and IT rows together. |
product_name | string | The listing title Amazon carries for this offer. |
fnsku | string | Amazon's fulfilment-network SKU — the identifier the physical units are tracked under inside FBA, as distinct from your own SKU and from the ASIN. |
merchant_sku | string | Your own seller SKU. Together with country and the snapshot you pulled, this is the row's identity. |
asin | string | The ASIN this SKU is listed against. Several SKUs can point at one ASIN. |
condition | string | The condition Amazon holds this offer under. |
supplier | string | The supplier carried on the row for this SKU. |
supplier_part_no | string | The supplier's own part number for this SKU, from the file's Supplier part no. column. |
currency_code | string | The currency the price and sales_last_30_days columns are denominated in. It is carried per row because the EU file mixes five countries, and therefore several currencies, in one file. |
price | decimal | The unit price the file carries for this offer, in the row's currency_code. Which price Amazon reports here is not established. |
sales_last_30_days | decimal | Sales value for this SKU over the trailing 30 days, in the row's currency_code. A trailing window, not a figure for any date in the file. |
units_sold_last_30_days | int64 | Units of this SKU sold over the trailing 30 days. |
total_units | int64 | The total unit count the row carries for this SKU. The columns that follow break units down by state; which of them this total covers is not published, so reconcile before treating it as their sum. |
inbound | int64 | Units on their way to Amazon rather than sitting in the network. |
available | int64 | Units in the network and sellable right now. |
fc_transfer | int64 | Units moving between fulfilment centres, and so not available to sell while in transit. |
fc_processing | int64 | Units being processed at a fulfilment centre. |
customer_order | int64 | Units held against customer orders that have not shipped yet. |
unfulfillable | int64 | Units in the network that Amazon will not sell — damaged, defective or otherwise blocked. They still appear in your stock, which is why restock maths that uses the wrong unit column overstates cover. |
working | int64 | Units in inbound shipments still at the Working stage — a shipment created but not yet handed over. |
shipped | int64 | Units in inbound shipments marked as shipped and not yet received. |
receiving | int64 | Units in inbound shipments Amazon has begun receiving but has not finished checking in. |
fulfilled_by | string | Who fulfils this offer, as the file labels it. |
total_days_of_supply_including_units_from_open_shipments | string | Days of cover counting units in open inbound shipments as well as units already at Amazon. It arrives as a string rather than a number, so anything doing arithmetic on it has to parse it first. |
days_of_supply_at_amazon_fulfillment_network | string | The narrower days-of-cover figure, counting only units already in Amazon's network and excluding the open shipments the column above includes. Also a string. |
alert | string | Amazon's alert text for this row, where it sets one. The column is present in the file, but the vocabulary of values it can hold is not published. |
recommended_replenishment_qty | int64 | The number of units Amazon suggests sending in for this SKU. It is Amazon's own figure, carried through unchanged; nothing Amazon publishes describes how the figure is produced. |
recommended_ship_date | date | The ship date Amazon attaches to its suggestion for this row. |
recommended_action | string | The action Amazon attaches to the row. Absent from the EU-5 file and from the MX file, where the typed copy fills it with nulls rather than dropping the column. |
unit_storage_size | string | Amazon's storage-size band for one unit of this SKU. Absent from the MX file, where it likewise becomes an all-null column. |
Use cases
Ranking what to ship next. recommended_replenishment_qty and recommended_ship_date give you Amazon's suggestion per SKU in one file, which is the practical starting point for a purchase-order cycle — sorted by days_of_supply_at_amazon_fulfillment_network ascending, it is a shipping queue. Treat the quantity as Amazon's opinion rather than a computed reorder point: nothing published tells you what went into it.
Separating a stock-out from a stock problem. A SKU with available at zero but healthy inbound, shipped and receiving numbers is waiting on check-in, not on a purchase order. One with zero across all of them needs stock. The two look identical in a sales report and completely different here.
Finding units you own but cannot sell. unfulfillable counts stock sitting in the network that Amazon will not sell, and it is easy to miss because the units are still yours and still somewhere in the totals. Reviewing it by merchant_sku regularly is how removal orders get raised before the stock ages.
Seeing the same SKU's cover country by country. Because the EU file is region-wide, one pull shows a SKU's available and days-of-supply figures for DE, GB, FR, ES and IT next to each other — useful for spotting that the cover problem is one marketplace rather than the product.
Reconciling supplier lead time against Amazon's date. supplier, supplier_part_no and recommended_ship_date in one row let you check whether Amazon's suggested ship date is even reachable given who makes the product and how long they take.
Limitations and gotchas
The EU file is region-wide, and a per-marketplace label on it is wrong. Five requests return five near-identical copies of the same DE/GB/FR/ES/IT file. Anything that trusts the requested marketplace instead of the country column will attribute four fifths of the rows to the wrong country. Deduplicating on merchant_sku alone collapses genuinely different country rows.
The file has no date column. Nothing inside it records when the snapshot was taken; the only date present is recommended_ship_date, which is a suggestion, not a timestamp. Stamp the pull time yourself, or two snapshots become indistinguishable.
Money is not converted, and one file can mix currencies. price and sales_last_30_days carry the row's currency_code. Summing either across a region-wide EU file adds euros to pounds.
Columns exist that the marketplace never fills. recommended_action is absent from EU and MX files and unit_storage_size from MX files; in the typed copy both come back as all-null columns. Code that tests "is this column empty" to decide whether a SKU needs action will read "no action" for an entire marketplace.
The days-of-supply columns are text. Both are typed as strings, so sorting them lexicographically puts 100 before 9, and arithmetic on them needs a parse first.
The recommendations are Amazon's, and undocumented here. The quantity, the date, the alert and the action are values Amazon publishes. What is established is that the columns exist and where they go missing — not how the numbers are produced, what the alert strings say, or what a suggestion implies about your account.
Trailing 30 days is not the same window as anything else. sales_last_30_days and units_sold_last_30_days are a rolling window ending at the snapshot, which will not tie out to a calendar month in a sales report.
FAQ
Amazon publishes it in North America, the EU 5 (Germany, the UK, France, Spain and Italy) and Japan. Requesting it for any other marketplace fails outright rather than returning an empty file. Whether Brazil counts inside the North America set is not settled, so treat that one as unconfirmed.
No. It is a point-in-time view with no date column of its own, and the only date in it is the recommended ship date. If you are storing snapshots, record the pull time yourself.
Because the EU file is region-wide: one request returns Germany, the UK, France, Spain and Italy together. The likely reason is Pan-European FBA pooling inventory across the region. Use the in-file country column to tell the rows apart.
Not in these columns. The report's columns carry recommended quantities, ship dates, alerts and actions, but no capacity or restock-limit field, so limits have to come from somewhere else.
Because your marketplace does not publish them. Recommended action is missing from the EU and Mexico files, and unit storage size from the Mexico file. The typed copy keeps the columns and fills them with nulls so the schema stays the same everywhere.
Amazon does not publish the method. The report carries Amazon's figure through unchanged, and this page deliberately does not restate a method for it.
Sources
Every researched claim on this page, and the Amazon or Walmart page it came from.
- latency — developer-docs.amazon.com/report-type-values-fba — the Restock Inventory Report entry says 'Content updated in near real-time', and the page's preamble says 'A near real-time FBA report is generated no more than once every 30 minutes'.
- history_window — developer-docs.amazon.com/report-type-values — 'The retention of generated reports varies by report type. If an explicit retention is not specified for a report type, then the report will be retained for 90 days. If the generated report is not downloaded within the retention period, you can generate the report again.' No explicit retention is specified for this report type.
- how-to-get-it (console path) — sell.amazon.com/fba-dashboard — 'To access the FBA Dashboard in Seller Central, hover over Inventory in the main menu, then click FBA Inventory.'
- how-to-get-it (console path) — sell.amazon.com/fba-inventory — lists 'Restock Inventory' among the tools for managing FBA inventory: 'Use this tool to maintain your inventory at healthy levels … You can also get recommendations based on your sales history, along with demand and seasonality forecasts'. Amazon publishes nothing outside its login-gated help about a download on that page.
- marketplaces — developer-docs.amazon.com/report-type-values-fba — the Restock Inventory Report entry gives only 'Availability: FBA sellers' and carries no store list, so Amazon publishes nothing that either confirms or denies a store for this report type. The page's nine-store list rests on production evidence instead, which names US, CA and MX and the DE/GB/FR/ES/IT stores directly, plus JP. What is established: those nine stores. What is not: Brazil. Amazon's NA endpoint covers 'Canada, US, Mexico, and Amazon Brazil stores' (developer-docs.amazon.com/sp-api-endpoints), so a region-level 'NA' cannot be read as US/CA/MX on its own — `br` is left off because no evidence names it, not because anything says it is unsupported. Settling it needs a real request against a Brazil account. The Seller Central article for this report (sellercentral.amazon.com/G202105670) serves a login shell.
- grain — developer-docs.amazon.com/report-type-values-fba — the reference lists `Country` among the report's attributes and states no row grain anywhere. `inventory-snapshot` stays as the closest single term in _taxonomy.yaml, which has no term for the country part of the key; the prose carries it instead ('one merchant SKU in one country, as of the moment you pulled the file'), which is the directory's rule for a compound grain.
- fields.price — developer-docs.amazon.com/report-type-values-fba — the reference lists the `Price` attribute by name and defines nothing. No page on Amazon's own domains says whether it is the current listing price, the Featured Offer price or something else, so the column description says only what the file carries. Settling it needs a real pull compared against a pricing report.
- fields.total_units — developer-docs.amazon.com/report-type-values-fba — the reference lists `Total Units` alongside `Inbound`, `Available`, `FC transfer`, `FC Processing`, `Customer Order`, `Unfulfillable`, `Working`, `Shipped` and `Receiving` and states no arithmetic between them. Whether the total covers the unit-state columns, the shipment stages, or both is not published; the page claims no identity between them.
- fields.alert and fields.recommended_action — developer-docs.amazon.com/report-type-values-fba — the reference lists `Alert` as an attribute with no definition and no value set, and does not list `Recommended action` at all. The Seller Central article that would carry the vocabulary (sellercentral.amazon.com/G202105670) returns a client-rendered shell: it and a second, unrelated help node come back byte-identical, so there is no article text to read without a login. Amazon publishes no value set for either column anywhere public, so the page describes what the columns hold and records no vocabulary, and says nothing about how Amazon arrives at a recommendation.
- fields.total_days_of_supply_including_units_from_open_shipments and fields.days_of_supply_at_amazon_fulfillment_network — developer-docs.amazon.com/report-type-values-fba — the reference names both columns ('Total Days of Supply (including units from open shipments)' and 'Days of Supply at Amazon Fulfillment Network') and gives neither a definition nor a type. Both were measured as strings in production files, which stands; which non-numeric values appear in them is recorded nowhere Amazon publishes and needs a real file.
- history_window (residual) — developer-docs.amazon.com/report-type-values — the 90-day document retention default is the only retention statement Amazon makes that reaches this report type. Nothing on Amazon's domains says whether the recommendation history behind a snapshot is kept anywhere a seller could ask for an older one; the request takes no date range, so the page does not claim one exists.
- CONFLICT (doc vs evidence), column count — developer-docs.amazon.com/report-type-values-fba — the reference lists 28 attributes for GET_RESTOCK_INVENTORY_RECOMMENDATIONS_REPORT and omits both `Recommended action` and `Unit storage size`. A real US file was measured at 30 columns including those two, and both were measured missing from the EU-5 and MX files. The page follows the measured files and nothing was changed; the reference is incomplete, which is worth knowing before trusting its attribute lists elsewhere.