Skip to main content

Daraz Store Management

Daraz Store Management connects a Daraz seller account to Odoo. This page is the installation and configuration guide for the module you downloaded from your ECOSIRE dashboard. Everything below describes the daraz_store_management module as it ships today.

Technical namedaraz_store_management
Odoo versions17.0, 18.0, 19.0 (Community or Enterprise)
Current shipped version17.017.0.9.7.0, 18.018.0.9.7.0, 19.019.0.9.7.0
Price$349 USD — one-time, per Odoo version
Odoo module licenceOPL-1 (Odoo Proprietary License)
Activation keyNone — the module installs and runs standalone, with no licence client and no activation step
CategoryConnector
One purchase per Odoo major version

Each Odoo major version (17.0, 18.0, 19.0) is a separate product. Buy the build for the version you actually run — if you later upgrade Odoo, you need the build for the new version. There is nothing to activate: purchasing is covered by the licence terms (OPL-1) and the module contains no key check, phone-home activation or licence dependency.

Requirements

RequirementDetail
Odoo17.0, 18.0 or 19.0, Community or Enterprise. Self-hosted or Odoo.sh — Odoo Online (SaaS) cannot install third-party modules
Odoo appsbase, sale_management, stock, account, delivery, mail, web, product, contacts — Odoo installs any that are missing
Extra ECOSIRE modulesNone — the connector is self-contained
Python packagesrequests
Platform accountA Daraz seller/partner account with API access

Install the Python packages into the same interpreter that runs Odoo:

sudo -u odoo pip install requests

Installation

1. Download the ZIP for your Odoo version

Sign in at ecosire.com and open your dashboard downloads. You will only be offered the file matching your licence's Odoo version — that is expected, see the note above.

2. Extract into your addons path

unzip daraz_store_management_v19_*.zip -d /opt/odoo/addons/
ls /opt/odoo/addons/daraz_store_management/__manifest__.py # sanity check

The archive contains a single top-level daraz_store_management/ directory. If your ls check fails, the module folder ended up one level too deep — move it up so __manifest__.py sits directly inside daraz_store_management/.

3. Restart Odoo and install

sudo systemctl restart odoo
  1. Go to Apps and click Update Apps List (developer mode must be on).
  2. Search for Daraz Store Management and click Install.
  3. Odoo pulls in the Odoo apps listed above automatically.

When the install finishes, a Daraz menu appears in the main Odoo app switcher. There is no activation step — the module is fully functional the moment it installs.

Configuration

Connect to Daraz

Open Daraz → Configuration → Settings and create a record (model daraz.configuration). The connection fields are:

LabelTechnical nameRequiredValues
App Keyapp_keyYesText
App Secretapp_secretYesText
Access Tokenaccess_tokenNoText
Refresh Tokenrefresh_tokenNoText
CountrycountryYesSelection: PK, BD, LK, MM, NP
Image Sync Modeimage_sync_modeNoSelection: main_only, all

App Key and App Secret are required, as is Country (PK, BD, LK, MM, NP) because it selects the API host. Access Token / Refresh Token come from the platform OAuth flow. Sandbox Mode (No Live Writes) lets you rehearse without pushing anything to Daraz — leave it on for your first run and turn it off per store when you are ready to go live.

The same record carries the behaviour toggles that gate what the connector is allowed to do automatically once it is connected:

  • What to syncsync_products, sync_orders, sync_customers, sync_inventory, plus the automatic counterparts auto_sync_products, auto_sync_orders, auto_sync_customers, auto_sync_inventory and auto_push_inventory (Odoo → Daraz stock push). Leave anything you are not ready for switched off, and turn the toggles on one at a time. A banner on the store warns you when an active store has every auto-sync toggle off — the silent "nothing ever synced" trap.
  • Create Missing Products (create_new_product) — OFF by default. With it off, imported listings and order lines are linked to products you already keep in Odoo (matched by internal reference or barcode against the Daraz Seller SKU) instead of creating duplicates; unmatched lines flag the order Needs Product Mapping.
  • Sync Orders From Date (order_sync_from_date) — scheduled and manual order syncs never import orders created before this date, so an old order whose status changed yesterday does not suddenly appear. Orders already in Odoo still receive their status updates, and the Import Historical Orders wizard deliberately bypasses the floor for one-shot backfills.
  • Special prices (sync_special_price) — a Daraz special price with its validity window is mirrored into a dated pricelist rule, so the promotion actually applies in Odoo.
  • Commission posting (import_commission) — the customer invoice keeps the full selling price; Daraz commission and fees are imported from the finance transaction API and posted as a vendor bill to a Daraz commission vendor on a marketplace-commission expense account.
  • Product images (sync_product_images) — downloads Daraz payload images onto the Odoo product (main image, or the full gallery with Image Sync Mode = all).

