Skip to main content

Cdiscount Store Management

Connect your Cdiscount seller account to Odoo through the Octopia Seller API v2 — the REST API that now serves Cdiscount. The module authenticates with OAuth 2.0 client credentials against auth.octopia-io.net and sends the SellerId header on every call to https://api.octopia-io.net/seller/v2. Synchronize your product catalog, import orders, follow the 48-hour accept/refuse window, and work returns — on France's second-largest e-commerce marketplace.

Compatibility: Odoo 17 / 18 / 19 (Community or Enterprise) Price: $499 (one-time, per Odoo version) Licence: OPL-1 — installs standalone, no activation step

Technical namecdiscount_store_management
Current shipped version17.0 → 17.0.2.2.3, 18.0 → 18.0.2.2.3, 19.0 → 19.0.2.2.3

Key Features​

  • Octopia Seller API v2 with OAuth 2.0 client credentials and the SellerId header on every call
  • Product catalog import and mapping, with async imports tracked through the integration reports
  • Order import with the Cdiscount acceptance deadline and the Accept / Refuse / Cancel on Cdiscount actions, so the 48-hour window is answered from Odoo
  • A Seller Orders screen showing the orders as Cdiscount reports them
  • A Returns screen for marketplace returns
  • Inventory positions and per-seller stock references
  • Invoice documents and the async report list
  • Automatic retry with exponential backoff on 429/500/502/503/504, honouring Retry-After
  • OWL dashboard with Cdiscount KPIs, a sales trend and an order-status breakdown
  • Per-company isolation: 27 record rules keep each configuration inside its own company

Prerequisites​

  • Odoo 17, 18, or 19 (Community or Enterprise, self-hosted or Odoo.sh)
  • A Cdiscount / Octopia seller account with API access
  • Client ID, Client Secret and Seller ID from the Octopia seller portal
  • The Python requests package in the interpreter that runs Odoo

Installation​

  1. Download the module ZIP for your Odoo series from your ECOSIRE dashboard, or from the Odoo App Store listing
  2. Extract it into your addons path:
    unzip cdiscount_store_management_v19_*.zip -d /opt/odoo/addons/
  3. Restart Odoo:
    sudo systemctl restart odoo
  4. Go to Apps, click Update Apps List
  5. Search for Cdiscount Store Management and click Install

There is no licence step: the module has no ECOSIRE licence module as a dependency.

Configuration​

Step 1: Obtain your API credentials​

In the Octopia seller portal, generate an API credential pair and note your Seller ID. Client ID and Client Secret are what the API authenticates with; the Seller ID travels as a header on every call. The older API Login / Password pair is no longer accepted by the platform.

Step 2: Connect in Odoo​

  1. Go to Cdiscount → Configuration → Settings
  2. Create a configuration and enter:
    • Client ID (client_id)
    • Client Secret (client_secret)
    • Seller ID (seller_id)
    • Company (company_id)
  3. Click Test Connection to verify access — it probes the seller profile on /sellers and reports what it found.

Step 3: Choose what syncs​

The connection record carries the switches that gate automatic work: sync_products, sync_orders, sync_customers, sync_inventory and their auto_sync_* counterparts. Turn them on one at a time as you gain confidence.

Initial Sync​

  1. Go to Cdiscount → Operations → Import Wizard
  2. Choose the data types to import (products, orders, customers, inventory)
  3. Run a small import first — a date range or a handful of products — and check the results
  4. Watch Cdiscount → Operations → Logs during the first full run; failures are recorded there rather than raised at the user

API Details​

FieldValue
Auth methodOAuth 2.0 client credentials (bearer token)
Token URLhttps://auth.octopia-io.net/auth/realms/maas/protocol/openid-connect/token
Base URLhttps://api.octopia-io.net/seller/v2
Token grantgrant_type=client_credentials
PagingpageIndex / pageSize, 1-based
Retry policy3 retries, 0.5 s backoff, on 429/500/502/503/504
Key config fieldsclient_id, client_secret, seller_id

Every route in the client was revalidated against Octopia's own published OpenAPI definition of the Sellers API — 88 published operations, of which this connector implements 50 on all three Odoo versions.

The module also serves its own routes in Odoo. /cdiscount/webhook is the one public endpoint (the URL you register in the Cdiscount seller portal; it fails closed unless an active webhook record verifies the delivery's signature). /cdiscount/api/status, /cdiscount/api/sync and /cdiscount/dashboard/data back the dashboard and require a logged-in Odoo user — they are not public and answer only for the companies that user may see. The full detail is on the installation and configuration guide.

Dashboard​

The built-in OWL dashboard shows your integration at a glance:

  • KPI cards — revenue, orders, customers, products, average order value and sync health, each with a period-over-period delta
  • Sales trend (Chart.js line chart) with date filtering
  • Order status breakdown (doughnut chart)
  • Period filters — today, 7 days, 30 days, 90 days, year, or a custom range
  • Recent activity from the sync log
  • Quick actions for products, orders, customers, queue, logs and settings
  • Auto-refresh every 60 seconds, and it follows Odoo's dark mode (since 2.2.3)

Troubleshooting​

IssueSolution
Connection failedRe-check Client ID, Client Secret and Seller ID. A sandbox credential against production (or the reverse) is the usual cause
Sync not runningCheck Settings → Technical → Scheduled Actions and that Odoo's cron worker is running
Duplicate productsReview the product mapping records; ensure SKU matching is configured
Orders not importingCheck the order status filters and the date range
Token rejectedThe module acquires a fresh token when one expires; verify the Client ID and Secret are still valid in the Octopia portal
Product rejected by CdiscountCheck the required fields (EAN, description length, category code)
Refund a returnCdiscount publishes no seller-side refund operation. Refund in the Cdiscount seller portal, then set the return's state to Refunded in Odoo

Support​