- name
- noon-exports
- description
- Noon data exports — Sales report (per country), Transaction View (multi-contract CSV with status enum gotchas), Catalog Exports (Content / Pricing / Stock / Reports). Load when downloading sales, finance, transaction, or catalog data from noon.
- requires
- ["noon-shared"]
# Noon — Data Exports
> **PREREQUISITE:** Read `../noon-shared/SKILL.md` for login, page
> structure, and the per-store download directory.
Three export surfaces, each with its own quirks: Sales (per
country), Transaction View (multi-contract, long polling, status
enum), Catalog Exports (typed templates).
## 1. Sales Export (Per Country)
**URL**: `https://reports.noon.partners/en/sales/?project=PRJ{project_id}`
### Country Switching
Use the **"My Stores" dropdown at bottom-left**, NOT the "Destination"
filter in the toolbar. Each store shows a flag icon.
### Date Range for Last Month
```bash
browser-use input <start-date> "01 Mar 2026"
browser-use input <end-date> "31 Mar 2026"
# Calendar popup opens; click the end date cell to confirm:
browser-use state # find td title="2026-03-31"
browser-use click <date-cell>
```
URL reflects dates: `?from_date=2026-03-01&to_date=2026-03-31`.
### Export Flow (Verified)
1. Click Export button → modal appears
2. Modal shows previous export file with download link (if any)
3. Click "New export" to regenerate
4. Wait ~10-30s for "Exporting" spinner to finish
5. Download link appears with filename:
`sales_export_{date}_{time}_{project}_{country}_{seq}.csv`
6. Click download link
7. Close modal
### Both Countries
After the first country's export, close modal, switch "My Stores" to the next country, repeat.
## 2. Transaction View Export
**URL**: `https://noon-payments.noon.partners/en/transaction-view?project=PRJ{project_id}`
Left nav: Statements, SOA, Transaction View, Invoices & Creditnotes,
Legacy Exports.
### Critical facts (read before acting)
1. **One unfiltered export covers every contract in the project.**
A single Transaction View export for a project that has multiple
country contracts produces **one CSV with rows for every
contract** — identifiable by the `Contract` / `Contract Title`
columns (e.g. `MPXXXXXXXXEG,Noon EG` and `MPXXXXXXXXKW,Noon
KW`). See "Transaction CSV Structure" below. **Do not run one
export per country** — run one, then split locally with pandas /
awk. To limit the export to a single country, filter the
Contracts dropdown to that country's contract *before* clicking
Download.
2. **Status enum is `Requested → Exporting → Processed`** (not
"Processing → Completed"). When the panel row reads `Processed`,
click the **Export** button on the right of that row — that is
what actually writes the CSV. The first Download click only
queues the export job.
3. **Exports can take several minutes**, occasionally >5. Do not
re-click Download while a previous export is still `Exporting` —
each click queues a *new* `EXP{…}` job that competes for the
same backend and usually extends the wait.
4. **Download location depends on the browser backend**, not on
noon. The file is not guaranteed to land in `~/Downloads`. See
"Finding the downloaded file" below.
5. **`No data` disables the Download button.** Date ranges with no
activity show a greyed-out button and no panel appears — that's
a no-op, not a bug. Skip that range.
### Country switching on Transaction View
The top-of-page **flag widget** (little arrow next to the country
flag) is the country switcher — not the Contracts dropdown. The
Contracts dropdown lists only contracts for the *currently selected
country*, so after switching flag the dropdown repopulates.
But since unfiltered Download already covers all contracts, you
usually don't need to switch country at all.
### Download flow
```bash
# 1. Navigate.
browser-use open "https://noon-payments.noon.partners/en/transaction-view?project=PRJ{project_id}"
sleep 2 && browser-use state
# 2. Set date range (Start / End date inputs). Confirm via state.
browser-use input <start-date-input> "YYYY-MM-DD"
browser-use input <end-date-input> "YYYY-MM-DD"
# Optional: filter Contracts dropdown to a single country's contract.
# 3. Click Download ONCE. NEVER re-click — each click queues a
# new export job on Noon's backend, backing up the queue and
# making every subsequent attempt take longer.
browser-use click <download-btn>
# 4. Poll for Processed status. Exports can take up to 35 min
# (data-heavy months are slower). Keep waiting — do NOT
# re-click Download, do NOT close the panel.
for i in $(seq 1 70); do
sleep 30
browser-use state | grep -q "Processed" && break
done
# 5. Click the Export button on the panel row (labelled "Export"
# with a download icon, right of the export code). This is the
# click that actually writes the file.
browser-use click <export-btn>
```
### API fallback (if page refreshes or panel disappears)
If the browser session disconnects or the page refreshes during
the long wait, do NOT click Download again — the export job is
still running on Noon's backend. Instead, query the status API
directly and download via curl:
```bash
# Poll the status API for the export code you recorded earlier.
browser-use eval "
var xhr = new XMLHttpRequest();
xhr.open('POST', '/_svc/mp-partner-impex-api/export/status', false);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify({exportCode: '<EXP_CODE>'}));
xhr.responseText;
"
# Response: {"export": {"status_code": "COMPLETE",
# "download_url": "https://storage.googleapis.com/..."}}
# Once status_code is COMPLETE, download via curl:
curl -sL -o transaction_view.csv "<download_url>"
```
This avoids re-triggering the export and lets you recover a
completed export even after a browser disconnect.
### Finding the downloaded file
Downloads go to `~/.vibe-seller/downloads/<store-slug>/`.
This is a stable per-store directory managed by the CDP proxy
(it overrides browser-use's random temp dirs).
File names for Transaction View exports start with
`noon_financeweb_transactionviewreportonitemlevelwithcontractselection`
and end with `.csv`. Repeat downloads get ` (1)`, ` (2)` suffixes —
always take the newest by `mtime`, then copy into the task
workspace (dropping the `(N)` suffix). See the amazon-reports
skill's "Download Behavior" section for the general pattern.
### Transaction CSV Structure
Header columns (in order):
```csv
Contract,Contract Title,Reference Nr,Order Nr,Item Nr,Order Date,
Transaction Date,Title,SKUs,Partner SKUs,Transaction Type,Currency,
Net Proceeds,Referral Fee including VAT,
Fullfilment & Logistics Fees including VAT, ← sic, Noon misspells this
Shipping Credits including VAT,Other Order Fees including VAT,
Order Subsidies including VAT,Non-Order Fees including VAT,
Non-Order Subsidies including VAT,Others including VAT,Total
```
- **`Contract`** is the contract code — 12 chars, `MP` prefix,
country-code suffix (e.g. `MPXXXXXXXXEG`, `MPXXXXXXXXKW`,
`MPXXXXXXXXOM`). Use the last 2 chars to bucket by country.
- **`Contract Title`** is the human-readable name (`Noon EG`,
`Noon KW`, …).
- Use either column to split a mixed-country export locally:
```python
import pandas as pd
df = pd.read_csv('<exported-file>.csv')
for cc in df['Contract'].str[-2:].unique():
df[df['Contract'].str.endswith(cc)].to_csv(
f'transactions_{cc}.csv', index=False
)
```
Observed `Transaction Type` values include `order`, `order_update`,
`statement_fee`, `payment`, `balance_transfer`. Noon may add more;
filter liberally when aggregating.
## 3. Catalog Exports
**URL**: `https://noon-catalog.noon.partners/en/exports?project=PRJ{project_id}`
Click "Add Export" → modal with Type dropdown:
| Type | Description |
|------|-------------|
| Catalog Export | Full catalog data |
| Content | Product titles, descriptions, images, attributes |
| Pricing | Current + promotional prices |
| Stock | Inventory levels |
| Partner SKU Generate | Generate partner SKU mappings |
| Reports | Performance/sales report data |
| Global Catalog Export | Global catalog across markets |
Select type → Create → wait → download from Result column when
Status shows "Completed" (1-10 minutes depending on size).
## Tips
- **Transaction View export covers all contracts by default** —
one click produces one CSV with rows from every country contract.
Don't export twice (see § 2).
- **Transaction View status enum is `Requested → Exporting →
Processed`**, not "Processing → Completed". Click the Export
button on the panel only after it reads `Processed`.
- **Exports can take up to 35 min** — data-heavy months are
slower. Poll for at least 35 min before giving up. NEVER click
Download again while a previous export is still processing — it
queues a new job and makes everything slower.
- **Export files land in `~/.vibe-seller/downloads/<store-slug>/`**,
not `~/Downloads`.
## See also
- `noon-shared` — login, page structure (prerequisite)
- `amazon-reports` — Amazon equivalent + general "Download Behavior" pattern
GitHubで見る