---
title: Bol.com API Integration on Truto
slug: bol
category: E-Commerce
canonical: "https://truto.one/integrations/detail/bol/"
---

# Bol.com API Integration on Truto



**Category:** E-Commerce  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 72 tools for Bol.com that AI agents can call directly.

- **bol_com_retailer_commissions_bulk_get** — Get bol commissions and possible reductions for many products in bulk by EAN, price, and optionally condition. Returns: id, resources, url, subscriptionType. Requires a request body with the product EANs and prices.
- **bol_com_retailer_commissions_bulk_list** — Get commission rates for multiple EANs in bulk (BETA). Returns a multi-status result with id, resources, url, and subscriptionType, mixing successful and unsuccessful per-EAN outcomes. Requires a request body listing the EANs to query.
- **list_all_bol_com_retailer_commissions** — Get the bol commission and possible reductions for a single product by EAN at a given price. Returns a commission result with id and vendor-defined commission attributes. Required: ean, unit-price.
- **list_all_bol_com_insights_offers** — Get offer insights for a bol offer: the product visits and buy box percentage grouped over a historical period. Returns the OfferInsights response (id, attributes; the full field shape is defined by the upstream OfferInsights schema). Required: offer-id, period, number-of-periods, name. Maximum periods back in time: 730 for DAY, 104 for WEEK, 24 for MONTH.
- **list_all_bol_com_performance_indicators** — Get the weekly measurements for your bol performance indicators. Returns the PerformanceIndicators response for the requested indicator, year, and week, with fields defined by bol's Retailer API schema. Required: name (indicator type such as CANCELLATIONS or REVIEWS), year, week (ISO-8601). Current-week measurements can change heavily during the week.
- **list_all_bol_com_insights_product_ranks** — List product ranks on bol for a specific product EAN and date. Returns the ProductRanks payload (attributes) with the product's rank entries for the requested search type. Required: ean, date. The date must be in the past, no more than three months back and up to yesterday.
- **list_all_bol_com_insights_sales_forecasts** — Get the bol sales forecast estimating expected sales on the total bol.com platform for the requested number of weeks ahead. Returns the sales forecast response object defined by the bol SalesForecastResponse schema. Required: offer-id, weeks-ahead (between 1 and 12).
- **list_all_bol_com_insights_search_terms** — Get search terms — retrieve the search volume for a specified search term on bol.com over a chosen period range, to optimize product content, spot assortment opportunities, and analyze trends. Returns the search volume data for the requested term and periods. Requires search-term, period (DAY, WEEK, or MONTH), and number-of-periods; pass related-search-terms to also include related search terms.
- **list_all_bol_com_retailer_inventories** — List your fulfilment by bol.com (FBB/LVB) inventory in a paginated feed; this endpoint does not cover your own stock. Returns inventory records including the regularStock details for each item. Page size is 50.
- **list_all_bol_com_retailer_invoices** — List bol retailer invoices, by default from the past 4 weeks, or supply an optional date range of at most 31 days using period-start-date and period-end-date. Returns the raw invoice list document for download; available media types are listed per invoice in the document.
- **get_single_bol_com_retailer_invoice_by_id** — Download a single bol retailer invoice by id, returned in the media format offered for that invoice (JSON or PDF). The available media types differ per invoice and are listed in the invoice list response. Required: id.
- **get_single_bol_com_invoice_specification_by_id** — Get the specification for a bol invoice by id, including a paginated list of its transactions. Returns the specification file with content-type-specific fields, delivered as JSON or XLSX depending on the media types listed for the invoice. Required: id.
- **create_a_bol_com_retailer_offer** — Create a new offer in bol for an EAN and add it to the retailer's catalog. Requires ean, condition (name), pricing.bundlePrices (one entry with quantity 1), stock (amount, managedByRetailer) and fulfilment (method FBR or FBB; deliveryCode for FBR). Processing is asynchronous: returns a 202 process status with processStatusId, entityId, eventType, description, status, createTimestamp and links; poll the process status to confirm the offer was created and published. Required: ean, condition, pricing, stock, fulfilment.
- **get_single_bol_com_retailer_offer_by_id** — Retrieve a single bol offer by its offer id. Returns: offerId, ean, reference, onHoldByRetailer, economicOperatorId, unknownProductTitle, pricing (bundlePrices with quantity and unitPrice), stock (amount, correctedStock, managedByRetailer), fulfilment (method, deliveryCode, profileId), store (productTitle, visible countries), condition (name, category, comment) and notPublishableReasons. Required: id.
- **update_a_bol_com_retailer_offer_by_id** — Update an existing bol offer by offer id. Only fulfilment (method, deliveryCode, profileId), reference, onHoldByRetailer, economicOperatorId and unknownProductTitle can be changed here; use offer_prices.bulk_update and offer_stocks.bulk_update for price and stock. Processing is asynchronous: returns a 202 process status with processStatusId, entityId, eventType, status, createTimestamp and links. Required: id, fulfilment.
- **delete_a_bol_com_retailer_offer_by_id** — Delete a bol offer by offer id, removing it from the catalog. Processing is asynchronous: returns a 202 process status with processStatusId, entityId, eventType, status, createTimestamp and links; poll the process status to confirm deletion. Required: id.
- **create_a_bol_com_offers_export** — Request an offer export file containing all of a retailer's offers in bol. The export is generated asynchronously — Returns a process status object with processStatusId, eventType, description, status, createTimestamp, and links to track the request. Requires a CreateOfferExportRequest JSON body.
- **get_single_bol_com_offers_export_by_id** — Retrieve an offer export file by report id in bol. Returns the offer export file itself as a CSV (comma separated values) document containing all offers — a raw file download, not a JSON object. Required: id (the unique identifier of the offer export file).
- **create_a_bol_com_offers_unpublished** — Request an unpublished offer report from bol, asynchronously generating a file of all unpublished offers with their reasons. Returns a process status object including processStatusId, eventType, and status for polling. Processing is asynchronous (202 Accepted).
- **get_single_bol_com_offers_unpublished_by_id** — Retrieve an unpublished offer report from bol by report id, containing all unpublished offers and the reasons they are not published; the report is delivered as a CSV file. Required: id (the unpublished offer report id).
- **bol_com_offer_prices_bulk_update** — Update price(s) for a bol offer by id. Returns a process status for the asynchronously scheduled update, including processStatusId, entityId, eventType, status, createTimestamp, and links. Required: offer_id and a price payload.
- **bol_com_offer_stocks_bulk_update** — Update the stock of an offer in bol by id. The stock update is scheduled for asynchronous processing and returns a process status object including processStatusId, eventType, status, and createTimestamp. Required: offer_id and a stock update body.
- **list_all_bol_com_retailer_orders** — List bol retailer orders in a paginated feed (50 per page). Returns: orders (each reduced order carrying its orderId). No parameters are required; results default to open (OPEN) orders fulfilled by the retailer (FBR).
- **get_single_bol_com_retailer_order_by_id** — Get a single bol order by id, including the quantities of shipped or cancelled items when the order is partially shipped or cancelled. Returns: orderId. Required: id (the bol order id).
- **bol_com_orders_cancellations_bulk_update** — Cancel an order item in bol, either to confirm a customer's cancellation request or to cancel an item you are unable to fulfil. Returns a ProcessStatus object including processStatusId, entityId, eventType, status, createTimestamp, and links. Requires a CancellationRequest request body; the request is scheduled for asynchronous processing (202 Accepted).
- **list_all_bol_com_products_categories** — List the available bol product categories together with their subcategories. Returns category records with their id; the remaining record fields are defined by bol's ProductCategoriesResponse schema and are not enumerated in the available documentation. Categories are returned in Dutch by default.
- **list_all_bol_com_products_lists** — List bol products matching a category, search term, or filters. Returns the list of matching products as reported by bol. Search criteria are supplied in the required JSON request body.
- **list_all_bol_com_products_list_filters** — Get the product list filters available in bol for a given category or search term. Returns the product list filters payload with category- and filter-specific fields. Required: productListFiltersRequest.
- **list_all_bol_com_product_assets** — List the assets available for a bol product by EAN. Returns: assets — the collection of assets for the product, with each asset's fields as defined by the upstream bol Retailer API v10 schema. Required: ean.
- **list_all_bol_com_product_offers** — List the competing offers available in the bol webshop for a product EAN, including offers from all retailers. Returns each offer with id, condition, and remaining offer attributes. Required: ean. Pages hold 50 items.
- **list_all_bol_com_product_placements** — Get the product placement for a product by EAN in bol. Returns the list of categories and the URL where the product is placed in the webshop. Required: ean.
- **list_all_bol_com_product_price_star_boundaries** — Get all price star boundaries for a specific product in bol by its EAN. Returns the PriceStarBoundaries response object whose fields are defined by the bol Retailer API v10 schema (not enumerated in the available documentation). Required: ean.
- **list_all_bol_com_product_product_ids** — Get the bol.com specific product identifier and the related EANs for a product by EAN. Returns: productId, eans. Required: ean.
- **list_all_bol_com_product_ratings** — Get product ratings in bol for the products associated with a given EAN. Returns: attributes (generic object; the ratings payload's field shape is defined by bol's ProductRatingsResponse schema). Required: ean.
- **list_all_bol_com_retailer_promotions** — List bol promotions for the retailer. Returns promotion records with their id. Required: promotion-type (AWARENESS or PRICE_OFF). Max 50 items per page.
- **get_single_bol_com_retailer_promotion_by_id** — Get a single bol promotion by id. Returns the promotion including its id. Required: id.
- **list_all_bol_com_promotion_products** — List the products included in a bol promotion by promotion id. Returns: products. Required: promotion_id. Paginated with a page size of 50 items per page.
- **list_all_bol_com_retailer_replenishments** — List bol replenishments. Returns each replenishment's id and its attributes (record fields are defined in the upstream ReplenishmentsResponse schema of the bol Retailer API v10).
- **create_a_bol_com_retailer_replenishment** — Create a replenishment in bol. Requires the replenishment request body (fields defined in the upstream CreateReplenishmentRequest schema). Returns an asynchronous process status with processStatusId, eventType, status, createTimestamp, entityId, and links.
- **get_single_bol_com_retailer_replenishment_by_id** — Get a bol replenishment by id. Returns the replenishment record with its id and attributes (record fields are defined in the upstream ReplenishmentResponse schema). Required: id.
- **update_a_bol_com_retailer_replenishment_by_id** — Update a bol replenishment by id. Requires the update request body (fields defined in the upstream UpdateReplenishmentRequest schema). Returns an asynchronous process status with processStatusId, eventType, status, createTimestamp, entityId, and links. Required: id.
- **list_all_bol_com_replenishments_delivery_dates** — List the available delivery dates for a bol replenishment. Returns a DeliveryDatesResponse payload whose per-date fields are schema-specific to bol's Retailer API v10 and not enumerated in the discovered source; consult bol's v10 API reference for the field-level breakdown. No required parameters.
- **create_a_bol_com_replenishments_pickup_time_slot** — Retrieve available pickup time slots for a bol replenishment. Returns the pickup time slots response (upstream PickupTimeSlotsResponse schema); the source docs do not enumerate its individual fields. Requires a request body matching the PickupTimeSlotsRequest schema.
- **create_a_bol_com_replenishments_product_destination** — Request product destinations by EAN in bol. Schedules the request asynchronously and returns a 202 process status including processStatusId, eventType, description, status, createTimestamp, and links — poll the process status endpoint with processStatusId for completion. Requires a JSON body with the EANs to request destinations for.
- **get_single_bol_com_replenishments_product_destination_by_id** — Get the product destinations for one or more products in bol by product destinations id. Returns the product-destinations record including its id and attributes with the destination details for the requested products. Required: id.
- **create_a_bol_com_replenishments_product_label** — Retrieve product labels in bol by posting a product label request. Returns the printable labels as a PDF document. Requires a ProductLabelsRequest JSON body.
- **list_all_bol_com_replenishment_load_carrier_labels** — Get the load carrier labels for a replenishment in bol. Returns the labels as a printable PDF document (binary content). Required: replenishment_id.
- **list_all_bol_com_replenishment_pick_lists** — Get the pick list PDF for a bol replenishment by id. Returns the pick list as a binary PDF document (content type application/vnd.retailer.v10+pdf), not a JSON object. Required: replenishment_id.
- **get_single_bol_com_retailer_by_id** — Get information about a single bol retailer by id — pass a retailer id, or 'current' to retrieve details for your own retailer account. Returns the retailer information record, including id. Required: id.
- **list_all_bol_com_retailer_returns** — List bol retailer returns as a paginated collection with 50 returns per page; handled returns are sorted by date in descending order, unhandled returns in ascending order. Returns: id.
- **create_a_bol_com_retailer_return** — Create a bol retailer return and automatically handle it with the provided handling result. Returns the process status including processStatusId, status, createTimestamp, and links; the resulting return id is provided in the process status entityId. Requires a request body (CreateReturnRequest). Processing is asynchronous.
- **get_single_bol_com_retailer_return_by_id** — Get a single bol retailer return by id. Returns: id. Required: id.
- **update_a_bol_com_retailer_return_by_id** — Handle a bol retailer return by id — either handle an open return or change the handlingResult of an already handled one. Returns the process status including processStatusId, status, createTimestamp, and links. Required: id (the integer RMA identifier — rma-id upstream) and handlingResult. Processing is asynchronous.
- **list_all_bol_com_retailer_shipments** — List your bol shipments up to 3 months old, sorted by date in descending order. Filter by fulfilment-method (FBR or FBB) or order-id. Returns shipment records with id and shipment-specific attributes. Max 50 per page.
- **create_a_bol_com_retailer_shipment** — Create a bol shipment for one or more order items of a customer order: supply shippingLabelId of a purchased shipping label (leaving transport empty), or omit shippingLabelId and fill in transport with the fields from GET shipping labels — the two are mutually exclusive. Returns an async ProcessStatus with processStatusId, eventType, description, status, createTimestamp, and links to poll for the…
- **get_single_bol_com_retailer_shipment_by_id** — Get a single bol shipment by id. Returns the shipment's id and its shipment-specific attributes object, including transport information. Required: id.
- **list_all_bol_com_invoices_requests** — List paginated invoice requests initiated by customers in bol. Returns each invoice request with its id and attributes (item fields — including the request's state, e.g. OPEN or UPLOAD_ERROR — are defined by bol's InvoiceRequestsResponse schema).
- **create_a_bol_com_shipments_invoice** — Upload an invoice file for a bol shipment. Returns a process status object including processStatusId, eventType, description, status, createTimestamp, and links for polling. Required: invoice_id (the id of the shipment associated with the invoice) and invoice (the invoice file). The upload is processed asynchronously and must be sent as multipart/form-data.
- **create_a_bol_com_retailer_shipping_label** — Create a shipping label in bol using a shipping label offer id obtained from the get delivery options endpoint. Returns the process status of the asynchronous create request, including processStatusId, eventType, status, createTimestamp, and links. Processing is asynchronous — poll the process status endpoint to confirm completion.
- **get_single_bol_com_retailer_shipping_label_by_id** — Get a shipping label PDF from bol by id. Returns the label document as binary data (label_data), with label metadata delivered as response headers: track-and-trace code and transporter code. Required: id (the shipping label id). Send a HEAD request if you only need the metadata headers without the label data.
- **get_single_bol_com_shipping_labels_delivery_option_by_id** — Get all available delivery options in bol for a supplied configuration of order items that has to be shipped. Returns the delivery options payload (DeliveryOptionsResponse), from which a shipping label offer id is taken to create a shipping label. Required: a delivery options request body describing the order items to ship.
- **list_all_bol_com_retailer_subscriptions** — List all bol event notification subscriptions configured for the retailer, including their event types and destination (a webhook URL or a GCP Pub/Sub topic). Returns: id, resources, url, subscriptionType, enabled.
- **create_a_bol_com_retailer_subscription** — Create a bol event notification subscription for one or more event types, delivered either to a URL (WEBHOOK) or a topic name (GCP_PUBSUB). Returns a process status object with processStatusId, eventType, description, status, createTimestamp, and links; processing is asynchronous. Required: resources, url, subscriptionType.
- **get_single_bol_com_retailer_subscription_by_id** — Get a single bol event notification subscription by id, including its event types and destination (a webhook URL or GCP Pub/Sub topic). Returns: id, resources, url, subscriptionType, enabled. Required: id.
- **update_a_bol_com_retailer_subscription_by_id** — Update the event types and/or destination of a bol event notification subscription by id; the destination can be a URL (WEBHOOK) or a topic name (GCP_PUBSUB). Returns a process status object with processStatusId, entityId, eventType, status, createTimestamp, and links; processing is asynchronous. Required: id, resources, url, subscriptionType.
- **delete_a_bol_com_retailer_subscription_by_id** — Delete a bol event notification subscription by id. Returns a process status object with processStatusId, eventType, description, status, createTimestamp, and links; the deletion is processed asynchronously. Required: id.
- **list_all_bol_com_subscriptions_signature_keys** — Retrieve the public keys used to validate the signature header of push notifications received from bol.com. Returns the key set containing the signing keys for push notification validation.
- **create_a_bol_com_subscriptions_test** — Send a test push notification for a bol event notification subscription to verify the configured endpoints are working. The request is scheduled asynchronously and returns the process status object including processStatusId, eventType, status, and createTimestamp. Required: subscription_id.
- **update_a_bol_com_retailer_transport_by_id** — Add transport information to an existing transport in bol by id, which you can retrieve from the shipment list. Returns the process status for the scheduled change, including processStatusId, eventType, status, createTimestamp, and links. Required: id. The change is processed asynchronously.
- **list_all_bol_com_shared_process_status** — List bol process statuses for previously executed PUT/POST/DELETE requests, in descending order, by supplying an entity id and event type. Returns: description, status, links, content. Pages hold 50 items; statuses are retained for a limited period only. Required: entity_id, event_type.
- **bol_com_shared_process_status_bulk_get** — Get the status of multiple bol asynchronous processes in one call by supplying an array of process status ids. Returns: processStatusId, entityId, eventType, status, createTimestamp, links. Statuses are only retained for a limited period after completion. Required: processStatusQueries.
- **get_single_bol_com_shared_process_status_by_id** — Get a single bol process status by id, showing the outcome of a previously executed PUT/POST/DELETE request. Returns: description, status, links, content. Statuses are only retained for a limited period; afterwards a 404 is returned. Required: id.

