Run everything you never had time to implement. Define your process once, and keep it running with Qore.

All reports
Amazon Seller Central
Replenishment & Subscribe and Save

Amazon Subscribe & Save Selling Partner Metrics Report

Amazon's Selling Partner Metrics from the Replenishment API is the account-level view of your Subscribe & Save business, one marketplace at a time. The daily rows carry active subscriptions, shipped units, subscription revenue, revenue lost to stock-outs and how much of your revenue comes through the program; alongside them Amazon returns subscriber retention at 30 and 90 days, lifetime value by customer segment, and revenue penetration and signup conversion split by how much of the discount you fund. Since Amazon retired the Subscribe & Save flat files in December 2025, this API is where those numbers live.

Known upstream as
getSellingPartnerMetrics
One row is
One row per day
Refreshed
Daily
Columns
35
Marketplaces
United States, Canada, United Kingdom, Germany, France, Italy, Spain, India, Japan
History
Two years. Amazon supports only the trailing 2 years of data in a request, and a request aggregated by day may not span more than 31 days — so reaching back across that window at day grain takes a run of successive calls. Recent days are restated after the fact, so a window already loaded is worth requesting again.
Latency
Amazon restates recent days after the fact, late enough that re-pulling the last 30 days is the only way to keep a table honest. How quickly a new day first appears is not documented — the reference says only that the end date you ask for may be adjusted down to whatever data Amazon already holds.
Requires
Amazon Brand Registry

What this report contains

This is the account-level Subscribe & Save report: how the program is doing for you as a whole, in one marketplace, with no ASIN or SKU anywhere in the file. The per-offer version of the same measures is a different operation (listOfferMetrics) and a different page; this one carries the half of the picture that is not a sum over offers.

Each row is one interval for one marketplace. On the operating measures — active_subscriptions, shipped_subscription_units, total_subscriptions_revenue, lost_revenue_due_to_oos, not_delivered_due_to_oos, revenue_penetration and the two coupon columns — the interval is the day you asked for, and those are the rows that behave like a daily table. The rest of the columns are cohort measures, and Amazon returns each of them on its own row over its own trailing window rather than at the day grain you requested: subscriber_retention_for_30_days and _90_days; the seven life_time_value columns, split by customer segment (non-subscriber, lost, growing, established) and by whether the money came from one-time purchases (_otp) or subscription deliveries (_sns); and the eight seller-funding columns, which break revenue_penetration and signup conversion out by how much of the discount you fund (0%, 5%, 10%, 5%-plus). time_interval_start_date and time_interval_end_date are what tell the two kinds of row apart.

Those windows are not all the same length. Amazon dates the seller-funding bands, signup conversion, the three revenue_from_* lifecycle columns and the subscriber/non-subscriber averages over the trailing 12 months for a seller, and lifetime value over the trailing 24 — its own example response answers a single request with a 12-month first row and a second row, carrying only the seven life_time_value columns, over a 24-month interval. grain on this page reads day because that is the closest single term for the operating measures; it is not a description of the whole response, and reading the file as one row per day will lose the rest.

Two comparison pairs sit in the middle: subscriber_average_revenue against non_subscriber_average_revenue, and subscriber_average_reorders against non_subscriber_average_reorders. Amazon dates all four over the trailing 12 months for a seller — six months for vendors on the revenue pair — so they do not move with the interval you asked for either. Three revenue_from_* columns split subscription revenue by where the subscription is in its life — multiple deliveries, active after one, cancelled after one. Amazon states all three over the trailing 12 months whatever interval you asked for, so they are not a split of the total_subscriptions_revenue sitting on the same row. The 12-month window is Amazon's own; whether the three sum to that 12-month subscription total is a different question, and one Amazon does not answer — check it on your own file.

Every money column is in currency_code, which follows the marketplace and is never converted.

How to get it

Through the Selling Partner API, this comes from the Replenishment API (version 2022-11-07), operation getSellingPartnerMetrics. It is a synchronous endpoint, not a report type: there is no createReport and nothing to poll. You POST a JSON body naming the marketplace, the interval and PERFORMANCE metrics, and the answer comes back in the same call, unpaginated. Because the client has to be built against the marketplace being requested — that is what selects the regional endpoint — it is one call per marketplace: an account selling in several has to make the request once for each.

The body may narrow the request to a list of asins or skus, or name neither and stay account-wide, which is what this page describes. Here is the trap: the response carries no ASIN or SKU whether or not you filtered. A filtered response is shaped exactly like an account-wide one, so a pipeline that lands both on the same day will overwrite the account total with a partial one and have no way to tell afterwards. If you filter, record the filter yourself.

