Skip to main content

bol.com

The bol.com connector turns every shipped business order on a bol shop into a Peppol e-invoice and uploads the invoice PDF back onto the bol shipment. It exists because of a gap: since 1 January 2026 a Belgian seller owes every Belgian VAT-registered business buyer a structured e-invoice over Peppol, bol flags business orders and exposes the buyer's VAT or enterprise number โ€” and offers no way to issue the invoice. bol only asks the seller to upload a PDF per shipment, within 24 hours when the customer requests one.

The connector is a pull connector (connector_type bol): GoRoute holds the shop's Retailer API credentials and reads orders, shipments and invoice requests every few minutes. Nothing is installed on bol's side.

Availabilityโ€‹

bol.com is switched on per organisation, and the connector is new (September 2026). Two checks before you plan work around it:

  • Confirm it is offered to you. Open Connectors in GoRoute and look for the bol.com card. If that card โ€” or the Connectors entry itself โ€” is not there, the connector is not switched on for your organisation: ask us to switch it on. The same check from the API side is POST /api/v1/connectors with "connector_type": "bol"; an answer of 400 reading Unknown connector_type 'bol' means the service you reach does not offer this connector yet.
  • Run your first cycle against bol's demo environment. The demo environment box described under Connect points the connector at bol's retailer-demo API โ€” real credentials, fixed demo data, uploads accepted and discarded. Watch a cycle there before pointing the connector at a live shop and real buyers.

Who it is forโ€‹

A seller registered in Belgium or the Netherlands, with that identifier registered under Participants in GoRoute (the enterprise number under 0208 for Belgium, the KVK number under 0106 for the Netherlands). A seller registered anywhere else is told so and nothing is pulled.

Buyers are the shop's Belgian and Dutch business customers. A business buyer in another country is held with a reason (see below) rather than guessed at.

Connectโ€‹

  1. In the bol seller dashboard open Settings โ†’ Services โ†’ API settings and create Retailer API credentials. bol shows a client id and a client secret once.
  2. In GoRoute open Connectors โ†’ bol.com, paste the pair, state the VAT rate the shop charges (bol gives prices including VAT and no rate โ€” 21 % is the standard rate in both countries) and, if you like, the invoice number prefix (default BOL-).
  3. Press Connect. GoRoute proves the credentials against bol's API before saving them, encrypted. The credentials are never shown again.

There is no seller form: invoices issue under the organisation's own identifier and the saved company settings, exactly as the storefront apps do. Nothing is sent until that identifier is registered on the network โ€” the connector says so, and syncing resumes on its own once it is.

The demo environment box points the connector at bol's retailer-demo API instead of the live shop: fixed sample orders, uploads accepted and discarded, real credentials still required. Use it to watch the flow before connecting a live shop.

To change the VAT rate or the prefix later, disconnect and connect again. Disconnecting deletes the credentials and every register below.

What gets invoicedโ€‹

OrderWhat happens
Business order (the buyer gave a VAT or KVK/enterprise number), shippedOne Peppol invoice, then the PDF onto every shipment of the order
Business order, not yet shippedWaits in a register and is invoiced once the last item has shipped โ€” a split order gets its invoice when the last shipment goes, and one PDF per shipment
Consumer order (no number given โ€” a company name alone does not count)Nothing. Consumers are not e-invoiced
Cancelled orderNothing

An order is a business order because the buyer typed a number at checkout; bol has no separate flag. Each order becomes exactly one invoice, numbered prefix + bol order id, and a repeat of the same order is answered with the invoice already filed rather than a second one.

The invoice. Buyer name, address and numbers as bol gave them; the enterprise number under 0208 for a Belgian buyer, the KVK number under 0106 (or the VAT number under 9944) for a Dutch buyer. One line per order item at the net price โ€” bol's price divided by the stated VAT rate โ€” with cancelled quantities left out, bol discounts as line allowances, the EAN as the item's GTIN and the offer reference as the seller's item id. The buyer's own order reference (or the bol order id) as the buyer reference, the shipment date as the delivery date, EUR, and a note that the order was paid through bol.com.

The PDF. After the invoice is on the network, GoRoute renders its PDF and uploads it to each shipment with bol's own invoice upload. bol accepts PDF only, 2 MB at most, one per shipment, and settles the upload asynchronously; GoRoute reads the outcome back. An upload bol keeps refusing is tried six times and then reported on the connector page with bol's reason, so it can be uploaded by hand.

