--- sidebar_position: 5 --- # Read Current Prices import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; This guide shows you how to use `BatchGetPricing` to fetch the current price, MSRP, and active status for a set of SKUs — for example, to reconcile noon's live prices against your own system. By the end, you'll have a repeatable read that flags every SKU where noon's stored pricing differs from what you expect. ## Prerequisites - Authentication set up — see [Getting Credentials][getting-credentials] and [Authenticating Your Requests][authenticating-requests] - At least one SKU with pricing already configured on noon — see [Set Prices][pricing-set-prices] ## Step 1 — Request pricing for your SKUs `BatchGetPricing` (`POST /pricing/v1/pricing/get`) returns the current price, MSRP, and active status for each `partner_sku` + `country_code` pair you send. Batch all the SKUs you want to reconcile into a single request. Each pair is resolved independently, so the same `partner_sku` can appear once per country. Valid values for `country_code`: `"ae"`, `"sa"`, `"eg"`. ```python # get_authenticated_session() is provided in docs/snippets/auth.mdx — see Authenticating Your Requests session = get_authenticated_session() response = session.post( "https://noon-api-gateway.noon.partners/pricing/v1/pricing/get", json={ "items": [ {"partner_sku": "MY-SKU-001", "country_code": "ae"}, {"partner_sku": "MY-SKU-002", "country_code": "ae"}, {"partner_sku": "MY-SKU-001", "country_code": "sa"}, ] }, headers={ "Content-Type": "application/json", "User-Agent": "MyPricingSync/1.0.0", }, timeout=30, ) response.raise_for_status() result = response.json() ``` ```javascript // getAuthenticatedClient() is provided in docs/snippets/auth.mdx — see Authenticating Your Requests const client = await getAuthenticatedClient(); const response = await client.post( "https://noon-api-gateway.noon.partners/pricing/v1/pricing/get", { items: [ { partner_sku: "MY-SKU-001", country_code: "ae" }, { partner_sku: "MY-SKU-002", country_code: "ae" }, { partner_sku: "MY-SKU-001", country_code: "sa" }, ], }, { headers: { "Content-Type": "application/json", "User-Agent": "MyPricingSync/1.0.0", }, } ); const result = response.data; ``` **Response:** ```json { "items": [ { "partner_sku": "MY-SKU-001", "country_code": "ae", "status": { "status_id": 0, "status_code": "OK", "message": "" }, "price": 149.99, "msrp": 199.99, "is_active": true }, { "partner_sku": "MY-SKU-002", "country_code": "ae", "status": { "status_id": 0, "status_code": "OK", "message": "" }, "price": 89.00, "msrp": null, "is_active": true }, { "partner_sku": "MY-SKU-001", "country_code": "sa", "status": { "status_id": 5, "status_code": "NOT_FOUND", "message": "Pricing not configured for this SKU and country" }, "price": null, "msrp": null, "is_active": null } ] } ``` You'll know this worked when the response contains one entry in `items` for every pair you sent, each carrying a `status`. Key fields on each entry: - `price` — the current selling price on noon. `null` if no pricing record exists. - `msrp` — the crossed-out reference price shown on the listing. `null` if not set. - `is_active` — whether the SKU is currently sellable in that country. `null` if no pricing record exists. - `status` — the per-item result. See Step 2. | Condition | What it means | What to do | |---|---|---| | Non-2xx response | The whole request failed — authentication, authorization, or a malformed payload | Check `rpcStatus.message` on the error body and retry once corrected | | Empty or missing `items` in your request | `items` is required | Send at least one `{ partner_sku, country_code }` pair | ## Step 2 — Check each item's status The HTTP status covers only the request as a whole. Each entry in `items` carries its own `status`, and a single 200 response can return a mix of successful and failed items. Always inspect every entry's `status` before trusting its `price`, `msrp`, or `is_active`. The `status` object (`rpcStatus`) has these fields: - `status_id` — numeric code; `0` is success. - `status_code` — string code; `OK` is success. - `message` — human-readable detail, populated on failure. A `status_code` of `OK` (with `status_id: 0`) means that item succeeded and its `price`, `msrp`, and `is_active` are authoritative. **Any other `status_code` means that item failed** — its `price`, `msrp`, and `is_active` will be `null` and must not be used. In the example above, `MY-SKU-001` in SA returned `NOT_FOUND` because noon has no pricing record for that SKU and country, while the other two items succeeded. When reconciling in bulk, branch on `status_code`: treat `OK` items as comparable data, and route every non-`OK` item to a separate exception list keyed off `partner_sku` and `country_code`. ## Step 3 — Reconcile against your system Compare each successful item against your own records: - **Price or MSRP mismatch** — noon's `price` / `msrp` differs from your source of truth. - **Active-status mismatch** — `is_active` is `true` but you intend the SKU to be off-sale, or vice versa. - **Missing record** — a non-`OK` status (such as `NOT_FOUND`) means noon has no pricing for that SKU and country at all. For any discrepancy, the fix is a write back to noon. `BatchGetPricing` is read-only; to correct price, MSRP, or active status — or to create a missing record — use `BatchUpsertPricing`. See [Set Prices][pricing-set-prices]. After writing corrections, re-run this guide from Step 1 to confirm noon now matches your system. ## Next steps - [Set Prices][pricing-set-prices] — create or update price, MSRP, and active status to fix any discrepancy you found - [Activate a Product][pricing-activate-product] — make a SKU sellable once its pricing is correct - [Go Live with Pricing][pricing-go-live] — the full pricing lifecycle from first upload to live - [BatchGetPricing Reference][get-pricing-noon] — full request and response schema for this call