Two things this report will not do. It only answers PERFORMANCE metrics — forecast measures are a separate request, and a table mixing actuals and forecasts under a flag is how someone ends up summing both. And it does not replace the old flat files by name: Amazon removed GET_FBA_SNS_PERFORMANCE_DATA and GET_FBA_SNS_FORECAST_DATA from the Reports API on 11 December 2025 and named this API the replacement, so requests for those report types now end cancelled or return a header and nothing else.

In Seller Central, the Subscribe & Save page is where you manage subscription products and discounts and review the program's metrics: hover over Growth in the main menu, click Explore Programs, then Increase conversion, and choose the Subscribe & Save card. The column set on this page is the API's, and that page does not export these rows in this shape.

Amazon publishes no refresh statement for this endpoint. The response covers whatever interval was requested, and recent days are restated after the fact, so a day already loaded can still change.

Sample rows

Illustrative values, not data from a real account. Shown to give the shape of the file.

time_interval_start_datecurrency_codeactive_subscriptionsshipped_subscription_unitstotal_subscriptions_revenuelost_revenue_due_to_oosrevenue_penetrationshare_of_coupon_subscriptions
2026-09-14USD12401864650.00125.0012.48.1
2026-09-15USD12521744350.000.0012.18.0
2026-09-16USD12612055125.0075.0012.98.3
2026-09-17USD12751924800.0050.0012.68.2

Field reference

