How to Sync Bol.com Orders to Odoo Automatically (2025)
Bol.com is the Netherlands' and Belgium's largest marketplace — and for most Dutch Odoo sellers, it's the first integration that needs to work flawlessly. This guide covers the complete Bol.com-to-Odoo setup: API credentials, EAN product mapping, LVB vs FBB fulfilment modes, Dutch and Belgian VAT configuration, and what to check before going live. We also cover the Bol.com-specific quirks that trip up most first-time integrations.
- What you need before you start
- Step 1 — Bol.com API credentials
- Step 2 — Connect Bol.com in ERP2MARKET
- Step 3 — LVB vs FBB — choose your fulfilment mode
- Step 4 — EAN mapping to Odoo products
- Step 5 — Dutch and Belgian VAT configuration
- Step 6 — Stock sync to Bol.com
- Step 7 — Tracking push to Bol.com buyers
- Step 8 — Test order and go live
- Bol.com-specific mistakes to avoid
- Selling on Bol.com Belgium
What you need before you start
Before setting up the Bol.com-Odoo integration, confirm you have the following:
- An active Bol.com seller account — with at least one product listed. API access is available to all Bol.com sellers at no extra cost.
- Odoo 16, 17 or 18 — Community or Enterprise. Both are supported.
- Products in Odoo with EAN barcodes set — Bol.com identifies products by EAN. This is the primary matching key for order import. If your Odoo products don't have EANs, set them before starting.
- Admin access to both Bol.com Seller Dashboard and Odoo.
Step 1 — Generate your Bol.com API credentials
Bol.com uses a simple Client ID + Client Secret API authentication. There's no developer registration process — any active seller can generate API credentials directly from their Seller Dashboard.
Generate API credentials in Bol.com Seller Dashboard
Log into your Bol.com Seller Dashboard and navigate to Settings → API.
Click Add new credentials. Give the credential set a descriptive name (e.g. "ERP2MARKET Odoo") and confirm. Bol.com generates:
- Client ID — your integration identifier
- Client Secret — your integration secret (shown once — save it immediately)
These credentials are valid for both Bol.com Netherlands (.nl) and Bol.com Belgium (.be) — one set covers both countries.
Step 2 — Connect Bol.com in ERP2MARKET
Add Bol.com as a marketplace connection in Odoo
In Odoo, navigate to ERP2MARKET → Marketplaces → Add New. Select Bol.com from the marketplace list.
Enter your Bol.com API credentials:
- Client ID
- Client Secret
- Select which country(ies) to activate: NL, BE or both
Click Test Connection. ERP2MARKET will verify the credentials against Bol.com's API and confirm the connection is live. If the test fails, double-check that the Client Secret was copied correctly — the most common cause of connection failure.
Step 3 — LVB vs FBB — choose your fulfilment mode
Bol.com uses two fulfilment terminology abbreviations that are the opposite of Amazon's FBA/FBM — which causes constant confusion. Here's the definitive clarification:
LVB — Logistiek via Bol.com = Amazon FBA
- Bol.com stores and ships your products from their warehouses
- You send stock to Bol.com fulfilment centres
- Bol.com handles picking, packing, shipping and tracking
- ERP2MARKET imports LVB orders to Odoo — no delivery action required in your Odoo warehouse
- Tracking is pushed to buyers by Bol.com directly
FBB — Fulfillment by Bot = Amazon FBM
- You store and ship products from your own warehouse
- Odoo processes the delivery from your stock
- ERP2MARKET imports FBB orders to Odoo as sale orders
- Your Odoo warehouse team picks, packs and ships
- ERP2MARKET pushes tracking to Bol.com buyer automatically on delivery validation
Step 4 — EAN mapping to Odoo products
Bol.com identifies every product by EAN (European Article Number — the 13-digit barcode). When a Bol.com order arrives, ERP2MARKET reads the EAN from the order line and matches it to your Odoo product.
Set EANs on Odoo products for automatic matching
In Odoo, navigate to each product and set the Barcode field (under the Sales tab or General Information tab depending on your Odoo version) to the correct 13-digit EAN.
For product variants (e.g. colour/size combinations), set the EAN on each product variant individually — not on the product template. Each Bol.com listing has its own EAN at the variant level.
ERP2MARKET matches Bol.com order lines to Odoo products by EAN automatically. If a match isn't found, the order is flagged for manual review — it is never silently lost.
Bulk EAN update approach
If your Odoo catalogue has many products without EANs set, the fastest approach is:
- Export your Odoo product list to CSV (Products → Action → Export)
- Export your Bol.com active listings from Seller Dashboard
- Match by product name or your own internal reference in Excel/Google Sheets
- Import the updated EANs back to Odoo via CSV import
Step 5 — Dutch and Belgian VAT configuration
Bol.com orders come from both Dutch and Belgian buyers. The VAT treatment is different for each, and must be configured correctly in Odoo's fiscal positions.
Configure fiscal positions for NL and BE
In Odoo, go to Accounting → Configuration → Fiscal Positions. Ensure you have fiscal positions set up for:
| Bol.com country | Buyer country | VAT rate | VAT name | Odoo fiscal position |
|---|---|---|---|---|
| Bol.com NL | Netherlands | 21% (standard) / 9% (reduced) | BTW | Netherlands B2C |
| Bol.com BE | Belgium | 21% (standard) / 6% (reduced) | BTW / TVA | Belgium B2C |
ERP2MARKET assigns the fiscal position automatically based on the buyer's delivery country on each imported Bol.com order. Dutch buyers get the Netherlands fiscal position, Belgian buyers get the Belgium fiscal position — without any manual intervention per order.
Belgian VAT number on invoices
If your Belgian Bol.com buyers are B2B (with a Belgian VAT number), you may need to apply the 0% intra-community supply rule instead of Belgian BTW. This is rare for Bol.com (which is primarily B2C), but worth confirming with your accountant if you have B2B buyers in Belgium.
Step 6 — Configure stock sync to Bol.com
Stock sync pushes your Odoo inventory levels to Bol.com listings in real time. This is critical for sellers who also sell the same stock on other channels — Amazon, their own webshop, Zalando — simultaneously.
Set up real-time stock sync from Odoo to Bol.com
In ERP2MARKET's Bol.com connection settings, configure:
- Stock source location — The Odoo warehouse location(s) that feed your Bol.com FBB listings. (LVB listings don't need stock sync — Bol.com manages LVB inventory separately.)
- Safety stock buffer — Subtract a buffer from published stock (e.g. publish stock–2) to reduce oversell risk during peak order periods
- Zero-stock behaviour — When stock hits 0 (or your buffer), listings can be set to 0 availability automatically. Bol.com does not deactivate listings at 0 stock — it shows "not available" and prevents ordering.
- Sync frequency — ERP2MARKET syncs on every Odoo inventory movement and on a scheduled basis
Step 7 — Tracking push to Bol.com buyers
Bol.com requires sellers to ship FBB orders within the promised delivery window and upload tracking within specific timeframes. Bol.com's seller performance metrics include tracking upload rate — missing deadlines impacts your seller score and visibility.
Configure automatic tracking push from Odoo to Bol.com
ERP2MARKET monitors Odoo delivery orders. When a delivery is validated in Odoo (shipped, carrier confirmed), ERP2MARKET reads the carrier tracking number and pushes it to the Bol.com order automatically.
Configuration required:
- Carrier mapping — Map your Odoo delivery carriers to Bol.com's transporter codes
- Tracking trigger — Push on Odoo delivery validation (recommended) or on manual confirmation
| Carrier | Bol.com transporter code | Coverage |
|---|---|---|
| PostNL | TNT | NL domestic + international |
| DHL Parcel | DHL | NL/BE + EU |
| DPD | DPD-NL | NL/BE primary |
| GLS | GLS | NL/BE/DE |
| bpost | BPOST_BE | Belgium domestic |
| Budbee | BUDBEE | NL + selected EU |
| Trunkrs | TRUNKRS | NL same-day |
| Other | OTHER | Fallback for unlisted carriers |
TNT as the transporter code for PostNL — even though PostNL and TNT are now separate companies. This is a legacy naming issue in Bol.com's API. If you use PostNL, map it to TNT in ERP2MARKET. Using POSTNL or another variation will cause tracking push failures.Step 8 — Test order and go live
Run a test order before activating live sync
Bol.com doesn't have a dedicated sandbox environment for sellers, so testing requires a real order. Use a low-value product (under €5) and order it yourself from a second account, or ask a colleague to place the order.
Verify each step:
- Order appears in ERP2MARKET's import queue within 15 minutes
- Odoo sale order created with the correct product (matched by EAN), quantity and price
- Fiscal position applied correctly (NL BTW or BE BTW)
- Delivery order generated in Odoo
- Validate the delivery in Odoo with a test tracking number
- Verify the tracking number appears on the Bol.com order in Seller Dashboard within a few minutes
- Check that Odoo stock reduced and new stock level pushed to Bol.com listing
- Bol.com API credentials connected and test passed
- LVB and/or FBB mode selected correctly
- EANs set on all active Bol.com products in Odoo (no duplicates)
- Fiscal positions configured for NL and BE
- Stock sync active — correct Odoo location selected (FBB only)
- Carrier codes mapped for all carriers used for Bol.com orders
- Test order imported correctly with correct EAN match and fiscal position
- Test tracking pushed to Bol.com order successfully
- Stock level updated on Bol.com listing after test delivery
Bol.com-specific mistakes to avoid
1. EANs not set (or wrong) in Odoo
The most common Bol.com integration problem. If your Odoo product doesn't have an EAN set — or has the wrong EAN — orders come in and ERP2MARKET can't match them to a product. The order is flagged for review, but it delays fulfilment. Audit all your active Bol.com EANs against your Odoo product records before going live.
2. PostNL mapped to wrong transporter code
As noted above, Bol.com uses TNT for PostNL. Mapping to any other code causes tracking push failures — Bol.com rejects the update. This is one of the most-reported issues from new Bol.com integrations.
3. LVB stock sync enabled
LVB (Bol.com-fulfilled) stock is managed by Bol.com's fulfilment centres, not your Odoo warehouse. Don't enable stock sync for LVB listings — it will overwrite Bol.com's actual fulfilment inventory with your Odoo warehouse stock, causing incorrect stock levels on LVB listings. Stock sync should only be active for FBB listings.
4. Delivery promise not met — Bol.com penalty
Bol.com is strict about delivery promise adherence. When a buyer selects a delivery option (tomorrow, within 2 days, etc.), Bol.com expects the seller to ship by the cut-off time to meet that promise. Make sure your Odoo pick/pack/ship process can meet Bol.com's shipping cut-off times — typically 15:00–17:00 for next-day delivery to NL.
5. Not activating Bol.com Belgium separately
Bol.com NL and Bol.com BE are separate storefronts in the API, but use the same credentials. Many sellers configure only NL and miss Belgian orders — which arrive from a different API endpoint. Make sure both NL and BE are activated in your ERP2MARKET Bol.com connection if you sell to Belgian buyers.
Selling on Bol.com Belgium — what's different
Bol.com Belgium (bol.com/be) is a growing marketplace with a separate Belgian buyer audience. The integration setup is the same as Bol.com NL, but there are a few Belgium-specific considerations:
- Language: Belgian buyers may receive communications in Dutch (Flemish) or French. Bol.com handles buyer communication language — this doesn't affect your Odoo integration.
- Belgian VAT: Belgian B2C orders use Belgian BTW at 21% (standard) or 6% (reduced rate for certain categories). Configure a Belgium B2C fiscal position in Odoo as described in Step 5.
- bpost carrier: For Belgian domestic deliveries, bpost is the primary carrier. Map bpost to Bol.com's
BPOST_BEtransporter code in ERP2MARKET. - Separate seller performance metrics: Bol.com tracks seller performance separately for NL and BE. Belgian buyer satisfaction, tracking rate, and cancellation rate are measured independently.