Invoice requests. Every cycle also reads the requests customers have opened in their bol account. A request for an order already invoiced gets the PDF on that shipment; a request for a business order the connector has not seen (placed before the shop was connected, say) is read and invoiced; a request from a consumer is counted and shown on the connector page โ€” those are for a person to answer in the bol seller dashboard.

Held orders and their reasonsโ€‹

An order that cannot be invoiced is held โ€” parked on the connector with a reason, listed on the connector page and in held invoices โ€” and never blocks the orders behind it. Reasons you will see:

ReasonWhat to do
โ€ฆ cannot receive e-invoices yet. Belgium retired the Hermes SMP โ€ฆThe buyer has not appointed a Peppol provider. GoRoute asks the network again every quarter of an hour and sends as soon as they appear. If they will not join, invoice by hand and upload the PDF in the bol dashboard
โ€ฆ gave 'X' as its VAT / enterprise number โ€ฆ, which is not a Belgian enterprise numberThe buyer mistyped the number. Ask them for the right one, or invoice by hand
โ€ฆ's enterprise number โ€ฆ is not valid: โ€ฆ check digitSame โ€” the number fails Belgium's mod-97 check, which Peppol enforces
โ€ฆ is billed in DE. This connector issues e-invoices to Belgian and Dutch business buyers onlyInvoice that order by hand
โ€ฆ could not be processed because of an error on GoRoute's sideOurs. Retried automatically; nothing to do

A held order is re-read from bol when it is retried, so a correction on bol's side is picked up without anyone pressing anything.

What the connector page showsโ€‹

  • Connected / on hold โ€” and, on hold, why: the seller's identifier is not registered yet, or the seller is not Belgian or Dutch.
  • Orders waiting to ship โ€” the register of business orders seen and not yet shipped.
  • Orders needing attention โ€” the held list, with reasons.
  • One line for anything else a person must act on: bol could not be reached (the connector then backs off, from 30 seconds to ten minutes, instead of dialling every cycle), a PDF bol keeps refusing, or invoice requests from consumers.

Sync now runs a cycle immediately. Otherwise the shop is read every five minutes, well inside bol's rate limits (the order list allows 25 reads a minute; each cycle makes one, plus one detail read per new order).

Limits worth knowingโ€‹

  • GoRoute is an unlisted integration partner, by bol's own definition. The seller creates the credentials in Seller Dashboard, names GoRoute as the third party and pastes them here; nothing is registered with bol. bol's listed-integrator programme (OAuth sign-in instead of pasted credentials, a place on the partner platform) is out of reach for now: its lowest label, Ambassador, requires five bol sellers connected for at least six months, offer and content management and single sign-on, and applications are read twice a year. Invoicing is one of bol's seven "specific services" (VAT invoice upload), so the connector counts towards a label once the seller numbers exist.

  • One VAT rate per shop. bol carries no rate, so every line is issued at the rate stated on the connector. A shop selling reduced-rate goods through bol needs a per-item rate bol does not provide โ€” tell us before connecting such a shop.

  • Totals may differ from bol by a cent. Net prices are derived from bol's VAT-inclusive prices and the network recomputes the totals; a rounding cent between the two is possible on a line with many units.

  • bol keeps three months of orders and removes the buyer's billing details after a month. An order that waits longer than that to ship, or is only requested after that, cannot be invoiced from bol's data.

  • Credit notes are not raised for returns or refunds through bol. Issue those in GoRoute directly.

  • The PDF uploaded to bol is GoRoute's English rendering of the invoice.

APIโ€‹

The connector uses the shared lifecycle endpoints; the connect body is described under Connector API โ†’ bol.com.

What was verified against bol's documentationโ€‹

Written against the Retailer API v10 as bol publishes it (2026-09-24): the OpenAPI document behind the ReDoc reference, the Orders and shipments and Customer invoices functional pages, Authentication, Best practices, Conventions, Rate limits and the published limit list, and the demo pages for orders and shipments. In particular: client-credentials tokens live 299 seconds and must be reused; GET /retailer/orders lists 50 orders a page, newest placement first, filtered by status and fulfilment-method; billingDetails on the order carry company, vatNumber and kvkNumber (the KVK number in the Netherlands, the enterprise number in Belgium) and no business flag; prices include VAT with no rate; POST /retailer/shipments/invoices/{shipment-id} takes one multipart invoice field, PDF, 2 MB, one per shipment, and answers 202 with a process status; GET /retailer/shipments/invoices/requests?state=OPEN lists what customers are waiting for.