ColumnTypeDescription
time_interval_start_datetimestamp_msThe start of the interval the row covers. On the daily measures this is the day you asked for. On the cohort measures — retention, lifetime value, the seller-funding bands — Amazon states each on its own row over its own trailing window, so the start sits further back.
time_interval_end_datetimestamp_msThe end of the interval the row covers. The distance between this and time_interval_start_date is how you tell a day row from a trailing-window cohort row.
currency_codestringThe currency every money column in the row is denominated in. The report is one call per marketplace, so this follows the marketplace and is never converted.
active_subscriptionsint64Subscribe & Save subscriptions active in the interval, across the whole account unless the request was narrowed to particular ASINs or SKUs. A count, not a sum over offers.
shipped_subscription_unitsint64Units shipped against subscriptions in the interval.
total_subscriptions_revenuedecimalRevenue from subscription shipments in the interval, in currency_code.
lost_revenue_due_to_oosdecimalRevenue from subscription deliveries that could not be fulfilled because the item was out of stock — what the stock-out cost you, in currency_code.
not_delivered_due_to_oosfloat64Deliveries missed because the item was out of stock. Amazon documents it as the percentage of items not shipped out of total shipped units, bounded 0–100 — a rate, not a unit count. Read it beside lost_revenue_due_to_oos.
revenue_penetrationfloat64The share of your revenue that came through Subscribe & Save, as a percentage on a 0–100 scale. The headline figure for how much the program matters to the account.
coupons_revenue_penetrationfloat64The coupon-driven counterpart of revenue_penetration: the percentage of revenue from ASINs carrying a coupon, on the same 0–100 scale.
share_of_coupon_subscriptionsfloat64The percentage of new subscriptions that came from coupons, on a 0–100 scale. High values mean the subscriber base is discount-acquired.
subscriber_average_revenuedecimalAverage revenue per subscribing customer. Amazon dates it over the trailing 12 months for sellers (6 months for vendors), not over the interval you asked for. Pairs with non_subscriber_average_revenue.
subscriber_average_reordersfloat64Average number of reorders per subscribing customer over the trailing 12 months, again not over the interval you asked for. Pairs with non_subscriber_average_reorders.
non_subscriber_average_revenuedecimalAverage revenue per customer who bought your products without subscribing, over the same trailing 12 months for sellers (6 months for vendors). The comparison that shows what a subscriber is worth over a one-time buyer.
non_subscriber_average_reordersfloat64Average number of reorders per non-subscribing customer over the trailing 12 months.
revenue_from_subscriptions_with_multiple_deliveriesdecimalSubscription revenue from subscriptions that have gone on to a second delivery or more — the part of the base that has actually stuck.
revenue_from_active_subscriptions_with_single_deliverydecimalSubscription revenue from subscriptions still active but with only one delivery so far — new, not yet proven.
revenue_from_cancelled_subscriptions_after_single_deliverydecimalSubscription revenue from subscriptions cancelled after their first delivery — the one-and-done sign-ups, often the coupon hunters.
subscriber_retention_for_30_daysfloat64The percentage of subscriptions retained 30 days after they were created, on a 0–100 scale. A cohort measure Amazon states over its own trailing window, not per day: present in the raw JSON, null in a day-partitioned table.
subscriber_retention_for_90_daysfloat64The percentage of subscriptions retained 90 days after they were created. Same 0–100 scale and the same trailing-window caveat as the 30-day figure.
revenue_penetration_for_0_percent_seller_fundingfloat64Revenue penetration on offers where the seller funds none of the Subscribe & Save discount, over the trailing 12 months. Every seller-funding column is a percentage on a 0–100 scale, and a trailing-window cohort measure.
revenue_penetration_for_5_percent_seller_fundingfloat64Revenue penetration on offers where the seller funds 5% of the discount.
revenue_penetration_for_10_percent_seller_fundingfloat64Revenue penetration on offers where the seller funds 10% of the discount.
revenue_penetration_for_5_plus_percent_seller_fundingfloat64Revenue penetration on offers where the seller funds 5% or more. Amazon's reference marks this column vendor-only and the 5% and 10% bands seller-only, so it is not a fourth part of a seller's split, and the reference's own example response returns 0%, 5% and 10% with no 5%-plus. The column is still present on a seller's response; whether it simply arrives null there is not confirmed on a real file.
signup_conversion_for_0_percent_seller_fundingfloat64Signup conversion — the percentage of new orders over the trailing 12 months that became subscriptions — on offers with no seller funding. On a 0–100 scale, like the other bands.
signup_conversion_for_5_percent_seller_fundingfloat64Signup conversion on offers where the seller funds 5% of the discount.
signup_conversion_for_10_percent_seller_fundingfloat64Signup conversion on offers where the seller funds 10% of the discount.
signup_conversion_for_5_plus_percent_seller_fundingfloat64Signup conversion on offers where the seller funds 5% or more. Vendor-only in Amazon's reference, the same way the 5% and 10% bands are marked seller-only.
non_subscriber_life_time_value_from_otpdecimalLifetime value of customers who never subscribed, all of it from one-time purchases (OTP). The baseline the subscriber segments are compared against. Every life_time_value column is total customer spend over the trailing 24 months — the longest window in the file, and the reason Amazon puts these seven on a row of their own.
lost_subscriber_life_time_value_from_otpdecimalLifetime value of customers who subscribed and then left, counting only their one-time purchases.
lost_subscriber_life_time_value_from_snsdecimalLifetime value of lost subscribers, counting only their Subscribe & Save deliveries.
growing_subscriber_life_time_value_from_otpdecimalLifetime value of the growing subscriber segment, counting only their one-time purchases.
growing_subscriber_life_time_value_from_snsdecimalLifetime value of the growing subscriber segment, counting only their Subscribe & Save deliveries.
established_subscriber_life_time_value_from_otpdecimalLifetime value of the established subscriber segment, counting only their one-time purchases.
established_subscriber_life_time_value_from_snsdecimalLifetime value of the established subscriber segment, counting only their Subscribe & Save deliveries. Amazon splits every subscriber segment this way: what they bought outright versus what they bought on subscription.

Use cases

Knowing how much of the business is on subscription. revenue_penetration is the one number that says whether Subscribe & Save is a rounding error or a channel. Trend it with active_subscriptions and shipped_subscription_units and you can see whether the base is growing or just churning at a constant size.

Putting a price on stock-outs. lost_revenue_due_to_oos and not_delivered_due_to_oos show what running out cost the subscription base specifically — deliveries Amazon could not make and the revenue that went with them. A subscription skipped for stock is a subscription at risk of cancelling, so this is the argument for protecting inventory on subscribed ASINs before anything else.

Choosing a funding tier. The eight seller-funding columns are the only place Amazon tells you what funding buys. If signup_conversion_for_10_percent_seller_funding is barely above _5_percent_ and revenue_penetration moves the same way, the extra five points are margin given away.

Measuring whether subscribers stick. subscriber_retention_for_30_days and _90_days, read beside the three revenue_from_* lifecycle columns, separate a base that reorders from one that signs up, takes the first-order discount and cancels. revenue_from_cancelled_subscriptions_after_single_delivery beside a high share_of_coupon_subscriptions is the classic shape of a coupon-driven base.

Making the case for subscribers over one-time buyers. The subscriber_average_ versus non_subscriber_average_ pairs, and the seven life_time_value columns, give you the same customer valued as a subscriber and as a one-time purchaser — the number to put against the discount you fund.

Limitations and gotchas

