All posts

SKUmargin shows real net profit per SKU on Noon, after fees, COGS, returns, and ads.

Start free trial
Operations

How to Connect the Noon Seller API (partners.noon.com)

By James Follis #noon #noonseller #noonapi #partnersnoon #sellerlab #noonintegration #noonexports #gccsellers #ecommerce #automation

If you sell on Noon and you are still downloading reports by hand every morning, this is the guide that ends that. Noon gives every seller a Partner API, managed at access.noon.partners. It is the same account you use for Seller Lab, it takes about ten minutes to set up, and once a tool is connected to it the settlement report, the catalogue, the sales-by-day report and your FBN stock arrive on their own.

This walkthrough covers the setup steps, the one error almost everyone hits, exactly which exports the API exposes (with the category codes, because they are not documented anywhere seller-friendly), and what a sensible integration does with them.

What the Partner API is, in plain terms

Noon's seller-facing systems sit behind one login. Seller Lab is the web interface. access.noon.partners is the same platform's developer face, where you create an API user (Noon calls it a service account), a machine identity that can request the same exports you would otherwise click through in Seller Lab. It is not a separate product and there is no fee for it.

An API user is created inside your partner account and scoped to a project. The project is Noon's word for the seller entity and its contracts; when you sell in more than one country each country is a contract under that project. The credentials Noon generates identify the key, carry a secret, and name the project code they belong to. That last part is what makes the common error below make sense.

Step by step

  1. Sign in at access.noon.partners with the account you use for Seller Lab. If you have a team, use the owner account, since only a user who can manage users can give the API user a role.
  2. In the left sidebar open API Users.
  3. Click Add Service Account. Give it a display name you will recognise in a year (the name of the tool you are connecting is the obvious choice) and a username. Noon allows one service account per project, so if the button is greyed out, click the existing account's email instead.
  4. On the Manage Service Account page click Add new above the keys table, then Regenerate New Key. The key title, expiry date and IP allowlist are optional.
  5. Noon generates a JSON credentials file and prompts you to download it. You get this download once. Save it somewhere safe. If you lose it, generate a new key the same way and disable the old one.
  6. Give the API user a role. Keys have no scopes of their own; they get every permission from the role their user holds. Open User Access, find the user ending in idp.noon.partners, click the three dots, then Manage Role. Add Project Owner (under Full Account Access) and click Update. For narrower access, add roles from the Finance, Noon Catalog and Noon Store namespaces instead.
  7. Upload the JSON file into the tool you are connecting. In SKUmargin that is Settings, then Stores, add or edit a store, and drop the file into the "Connect via Noon API" block, then press Test connection.

A successful test should tell you which seller identity Noon sees for the key. If the identity is not yours, you are connecting a file from the wrong account.

The error you will probably see once

The message is: you don't have access over this project.

Noon returns it as a 403 on every export request, and it looks exactly like an empty account, so tools that do not surface the error just show nothing. It means the API user is asking for a project code it has no rights over. In practice that happens for one of two reasons:

  • The JSON file was generated under a different partner account than the one that owns the store. This is common with agencies, family businesses and anyone who has more than one Noon login.
  • The API user has no role on the project yet. This is the most common cause: login works, but every data call is refused.

For the second case, open User Access, give the API user the Project Owner role (step 6) and test again; there is no need to touch the JSON. For the first, sign in with the account that owns the seller you want to connect, create the service account and key there, download the new JSON and upload it again. Regenerating a key that belongs to the wrong project does not help; it is the project, not the secret, that is wrong.

What the API can actually export

This is the part nobody writes down. Noon's export system offers a fixed list of report categories, and only those codes work; anything else fails at the create-export step in a way that also looks like an empty file. Read off a live seller account on 30 August 2026, the list is:

Category code What it is Required parameters
noon_financeweb_transactionviewreportonitemlevel The transaction view at item level. Every sale, fee, refund, subsidy and payout row. This is the settlement report. from_date, to_date
noon_noonoms_ordersexport Orders as placed, including ones not yet settled. from_date, to_date (optional: is_fulfilled_by_noon)
noon_catalog_globalcatalogexport Your catalogue: SKUs, titles, barcodes, status. country, noon_status
noon_catalog_reports_productviewsandsalesdata Visits, units and revenue per SKU per day. The only per-day revenue source between a sale and its statement. country, from_date, to_date, lang
fbn_inventoryv2_ledgerdetailedview Every FBN stock movement. none
fbn_inventoryv2_ledgersummaryview FBN stock summarised by location or time. none
fbn_inventoryv2_aging How long each FBN unit has been sitting, which is what storage fees follow. none
noon_catalog_content_contentrejections Listings Noon has rejected and why. none

Two things this table tells you. First, the settlement report and the orders export are separate. A sale shows up in the orders export on the day it is placed and in the transaction view as an "Order" row the same day, but its fees usually arrive later on "Order Update" rows, and the statement that pays it comes later still. Any integration has to hold both views and know which one is the money authority; when does Noon pay sellers explains the timing.

Second, there is no advertising export in this list. Noon Ad Manager (admanager.noon.partners) is a separate console. The money you spent on ads reaches the settlement report as "Statement Fee" rows titled Advertising Fee, and the campaign-level performance lives only in Ad Manager. A tool that shows you ads per SKU is reading both; Noon sponsored ads: ACOS, ROAS and what Noon bills covers how those two reconcile.

What a sensible integration does with them

The order matters, because the reports contradict each other in small ways if you read them naively.

  1. Settlement first, every couple of hours. Pull the transaction view for the last few weeks, not just since the last pull, because fees and refunds land on old orders. Key every line on its Reference Number so a re-pull never double counts.
  2. Catalogue second. It supplies titles, barcodes and the current listing price, which is what an unsettled order should be valued at until the statement says otherwise.
  3. Sales by day third. Revenue per SKU per day gives you the average price a SKU actually shipped at, which is a better estimate than the list price for an unsettled order on a SKU you repriced last week.
  4. FBN stock and aging. No parameters, so they are cheap to pull. Stock-outs and long-sitting units are the two things sellers most often complain their dashboard gets wrong, and both come from here.
  5. Never let the estimate outrank the statement. When a settlement line arrives for an order that was valued from the catalogue, the settlement wins, the estimate is discarded, and the record says so.

Every two hours is a sensible cadence. Noon's exports are generated asynchronously (you request one, wait, then download it), so pulling more often mostly queues requests without giving you newer data.

Security, briefly

The JSON file is a password. Whoever holds it can read your finances. Store it encrypted at rest, never paste it into a chat or a ticket, and if a tool ever shows you the secret back in the browser, that tool is doing it wrong. Rotate by generating a new key at access.noon.partners and disabling the old one, which stops the old file working immediately. SKUmargin encrypts credentials with AES-256-GCM before they touch the database and only decrypts them in memory for the outbound call; details are on the help page.

If you would rather not connect anything

Every report above is also available as a download in Seller Lab. The transaction view has a Download button on its own page under Payment and Fees; set the date range, wait for the export, and you have the same file the API returns. It works, and for a store doing a handful of orders a week it is enough. The API stops being optional at the point where you have more than a few SKUs and want the numbers to be current without someone remembering to fetch them.

Checklist before you press Test connection

  • Signed in to access.noon.partners with the account that owns the seller.
  • Service account created under API Users, with the Project Owner role assigned to its user on User Access.
  • JSON downloaded and saved somewhere that is backed up.
  • The tool shows your seller identity after the test, not somebody else's.
  • First settlement pull covers at least the last 30 days so fees on older orders are present.

Once that is done, the next question is what the numbers mean. Start with how to read your Noon settlement report, fee by fee, and if you want to see what an API-fed profit view looks like before connecting your own store, the live demo runs on a sample account.

See your real profit, per SKU, every day.

SKUmargin pulls your Noon orders, fees, and returns and shows the net profit each SKU is actually making.

  • Net profit per SKU after Noon commission, FBN/FBPI fees, returns, ads, and COGS.
  • Trends, monthly P&L, UAE/KSA/Egypt VAT report, low-margin email alerts.
  • Connect via Noon CSV upload or the Partner API. 30 days free, no card.
Start 30-day free trial