Kazakhstan Kaspi Price
Generate the Kaspi.kz price-list feed (kaspi_catalog XML) for prices and stock from Odoo pricelists (BYOK)
Want Kazakhstan Kaspi Price installed and configured for you? Onboarding Pack: $350 one-off
Support plans from $425 a monthKazakhstan Kaspi.kz Price & Stock Feed
Bulk-update your Kaspi.kz listing prices and stock straight from Odoo pricelists - published as the kaspi_catalog price-list feed at a URL Kaspi polls, with your own Kaspi Merchant API token (BYOK) verifying the connection.
What it does
This app is a focused dynamic re-pricer for Kaspi.kz sellers in Kazakhstan.
It reads the price for each product from your Odoo pricelist (or the product's
own sales price), turns it into a valid whole-tenge Kaspi listing price, and
generates the Kaspi price-list feed (the kaspi_catalog XML
that Kaspi imports) for the whole catalogue - in offer sets of up to 100, exactly
as the Kaspi price-list format expects. Available stock is written into the same
feed.
Kaspi updates prices and stock by polling a price-list URL you publish
(Kaspi fetches it roughly every hour) - it is not a direct push API. This app
computes every price under your rules and builds that kaspi_catalog
XML for you; you publish it at the feed URL configured in your Kaspi Merchant
Cabinet. Your Merchant API token is used to verify the connection.
Key features
Pricelist-driven prices
Source the price from any Odoo pricelist or the product's Sales Price. Change the pricelist once and re-push - every listing follows.
Whole-tenge rounding
Kaspi listings are whole tenge (no minor unit). Round to the nearest 1 / 10 / 50 / 100 KZT, or force psychological endings such as 12 990 or 12 900.
Margin-floor guard
A price is never pushed below cost × (1 + minimum margin %), and a product with no cost at all is skipped rather than published without a floor. A mis-built pricelist can no longer dump your stock at a loss on the marketplace.
Min / max clamps
Global and per-product absolute price floors and ceilings keep every listing inside a sane band; a per-product bound overrides the global one for that product.
Full-catalogue feed
Kaspi polls the published feed and imports it as your whole catalogue, so the document carries every enabled offer on every run — not just the ones whose price moved. Prices that did not change are still reported as “unchanged” on the run, so you can see how much actually moved. A delta mode is available as an explicit, off-by-default setting for an integration that treats the feed as a patch.
Stock in the same feed
Available quantity per SKU and per Kaspi warehouse / point-of-service is written into
the same offer as its price, in the feed’s <availabilities>
block. A zero-stock SKU is published as unavailable rather than offered at a price it
cannot be sold at.
A URL Kaspi can poll
The built feed is served at a private, per-company address —
/kaspi/feed/<token>.xml — so Kaspi fetches it on its own schedule
instead of somebody copying XML out of a text box every hour. The token is
administrator-only, a wrong one is simply not found, and a manager can rotate it, which
invalidates the old URL immediately.
Valid XML at any size
A run of any size produces one kaspi_catalog document. Above a
hundred offers the stored feed used to be several documents concatenated, which no
parser accepts; it is now a single well-formed file whatever the catalogue size.
Preview before push
A wizard shows exactly what every row will become - computed price, rounded price, previous price and the reason a row is uploaded or skipped - before anything leaves Odoo.
Run history & API log
Every bulk run is recorded with per-row results and every Kaspi API call is logged with status, row count and duration for troubleshooting.
Scheduled rebuild
An optional scheduled action re-prices the whole enabled catalogue and rebuilds the feed automatically, at an interval you choose. Disabled by default; ticking the box really does activate it.
BYOK & safe
You paste your own Kaspi Merchant Cabinet token, used to verify the connection.
The generated kaspi_catalog feed is yours to publish; the API base URL
is editable for proxies.
Rounding modes
| Mode | Example input | Result |
|---|---|---|
| Whole tenge | 12 344.70 | 12 345 |
| Round to step 10 | 12 344 | 12 340 |
| Round to step 50 | 12 330 | 12 350 |
| Psychological ...90 | 12 345 | 12 390 |
| Psychological ...900 | 12 600 | 12 900 |
How to use
- Open Settings → Kaspi.kz Pricing, paste your Kaspi Merchant Cabinet API token and your Merchant ID, then click Test Connection.
- Pick a source pricelist, a rounding mode and (optionally) a minimum margin.
- On each product, tick Push to Kaspi and set the Kaspi SKU (or rely on the Internal Reference / Barcode).
- From the product list choose Push to Kaspi.kz, preview, then build the
feed - or let the scheduled action rebuild it hourly. The run's
Price-List Feed (XML) tab holds the generated
kaspi_catalog. - Publish that feed at the price-list URL set in your Kaspi Merchant Cabinet so Kaspi imports it on its regular poll.
Requirements
- Odoo 18.0, 19.0 or 20.0 (Community or Enterprise).
- An active Kaspi Merchant Cabinet account with an API token.
- The Python
requestslibrary (shipped with Odoo).
This connector generates the Kaspi kaspi_catalog
price-list feed and verifies the connection with your own Kaspi merchant
credentials. It is not affiliated with Kaspi.kz.
Screenshots
Api Log
Push Prices
Pricing Runs
Settings
Upgrading an existing database
The feed now carries every enabled offer, not only the ones whose price changed, because Kaspi imports it as your whole catalogue. If you were relying on the old behaviour, the "Publish only changed prices" setting is still there — it is simply off by default now, and the upgrade turns it off explicitly.
Two other changes are visible immediately. A product with a margin floor but no cost is now skipped instead of published without a floor, so your first run may report skips it did not report before — fill in the missing costs. And "Psychological ...00" now really ends in 00: a price that came out as 12 590 will come out as 12 900.
Runs, run lines and API log rows are now owned by a company and are only visible within it; existing rows are assigned to your main company on upgrade, so re-assign any that belong elsewhere. Building runs requires the new Kaspi Pricing / User group, and rotating the feed token requires Kaspi Pricing / Manager.
Update date: 2026-10-23
User guides (PDF)
Related modules
CDON Marketplace Connector
Sell on CDON (Sweden, Denmark, Finland, Norway) from Odoo: listings, stock, prices, orders, tracking. Official CDON Merchant API, BYOK.
Duct Takeoff & Weight
Ductwork takeoff into straight runs and fittings with surface area, sheet gauge by size class, weight, insulation area, order lists and quotation lines
Engineering Fee Proposal
Engineering consultancy fee proposals from deliverables x discipline x role hours and rates, multipliers, risk allowance, margin, quotation and hand-over to project budget