Skip to main content

Update Price Push Settings

PATCH 

/api/v2/sales-channels/:integrationInstance/prices/settings

Update the push cadence and price guardrails for an integration instance. Amazon instances may also set automated_pricing_rule_id (nullable string, e.g. 328182282407-COMPETITIVE_BUYBOX): every pushed offer is then attached to that Seller Central Automate Pricing rule, and the resolved floor/ceiling for each listing is published as minimum_seller_allowed_price / maximum_seller_allowed_price so Amazon's repricer moves the price only between SKU.io's guardrails. Rules are created in Seller Central; SP-API can only attach a SKU to an existing one. Other channels ignore the field.

Required scope: integrations:write

Grant this scope to your token under Settings → Developer → Personal Access Tokens.

Guardrails are applied to every price immediately before it is sent, on every path — scheduled, manual and repricing-driven.

Authentication: Requires Bearer token.

Fields:

  • cadence_minutes (required, integer): how often the scheduled push runs. One of 15, 30, 60, 180, 360, 720, 1440.
  • floor_type (required, string): none, amount or margin_pct.
  • floor_value (required unless floor_type is none, number): the floor amount, or the minimum margin percentage.
  • ceiling_type (required, string): none, amount or markup_pct.
  • ceiling_value (required unless ceiling_type is none, number): the ceiling amount, or the maximum markup percentage.
  • max_delta_pct (optional, number, 0-1000): refuse a price that moves more than this percentage from the last value sent. Omit or null to disable.
  • max_delta_action (required, string): skip to refuse only that listing, or block_run to stop the whole run before anything is sent.
  • require_dry_run_first (optional, boolean): require a preview before the first live push.

A margin floor cannot be verified without a landed cost, and a listing with no cost is blocked rather than sent. A margin floor of 100% or more is rejected as unsatisfiable.

Requires the integrations.update permission.

Pricing-level bounds. floor_type / ceiling_type also accept tier, which reads the bound from the product's price in the pricing level named by floor_tier_id / ceiling_tier_id (MAP and MSRP are the usual cases). A product with no price in that level simply has NO bound — it is not blocked, unlike a margin_pct rule on a product with no landed cost.

floor_action / ceiling_action choose what happens when a price violates the bound: adjust moves the price to the bound and transmits it, block refuses the listing. Omit them (or send null) to get the type's default — adjust for tier, block for amount and the percentage types. An adjusted price is reported as a pushed line whose detail names the bound that moved it, and the maximum-change limit is measured on the ADJUSTED figure.

Which price to send (the sequence). pricing_tier_ids is an ordered list of pricing level IDs, highest priority first. For each product the first level in the list that holds a price for it supplies the price sent; a product with no price at that level falls through to the next. A product no level prices is reported as not_priced and nothing is sent for it.

Ordering is by position only — it is never re-ordered by value, so a level cannot be skipped for being cheaper or dearer than another. Use floor_tier_id / ceiling_tier_id above for value-based limits such as MAP.

  • pricing_tier_ids (optional, array of integers, max 5): the ordered sequence. Each ID must exist and be distinct. Omit the key entirely to leave the saved sequence untouched — this endpoint is also the guardrails save, so an omitted key must not wipe a sequence. Send [] to clear it and fall back to the channel's single pricing level.
  • A calculated level (one derived from another) prices every product it can compute, so any level after it is unreachable; the save still succeeds, and the coverage endpoint reports which steps have become unreachable.

Fulfillment-channel lanes. fulfillment_pricing_tier_ids (optional, object) gives one fulfillment channel its own sequence, keyed by lane: {"MFN": [6]}. Each lane is an ordered list of up to 5 distinct pricing level IDs, checked before the channel sequence for the listings in that lane and falling through to pricing_tier_ids when no lane level prices the product. Only the lanes the channel supports are accepted — Amazon supports MFN (merchant-fulfilled listings; FBA listings always use the channel sequence) — and the supported lanes are listed by Get Price Sync Status. Send an empty array for a lane to remove it. Omit the key entirely to leave the saved lanes untouched. Every level across the channel sequence and every lane must share one currency.

Returns 422 for a lane the channel does not support, a level repeated within a lane, or a mix of currencies across the sequence and its lanes.

Request​

Responses​

OK

Response Headers
    Content-Type