Credentials are issued from the Daraz Open Platform (shared with Lazada) — see open.lazada.com/apps. The connector talks to the per-country Daraz REST host — api.daraz.pk/rest, api.daraz.com.bd/rest, api.daraz.lk/rest, api.daraz.com.np/rest, api.shop.com.mm/rest — chosen by Country.

When the fields are filled in, click Test Connection. The record's status moves to connected only when the platform answers successfully — do not run a first import until it does.

Scheduled actions

The module installs 8 scheduled actions (Settings → Technical → Scheduled Actions):

Scheduled actionRuns everyEnabled on install
daraz: Sync Products1 hoursYes
daraz: Sync Orders30 minutesYes
daraz: Sync Customers6 hoursYes
daraz: Sync Inventory (Daraz → Odoo)15 minutesYes
daraz: Push Inventory (Odoo → Daraz)1 hoursYes
daraz: Process Pending Queues5 minutesYes
daraz: Test Connection1 daysYes
daraz: Cleanup Old Logs1 daysYes

Intervals above are the shipped defaults. Adjust them to your volume — but be aware that the platform, not Odoo, sets the API rate limits, and shortening a sync interval is the usual cause of throttling errors in the logs.

Webhook and API endpoints your server exposes

These are the HTTP routes this module adds to your Odoo instance. Only the public one is reachable without an Odoo login.

EndpointAuthPurpose
/daraz/webhookpublicWebhook receiver — see the note below, it currently rejects every delivery
/daraz/api/statuslogged-in userconnection and sync status read by the dashboard
/daraz/api/synclogged-in user (Daraz Manager)triggers a sync from the dashboard
/daraz/dashboard/datalogged-in userdashboard KPI data
/daraz/webhook is closed in this build — sync runs on the scheduled actions

The route exists and is publicly reachable, but it fails closed: no verified delivery-signature scheme for Daraz is pinned in our platform contract yet, so signature verification rejects every delivery and the endpoint answers HTTP 403. The module will not process an unauthenticated payload, so there is nothing to register in your Daraz seller portal today — scheduled polling is the supported path. Leave the scheduled actions above enabled; they are how this build stays current.

Using the module

The Daraz menu is laid out as:

  • Daraz → Dashboard
  • Daraz → Products
  • Daraz → Orders
  • Daraz → Customers
  • Daraz → Operations — Import Wizard, Export Wizard, Mapping Wizard, Import Product Mapping (Excel/CSV), Import Historical Orders, Test Connection, Queue Jobs, Logs, Reports
  • Daraz → Configuration — Settings, and Mappings (Category Mapping, Order Status Mapping, Payment Method Mapping, Shipping Method Mapping)

A normal first run is:

  1. Test Connection until the instance reads connected.
  2. Review the mapping records (categories, order statuses, payment and shipping methods) so imported data lands on the right Odoo records.
  3. Run a small import first — restrict it by date or by a handful of products — and check the results before letting the scheduled actions take over.
  4. Watch the Logs view during the first full sync. Every sync writes a log line; failures are recorded there rather than raised at the user.

Push products to Daraz (create listings from Odoo)

As well as importing, the connector creates real Daraz listings from your Odoo catalogue:

  1. On the product form, open the Daraz Sync page and set a Daraz Category ID (or map your Odoo product category once under Daraz → Configuration → Category Mapping — export then resolves the Daraz category from your Odoo category, so you map once per category instead of per product).
  2. Click Fetch Required Attributes — the connector calls Daraz for the category's mandatory attribute keys and pre-fills them. Fill the key/value lines under Daraz Extra Attributes (a brand set there overrides the default).
  3. Click Export to Daraz. The product is created via Daraz's product-create API with per-variant Seller SKUs, price, quantity and attributes. The product's Internal Reference is used as the Seller SKU, so set it first.
  4. Bulk export goes through Daraz → Operations → Export Wizard (single or queued). If Daraz rejects a required attribute, its own error text is surfaced verbatim so you can finish the listing in Seller Center.
  5. With Sandbox Mode on, the export runs as a dry run and only logs what it would send.

Order pricing: Daraz is authoritative

Imported orders keep exactly what the buyer paid on Daraz: the line price is the Daraz paid price (a pricelist that "shows public price & discount" can no longer re-price the line), and voucher funding is preserved correctly — a platform-funded Daraz voucher stays in your seller revenue, while a seller-funded voucher is deducted from the line. Marketplace currency, payment, tax and the shipping-fee funding breakdown are stored on the order as Daraz evidence.

