Rakuten Store Management
This is the installation and configuration guide for Rakuten Store Management, the module you downloaded from your ECOSIRE dashboard. Everything on this page describes the rakuten_store_management module exactly as it ships today — the facts below were read out of the released build, not from a roadmap.
| Technical name | rakuten_store_management |
| Odoo versions | 17.0, 18.0, 19.0 (Community or Enterprise) |
| Current shipped version | 17.0 → 17.0.2.2.4, 18.0 → 18.0.2.2.4, 19.0 → 19.0.2.3.2 |
| Price | $499 USD — one-time, per Odoo version |
| Odoo module licence | OPL-1 (Odoo Proprietary License v1.0) |
| Category | Connector |
Licensing
This module is licensed under OPL-1 (Odoo Proprietary License v1.0). It ships complete: no activation key, no registration step, and no companion module to install before it will work. Nothing in the module contacts ECOSIRE at runtime — once installed it runs entirely on your own server.
Requirements
| Requirement | Detail |
|---|---|
| Odoo | 17.0, 18.0 or 19.0, Community or Enterprise. Self-hosted or Odoo.sh — Odoo Online (SaaS) cannot install third-party modules |
| Odoo apps | base, sale_management, stock, account, delivery, mail, web, product, contacts — Odoo installs any that are missing |
| Python packages | requests |
| Platform account | A Rakuten Ichiba (Japan) seller account with RMS API access |
| Platform credentials | Your shop's serviceSecret and RMS licenseKey (from the RMS R-License page) |
Install the Python package 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. Each Odoo major version is a separate product, so make sure you download the build that matches the Odoo series you run.
2. Extract into your addons path
unzip rakuten_store_management_v19_*.zip -d /opt/odoo/addons/
ls /opt/odoo/addons/rakuten_store_management/__manifest__.py # sanity check
The module must end up as a single top-level rakuten_store_management/ directory with __manifest__.py directly inside it. If your ls check fails, the folder landed one level too deep or too shallow — move it so the path above resolves.
3. Restart Odoo and install
Restart the Odoo service, then go to Apps → Update Apps List, search for Rakuten Store Management, and click Install. There is no licence key to enter and no dependency to download first.
Configuration
Connect to Rakuten
Create a connection record under Rakuten → Configuration → Settings. The fields the module defines are:
| Field | Technical name | Type | Required |
|---|---|---|---|
| Configuration Name | name | Char | Yes |
| Service Secret | service_secret | Char | Yes |
| RMS licenseKey | license_key | Char | Yes |
| Region | region | Selection | Yes — Japan only |
| Company | company_id | Many2one | Yes |
| Rakuten URL | rakuten_url | Char | No |
| Marketplace | marketplace | Char | No |
service_secret and license_key are the RMS API credential pair — they are not an ECOSIRE licence of any kind. Both are visible only to users in the Rakuten Manager group.
Use Test Connection to verify the pair. The test asks RMS for at most one order number from the last 24 hours: it is read-only, and it proves the key carries the order-API permission the connector actually needs.
The record also carries the sync switches — sync_products, sync_orders, auto_sync_products, auto_sync_orders. Standalone customer and inventory sync are shown as unavailable and cannot be switched on, because RMS provides no buyer-list API and no verified inventory payload mapping.
The module contacts exactly two hosts: api.rms.rakuten.co.jp (the RMS shop API) and openapi.rakuten.co.jp (the public Rakuten Web Service used for genre lookup). Allow outbound HTTPS to both.
Multi-shop
Every product, order and buyer the connector imports records the configuration it came from, and all matching is scoped to that shop. A merchant running two Rakuten shops therefore keeps two separate catalogues and two separate order lists, even where the two shops happen to use the same item numbers. The dashboard reports one shop at a time.
Currency
RMS quotes in JPY. If the company's currency is anything else, configure the JPY exchange rate for the dates you are importing (Accounting → Configuration → Currencies) before you sync.
Every amount the connector writes — line prices, shipping, the discount buckets and catalogue prices — is converted into the company currency. When no exchange rate exists for the order date the import fails for that record, with the reason, rather than assuming a 1:1 rate. A failed record does not stop the rest of the batch.
Scheduled actions
The module installs 4 scheduled actions (Settings → Technical → Scheduled Actions). All of them ship disabled apart from log cleanup, so nothing starts calling Rakuten until you switch it on:
| Scheduled action | Default interval | Enabled on install |
|---|---|---|
| rakuten: Sync Products | 1 hour | No |
| rakuten: Sync Orders | 30 minutes | No |
| rakuten: Test Connection | 1 day | No |
| rakuten: Cleanup Old Logs | 1 day | Yes |
The two sync actions only run for a configuration whose auto_sync_products / auto_sync_orders switch is on, so a shop has to be configured before a scheduled sync does anything. Intervals above are the shipped defaults; adjust them to your volume. The platform, not Odoo, sets the API rate limits — RMS allows about one request per second per shop, and the connector enforces that limit client-side.
Using the module
The menu is:
- Rakuten → Dashboard
- Rakuten → Orders
- Rakuten → Products
- Rakuten → Customers
- Rakuten → Operations — Import Wizard, Test Connection, Logs, Reports
- Rakuten → Configuration — Settings
A normal first run is:
- Save the connection record and confirm Test Connection succeeds before importing anything.
- Review the mapping records so imported data lands on the right Odoo records.
- Run a small import first — restrict it by date or by a handful of products — and check the results before enabling the scheduled actions.
- Watch the log records during the first full sync. Per-record failures are recorded there rather than raised at the user, and a run that only partly succeeded is reported as a warning rather than as a success.
Imported products, orders and buyers are shown on the Orders, Products and Customers screens with the marketplace identifiers, the amounts Rakuten reported, the payment and shipping evidence, and the shop they came from — so an order can be reconciled against the RMS order screen without leaving Odoo.
Troubleshooting
Connection and licensing
| Symptom | Cause and fix |
|---|---|
Credentials rejected | The serviceSecret/licenseKey pair is wrong, or the key lacks the order-API permission. Re-copy both from the RMS R-License page. |
| The region will not save | Only Japan is supported. Rakuten Rewards and the former EU marketplaces use separate APIs this connector does not implement. |
The requests library is required | requests is missing from Odoo's Python environment. Install it into the interpreter that runs Odoo. |
| You are looking for an activation step | There is none. The module is OPL-1 and installs on its own. See Licensing. |
Syncing
| Symptom | Cause and fix |
|---|---|
| No exchange rate is configured for JPY | Configure the JPY rate for the order dates you are importing, then sync again. The connector refuses to guess a rate. |
| Nothing syncs even though the connection is fine | The scheduled actions are disabled (they ship disabled), the configuration's auto_sync_* switch is off, 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-way | Read the module's log records 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 partly-failed run is reported as a warning and does not advance the Last Sync timestamp. |
| Records import but map to the wrong Odoo values | Fix the mapping records under the module's configuration, then re-run the import. |
| A product appears twice | Check whether one copy came from the catalogue sync and the other from an order. Both paths now resolve the merchant SKU (manageNumber) the same way, so a re-sync updates the existing record. |
| Last Product Sync has not moved | The last run was not clean. A partial or failed run deliberately leaves the timestamp where it was, so the value always means the last time the catalogue actually came across. |
Module routes
The connector exposes three authenticated JSON routes on the Odoo web server, used by its own screens. They are not a public API and they require a logged-in Odoo user with access to the module:
| Route | Auth | Purpose |
|---|---|---|
POST /rakuten/api/status | user | Reports the connection and last-sync status of the active configuration for the current company |
POST /rakuten/api/sync | user | Triggers a product or order sync from the dashboard's Sync button, subject to the configuration's sync switches |
POST /rakuten/dashboard/data | user | Builds the dashboard payload (KPIs, sales chart, order states, top products, recent activity) for the selected period and shop |
All three are read-scoped to the current user's company, and /rakuten/dashboard/data is readonly — it never writes.
Version history
| Odoo version | Version you download today |
|---|---|
| 17.0 | 17.0.2.2.4 |
| 18.0 | 18.0.2.2.4 |
| 19.0 | 19.0.2.3.2 |
ECOSIRE module versions are <odoo major>.<module major>.<minor>.<patch>, so 19.0.2.3.2 is the Odoo 19 build of module version 2.3.2. Your installed version is shown in Apps.