Skip to main content
View as Markdown

Step 2: Set Up Products and Inventory

This guide walks you through listing your products and pushing stock and pricing data so your items are ready to sell. By the end, your SKUs will have live stock quantities and prices in Seller Lab.

Prerequisites

Step 1 — Create Your Product Catalog

Create products in one of two ways:

  • Manually — create your SKUs in Seller Lab by following the Product Listing Guide
  • Via API — use the Content API's UpsertProduct endpoint to submit products programmatically; see Submit a Product

You'll know this worked when your PSKUs appear in Seller Lab with a confirmed SKU ID.


Step 2 — Push Stock Quantities

Call UpdateStock (POST /stock/v1/stock-update) to set available quantities for each SKU in your warehouse. Send one item per SKU per warehouse; you can batch multiple SKUs in a single request.

session = get_authenticated_session()

response = session.post(
"https://noon-api-gateway.noon.partners/stock/v1/stock-update",
json={
"items": [
{
"warehouse_code": "WH-NOON-001",
"partner_sku": "MY-SKU-001",
"qty": 50,
"processing_time": "1d"
}
]
},
headers={"User-Agent": "MyApp/1.0.0"},
timeout=30,
)
response.raise_for_status()
result = response.json()

Key request fields:

FieldTypeDescription
warehouse_codestringYour integration warehouse code
partner_skustringYour internal SKU identifier
qtyintegerAvailable units. Set to 0 to mark as out of stock
processing_timestringPick-and-pack time, e.g. "1d" for one day

Response:

<!-- from: v1BatchUpsertStockResponse -->
{
"items": [
{
"warehouse_code": "WH-NOON-001",
"partner_sku": "MY-SKU-001",
"status": {
"status_code": "OK",
"message": ""
}
}
]
}

You'll know this worked when every item in the response has "status_code": "OK". This API can return errors inside a 200 response — check every item's status.status_code even when the HTTP status is 200.

ErrorWhat it meansWhat to do
Item-level non-OK status_codeThat SKU failed to updateCheck status.message for the reason and retry that item
HTTP 401Session expiredRe-authenticate and retry

For the full schema, see UpdateStock and GetStock.


Step 3 — Set Prices

Call BatchUpsertPricing (POST /pricing/v1/pricing/upsert) to set the price for each SKU per country. For the full schema, see BatchUpsertPricing.

country_code accepts: "ae" (UAE), "sa" (Saudi Arabia), "eg" (Egypt). Set one entry per SKU per country.

session = get_authenticated_session()

response = session.post(
"https://noon-api-gateway.noon.partners/pricing/v1/pricing/upsert",
json={
"items": [
{
"partner_sku": "MY-SKU-001",
"country_code": "ae",
"price": 149.99,
"msrp": 179.99,
"is_active": True
}
]
},
headers={"User-Agent": "MyApp/1.0.0"},
timeout=30,
)
response.raise_for_status()
result = response.json()

Key request fields:

FieldTypenoonnamshiDescription
partner_skustringYour internal SKU identifier
country_codestringTarget market: "ae", "sa", or "eg"
pricenumberSelling price in local currency
msrpnumberCrossed-out price shown on the listing page
is_activebooleanSet to false to delist the SKU without zeroing stock

Response:

<!-- from: v1BatchUpsertPricingResponse -->
{
"items": [
{
"partner_sku": "MY-SKU-001",
"country_code": "ae",
"status": {
"status_code": "OK",
"message": ""
}
}
]
}

You'll know this worked when every item in the response has "status_code": "OK". Check each item — this API can return errors inside a 200 response.

For the noon pricing schema, see BatchUpsertPricing and BatchGetPricing.


Keeping Stock and Pricing Current

Your integration must maintain accurate stock and pricing throughout the order lifecycle:

  • Mark out of stock — set qty: 0 in UpdateStock when a SKU runs out. noon stops routing new orders for that SKU immediately.
  • Restock — push a new qty value when inventory is replenished.
  • Delist a SKU (noon) — set is_active: false in BatchUpsertPricing to remove the offer without clearing stock. Set back to true to relist.
  • Delist a SKU (namshi) — set qty: 0 to stop sales for that SKU.
warning

Unacknowledged stock that runs out after an order is placed causes order Kills. Keep your stock sync frequent enough to avoid overselling.


Next Steps