## How it works

1. **Link your customer's Bol.com account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Bol.com.** The Proxy API is a 1-to-1 mapping of the Bol.com API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Multichannel Catalog & Feed Management** — Let sellers push and maintain their product offers on Bol.com from your feed management platform, with async price and stock updates confirmed via process status polling so users always know when changes are live.
- **Order & Shipment Automation for OMS/ERP** — Pull open FBR orders in near real-time via subscriptions, generate Bol.com shipping labels, and push back tax invoices — giving your OMS or ERP users a fully automated Bol.com fulfillment lane.
- **Margin-Aware Dynamic Repricing** — Combine competitor offer data and Bol's commission structures to reprice profitably, then execute bulk price updates without your users ever leaving your repricing tool.
- **FBB Replenishment Planning** — Use Bol's sales forecasts and inventory data to auto-draft replenishment orders, book pickup slots, and generate load carrier and product labels — turning your inventory SaaS into a hands-off FBB planner.
- **Unified Returns & Support Workflows** — Surface Bol.com returns inside your helpdesk so agents can accept or reject RMAs without switching to the seller portal, keeping the customer conversation and resolution in one place.

## What you can build

- **Async Offer Publishing with Status Tracking** — Create, update, and delete Bol.com offers and surface real-time publish status by polling the shared process status endpoints so users see confirmed results, not queued promises.
- **Bulk Price & Stock Sync Engine** — Push large-scale price and stock changes through Bol's bulk update endpoints and expose per-item success states back into your UI.
- **Webhook-Driven Order Ingestion** — Provision Bol.com subscriptions on behalf of your users to receive push notifications for new orders, returns, and shipments instead of polling.
- **Native Shipping Label Purchase Flow** — Evaluate delivery options, buy Bol.com shipping labels, and retrieve the printable PDF directly inside your fulfillment workflow.
- **Commission-Aware Margin Calculator** — Query Bol's commission structures per EAN and price point to display true net margin before a user confirms a repricing action.
- **FBB Replenishment Orchestrator** — Create replenishment orders, look up delivery dates, book pickup time slots, and generate product and load carrier labels end-to-end from your app.