Most of the interesting columns are not daily. Retention, lifetime value and the seller-funding bands each come on their own row over their own trailing window, whatever grain you asked for. Such a row cannot be partitioned by day, so in a day-partitioned table those columns are null on every day row; the values exist only in the raw JSON response. If you want them in a table, that table has to be keyed by the interval, not by its start date.

A filtered pull is indistinguishable from an unfiltered one. The response has no ASIN or SKU column even when the request named them. Land a filtered response on a day that already holds the account-wide one and the account-wide numbers are gone; batch several filtered requests onto one day and you have several mutually indistinguishable aggregates. Re-running the day unfiltered is what restores it.

Recent days get restated. Amazon revises recent days late enough that re-requesting the trailing 30 days is the only way to keep a table honest. A pipeline that writes each day once will drift.

One marketplace per call, one currency per row. A multi-marketplace account produces several files, each in its own currency_code. Summing total_subscriptions_revenue across them without grouping on the currency adds euros to dollars.

Two metric groups may be US-only. The release note that introduced the lifetime-value and signup-conversion metrics on 22 December 2025 says they are only supported in the Amazon US store, while the operation's own MarketplaceId schema lists all nine seller marketplaces with no such carve-out and the field schema does not repeat the restriction. Amazon has not reconciled the two, so treat the seven life_time_value columns and the four signup_conversion_* columns as US figures until a non-US pull shows otherwise; a response from another marketplace is what settles whether they come back null there.

Nothing here is per ASIN. For the same measures by offer, use listOfferMetrics. For the offer's configuration — eligibility, price, who funds which discount, the health of upcoming deliveries — use listOffers. This report will not tell you which product is losing subscribers.

No forecasts. This report carries only PERFORMANCE metrics. Forecasts are a separate request — timePeriodType: FORECAST, sellers only — and it answers with just two measures, TOTAL_SUBSCRIPTIONS_REVENUE and SHIPPED_SUBSCRIPTION_UNITS, over the next 30, 60 or 90 days. Every other measure in this API is documented as PERFORMANCE-only, so no forecast figure can arrive in the response this report is built from.

The four funding bands are not one set. Amazon's reference marks the 5% and 10% bands as applicable to sellers only and the 5_plus_percent band — 5% and above — as applicable to vendors only. A seller's split is therefore 0%, 5% and 10% — the reference's own example response returns exactly those three and no 5%-plus — and the two 5_plus columns still arrive in a seller's response because the same schema serves both party types. Whether they simply arrive null on a seller pull is not something Amazon states, so confirm it on your own file before reading anything into them. Either way, adding all four together mixes two different splits of the same base.

Not the AWD replenishment report. The Amazon Warehousing and Distribution "replenishment" orders report describes stock moving from AWD into FBA and shares nothing with this but the word.

FAQ

Is this the same as the Subscribe & Save performance report from the Reports API?

No, and that report no longer exists. Amazon removed GET_FBA_SNS_PERFORMANCE_DATA and GET_FBA_SNS_FORECAST_DATA on 11 December 2025 and named the Replenishment API as the replacement. This page documents the account-level metrics from that API.

Why are the retention and lifetime value columns empty in my table?

Because Amazon returns those measures on their own rows over their own trailing windows, not for the day you requested. A table partitioned by day cannot hold such a row, so those columns are null there. The values are in the raw JSON response, and a table keyed by the interval would carry them.

Can I get these metrics per ASIN or per SKU?

Not from this report. The response never carries an ASIN or SKU, even when the request was narrowed to some. The same measures per offer come from listOfferMetrics, which is a separate report.

Does this report include Subscribe & Save forecasts?

No. This report carries only PERFORMANCE metrics. Forecast measures come from a separate FORECAST request, so actuals and forecasts are never summed together here.

Is this report only for the US marketplace?

No. Amazon's reference lists the supported marketplaces for sellers as the United States, Canada, Spain, the United Kingdom, France, Italy, India, Germany and Japan; vendors add Brazil, Australia, Mexico, the United Arab Emirates and the Netherlands. Each marketplace is a separate call that comes back in that marketplace's own currency. Two groups of columns are narrower than the API itself: Amazon's December 2025 release note says the lifetime-value and signup-conversion metrics are supported only in the US store.

Sources

