Skip to main content
PATCH
/
api
/
v3
/
admin
/
price_lists
/
{id}
Spree Admin SDK
import { createAdminClient } from '@spree/admin-sdk'

const client = createAdminClient({
  baseUrl: 'https://your-store.com',
  secretKey: 'sk_xxx',
})

const priceList = await client.priceLists.update('pl_xxx', {
  name: 'Wholesale (Q3)',
})
{
  "id": "pl_UkLWZg9DAJ",
  "name": "Wholesale (Q3)",
  "description": null,
  "status": "draft",
  "position": 1,
  "match_policy": "all",
  "starts_at": null,
  "ends_at": null,
  "deleted_at": null,
  "created_at": "2026-06-17T13:37:33.776Z",
  "updated_at": "2026-06-17T13:37:34.072Z",
  "currently_active": false,
  "products_count": 0,
  "prices_count": 0,
  "product_ids": []
}

Authorizations

x-spree-api-key
string
header
required

Secret API key for admin access

Authorization
string
header
required

JWT token for admin user authentication

Headers

x-spree-api-key
string
required
Authorization
string
required

Path Parameters

id
string
required

Body

application/json
name
string
description
string | null
starts_at
string | null
ends_at
string | null
match_policy
enum<string>
Available options:
all,
any
position
integer
product_ids
string[]

Prefixed product ids — reconciles list membership (adds + removes).

Example:
["prod_aBc123"]
rules
object[]
prices
object[]

Individual price overrides (the spreadsheet payload). Each row updates by id if shipped, otherwise upserts on the unique key (variant_id, currency, price_list_id).

Response

200 - application/json

price list updated with nested rules

id
string
required
name
string
required
description
string | null
required
status
string
required
position
number
required
match_policy
string
required
starts_at
string | null
required
ends_at
string | null
required
deleted_at
string | null
required
created_at
string
required
updated_at
string
required
currently_active
boolean
required
products_count
number
required
prices_count
number
required
product_ids
string[]
required
price_rules
object[]