One bad record no longer stops a sync run

Every order and record imports inside its own savepoint. If a single order fails — bad payload, an unknown marketplace status, a constraint — that one record is rolled back and logged, and the run carries on with the rest. A marketplace status the connector does not yet recognise is logged by name and left blank on the order; the order, its lines and its buyer still import. Failed records land in the Logs (and in Queue Jobs for queued runs) where you can retry them.

Import Product Mapping (Excel/CSV)

Bulk-load an existing SKU mapping — much faster than mapping products one at a time on an established catalogue. The downloadable template includes size and color columns, and the import binds each Seller SKU to its own product variant (tolerating spelling like UK:9 vs UK9), never letting two rows claim the same variant. Rows the import cannot bind to a single variant are reported as unmatched — naming what the file is missing — instead of being counted as updated. Seeded category mappings are labelled with their real Daraz category path, resolved from Daraz's category tree, so the screen shows assign-able names rather than bare category IDs. Run Preview only first, review the log, then run Only update existing products to link your existing catalogue without creating anything.

Export Wizard

The wizard's Export Limit (default 100) caps how many records each bulk dispatch exports per type — set 0 for no cap. Queues remember the limit you set when the wizard created them, so the cron that processes the queue later honours the same number. The wizard only offers the options the code actually implements; anything else you need belongs to a scheduled import, not the one-shot export.

Module-specific notes

  • Country is required and selects the API host — PK, BD, LK, MM (Shop.com.mm) or NP. A key issued for one country will not work against another country's host.
  • Sandbox Mode (No Live Writes) lets you exercise the full sync — including product export — without pushing anything back to Daraz. Use it for the first run.
  • Inventory has two directions and two jobs: Sync Inventory (Daraz → Odoo) every 15 minutes and Push Inventory (Odoo → Daraz) hourly. Decide which system owns stock before enabling both.
  • Running two Daraz stores? Every record is store-scoped: the store selector on the dashboard switches every KPI, chart and top-products list to the chosen store, and list views carry a Daraz Store column with filter and group-by.
  • Upgrading an existing install: apply releases with a normal module upgrade (Apps → Daraz Store Management → Upgrade), not a file swap — recent releases add stored columns (for example the queue export limit), and a swap without the upgrade leaves the schema behind.

Troubleshooting

Syncing

SymptomCause and fix
Test Connection failsRe-check every required field in the table above. Most failures are a mistyped secret, or credentials created for the sandbox while the connector points at production (or vice-versa).
Nothing syncs even though the connection is fineThe scheduled actions are disabled at the Odoo level, or the store's auto-sync toggles are all off (a banner on the store warns about this), or Odoo's cron worker is not running. Check Settings → Technical → Scheduled Actions and that --max-cron-threads is greater than zero.
Sync starts then stops part-wayRead the Logs view for that run. Rate limiting and rejected field values are the two common causes; both are logged with the platform's own error text. A single failing record is contained and does not abort the run — look for its own log line.
An order imported with an empty Daraz statusDaraz sent a marketplace status the connector does not map yet. It is logged by name; the order, lines and buyer still imported. Report the status name to support so it can be mapped.
Orders appear that are older than expected, or old orders missingCheck the store's Sync Orders From Date — scheduled and manual syncs skip orders created before it. Use Daraz → Operations → Import Historical Orders for a one-shot backfill that ignores the floor.
Records import but map to the wrong Odoo valuesFix the mapping records under the module's configuration, then re-run the import.
Duplicated products or customersSet Create Missing Products = OFF and match products by internal reference/barcode = Seller SKU (see the overview page's mapping walkthrough). Run the initial import once; if a first attempt half-finished, check the existing records before re-running.

Version history

Odoo versionVersion you download today
17.017.0.9.7.0
18.018.0.9.7.0
19.019.0.9.7.0

19.0.9.7.0 (2026-08-19) made the module fully standalone: the licence-client dependency and every activation check were removed — no feature changed. Recent releases also added per-order failure containment in sync runs, honoured the export wizard's export limit, bound mapping imports to product variants with size/color columns, pinned imported order pricing to what the buyer actually paid on Daraz (voucher-funding aware), and added Sync Orders From Date.

ECOSIRE module versions are <odoo major>.<module major>.<minor>.<patch>, so 19.0.9.7.0 is the Odoo 19 build of module version 9.7.0. Your installed version is shown in Apps.

Support