## FAQs

### How does authentication with Bol.com work through Truto?

Bol.com uses OAuth 2.0 client credentials issued from the seller's Retailer portal. Truto handles the token exchange and refresh lifecycle so your users only supply credentials once during connection.

### How do we handle Bol.com's asynchronous API model?

Most write operations (offer create/update, price and stock bulk updates, order cancellations, returns handling, replenishments) return a processStatusId. Truto exposes list_all_bol_com_shared_process_status and bol_com_shared_process_status_bulk_get so you can poll and confirm the actual outcome before reporting success to your users.

### Can we receive real-time events instead of polling?

Yes. You can programmatically create Bol.com retailer subscriptions (webhooks or GCP Pub/Sub) for events like new orders, shipments, and returns, and manage the signature keys and test payloads via the subscription endpoints.

### What order and fulfillment operations are supported?

You can list and retrieve retailer orders, bulk cancel order items, create shipments, purchase Bol.com shipping labels, retrieve label PDFs, evaluate delivery options, and upload shipment invoices.

### Does the integration cover FBB (Fulfilment by Bol) workflows?

Yes. Truto exposes replenishment creation and updates, delivery date lookups, pickup time slot booking, product destinations, product labels, load carrier labels, and pick lists for full FBB automation.

### What insights data can we pull for analytics or repricing?

You can access offer insights (including Buy Box performance), performance indicators, product ranks, sales forecasts, and search term volumes — plus competitor product offers and commission structures for margin calculations.

## Related reading

- [Connect Bol.com to ChatGPT: Manage Orders, Offers, and Pricing](https://truto.one/blog/connect-bol-com-to-chatgpt-manage-orders-offers-and-pricing/) — Learn how to connect Bol.com to ChatGPT using an MCP server. Automate asynchronous order fulfillment, bulk price updates, and offer management with AI.
- [Connect Bol.com to Claude: Forecast Sales and Optimize Performance](https://truto.one/blog/connect-bol-com-to-claude-forecast-sales-and-optimize-performance/) — Give Claude secure read and write access to the Bol.com Retailer API. Learn how to generate a managed MCP server to forecast sales and automate e-commerce operations.
- [Connect Bol.com to AI Agents: Automate Logistics and Invoicing](https://truto.one/blog/connect-bol-com-to-ai-agents-automate-logistics-and-invoicing/) — Learn how to connect Bol.com to AI agents using Truto's /tools endpoint. Automate order fulfillment, dynamic pricing, and RMA handling with LangChain.