Every researched claim on this page, and the Amazon or Walmart page it came from.

  • marketplaces — developer-docs.amazon.com/getsellingpartnermetrics — the `MarketplaceId` schema states that the supported marketplaces for both sellers and vendors are US, CA, ES, UK, FR, IT, IN, DE and JP, and that BR, AU, MX, AE and NL are supported for vendors only. This page is the seller view, so it carries the nine.
  • marketplaces — developer-docs.amazon.com/sp-api-release-notes — the December 22, 2025 entry adds SUBSCRIBER_LIFETIME_VALUE_BY_CUSTOMER_SEGMENT and SIGNUP_CONVERSION_BY_SELLER_FUNDING to getSellingPartnerMetrics and states that these new metrics are only supported in the Amazon US store.
  • history_window — developer-docs.amazon.com/getsellingpartnermetrics — the `TimeInterval` schema states that only data for the trailing 2 years is supported, and that for `getSellingPartnerMetrics` with DAY aggregation frequency the interval cannot exceed 31 days.
  • history_window — developer-docs.amazon.com/sp-api-release-notes — the May 27, 2026 entry adds DAY as an aggregation frequency for retrieving day-level metrics for intervals of up to 31 days.
  • latency — developer-docs.amazon.com/getsellingpartnermetrics — the only data-availability statement in the reference is on `TimeInterval.endDate`, that the end date may be adjusted to a lower value based on the data available in Amazon's system. No publication lag is documented anywhere in the Replenishment API docs.
  • fields (percent scale) — developer-docs.amazon.com/getsellingpartnermetrics — every rate in `GetSellingPartnerMetricsResponseMetric` is described as a percentage and bounded `minimum: 0, maximum: 100`, so these columns are on a 0–100 scale, not fractions.
  • fields (seller-funding bands) — developer-docs.amazon.com/getsellingpartnermetrics — `revenuePenetrationFor5PercentSellerFunding` and `revenuePenetrationFor10PercentSellerFunding` are marked applicable only for sellers, `revenuePenetrationFor5PlusPercentSellerFunding` applicable only for vendors, and the three signup-conversion bands carry the same split.
  • fields (lifecycle split) — developer-docs.amazon.com/getsellingpartnermetrics — the three `revenueFrom*` properties are each documented as covering the past 12 months, unlike `totalSubscriptionsRevenue`, which covers the requested period.
  • forecast — developer-docs.amazon.com/get-seller-replenishment-metrics — forecast data comes from `timePeriodType: FORECAST` for the next 30, 60 or 90 days; only TOTAL_SUBSCRIPTIONS_REVENUE and SHIPPED_SUBSCRIPTION_UNITS are supported as forecast metrics, and forecast metrics are available for sellers only.
  • requires — sell.amazon.com/subscribe-and-save — to participate in Subscribe & Save your products must be part of a brand enrolled in Amazon Brand Registry and you must be a Brand Representative; FBA is stated as the condition for auto-enrolment, with self-fulfilled products enrolled on request to Seller Support.
  • requires (Professional plan not added) — sell.amazon.com/subscribe-and-save — the same page only *recommends* a Professional selling plan ("We recommend using a Professional selling plan so you can take advantage of a full range of services"), and states no plan requirement for Subscribe & Save, so `professional-plan` is not in `requires`.
  • grain — developer-docs.amazon.com/getsellingpartnermetrics — the example response returns two rows for one request: the operating and 12-month measures on the first row over a 12-month interval, and the seven lifetime-value measures alone on a second row over a 24-month interval. `SUBSCRIBER_LIFETIME_VALUE_BY_CUSTOMER_SEGMENT` is documented as total customer spend over the past 24 months.
  • fields (subscriber/non-subscriber averages) — developer-docs.amazon.com/getsellingpartnermetrics — `subscriberAverageRevenue` and `nonSubscriberAverageRevenue` are each documented "over a period of past 12 months for sellers and 6 months for vendors", and both reorder columns over the past 12 months — not over the interval requested.
  • fields (5%-plus bands) — developer-docs.amazon.com/getsellingpartnermetrics — the example response returns the 0%, 5% and 10% revenue-penetration and signup-conversion bands and no 5%-plus column at all, consistent with the vendor-only marking on the two `5PlusPercent` properties.
  • how-to-get-it (console path) — sell.amazon.com/subscribe-and-save — the Subscribe & Save page is reached by hovering over Growth in the Seller Central main menu, clicking Explore Programs, then Increase conversion, then selecting the Subscribe & Save card; it is where you manage subscription products and discounts and review metrics.
  • how-to-get-it (retired flat files) — developer-docs.amazon.com/sp-api-release-notes — the deprecation notices list GET_FBA_SNS_FORECAST_DATA and GET_FBA_SNS_PERFORMANCE_DATA for removal on December 11, 2025.