Skip to content
Odoo support plans from $425 a month · Installation and setup: Onboarding Pack, $350 one-offSee plans →Get a quote
PokutsoftPokutsoft
GlobalSales/Sales
Kazakhstan Kaspi Price icon

Kazakhstan Kaspi Price

Generate the Kaspi.kz price-list feed (kaspi_catalog XML) for prices and stock from Odoo pricelists (BYOK)

Odoo 20.0Odoo 19.0Odoo 18.0

Want Kazakhstan Kaspi Price installed and configured for you? Onboarding Pack: $350 one-off

Support plans from $425 a month

Kazakhstan 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

ModeExample inputResult
Whole tenge12 344.7012 345
Round to step 1012 34412 340
Round to step 5012 33012 350
Psychological ...9012 34512 390
Psychological ...90012 60012 900

How to use

  1. Open Settings → Kaspi.kz Pricing, paste your Kaspi Merchant Cabinet API token and your Merchant ID, then click Test Connection.
  2. Pick a source pricelist, a rounding mode and (optionally) a minimum margin.
  3. On each product, tick Push to Kaspi and set the Kaspi SKU (or rely on the Internal Reference / Barcode).
  4. 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.
  5. 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 requests library (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

Api Log

Push Prices

Push Prices

Pricing Runs

Pricing Runs

Settings

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