How to Integrate Kuehne+Nagel's BookingRoad API

Step-by-step guide to connecting your TMS to Kuehne+Nagel's BookingRoad API: prerequisites, auth, booking payloads, and error handling.

What You're Building and Why API Beats Email or Portal Entry

If your team still places Kuehne+Nagel road freight bookings by emailing the local branch or re-keying shipment details into myKN one at a time, you already know where this breaks down. It works for a handful of lanes. It falls apart once you're running dozens of weekly road shipments across multiple countries, because every manual entry is a chance for a wrong postcode, a missed pickup window, or a booking that simply never gets sent. A Kuehne+Nagel API integration against the BookingRoad service fixes that by letting your TMS or ERP submit bookings directly into K+N's systems, the same way the carrier's own Air booking API lets customers place a booking request with all necessary shipment and cargo details straight into Kuehne+Nagel's operational systems. The road equivalent, documented on the K+N API Developer Portal as BookingRoad, works on the same principle.

This guide walks through getting a working connection to BookingRoad, including where it will reject you and why, and where EDI still has to carry the weight API can't. Some shippers build this connection carrier by carrier. Others standardize on a TMS layer like Cargoson, nShift, or similar platforms that normalize booking integrations across K+N, DHL, GLS and DPD so that onboarding the next forwarder isn't a fresh development project. Either path is legitimate. This post is for the team doing it directly.

Before You Start: What You Need

BookingRoad isn't a self-serve API you can sign up for with a credit card. Access runs through your commercial relationship with K+N. Here's what has to be in place before you write a line of integration code:

  1. A live commercial contract with Kuehne+Nagel and an active myKN account. The developer portal's own third-party documentation confirms that a myKN account, a Kuehne+Nagel customer ID (CID) and an account manager who completes the "customer setup" are stated pre-requisites, so nobody outside a commercial relationship can call the gateway.
  2. Access to the API Developer Portal itself, which K+N describes as a centralized platform that enables customers to browse, and then apply, services directly to their own systems, and is the secure single point of contact for any details related to our API services, whether it be to request access or to establish an API connection.
  3. A sandbox or test subscription approved by your account manager before you get anywhere near production credentials. K+N publishes the OpenAPI definitions openly, but the subscription key behind them is not open.
  4. An internal field mapping exercise done in advance: shipper and consignee party data, Incoterm, pickup and delivery windows, goods description, weight and volume, and dangerous goods flags if any lane needs them. Do this on paper before you touch the API, not while debugging a 400 error.
  5. A fallback decision already made. Not every country or service K+N offers is exposed via API yet. If BookingRoad doesn't cover a lane you need, you'll fall back to the EDI "Transport order Inbound" channel rather than stall the project.

Registering, Authenticating, and Placing Your First Booking

Once the contractual prerequisites are met, the technical work follows a fairly standard pattern for a WSO2-based API gateway, with one catch: K+N runs more than one gateway, and they don't all authenticate the same way.

  1. Request API access through your account manager. This is the step people skip and then wonder why their developer portal registration stalls. There's no public signup form that grants you a working subscription. Your account manager has to complete the customer setup on K+N's side first, tying your CID to the API product.
  2. Subscribe to BookingRoad in the sandbox environment. In the developer portal, BookingRoad is listed with its own version and context path, v1, /booking/road, which resolves to the base endpoint https://gateway.api.kuehne-nagel.com/booking/road/v1. The API itself is described as a service for consumers to book road shipments, with master-data category lookups and a document upload operation alongside booking creation. Credentials are issued per environment, so your sandbox key will not work against production and vice versa.
  3. Authenticate, and confirm which pattern applies to your subscription. The modern WSO2 gateway products (BookingRoad, BookingAir, ShipmentTracking) generally use a subscription key or OAuth2 client credentials passed in the Authorization header. But K+N also runs an older product line, LTL+, with a completely different model: instead of a token exchange, you request an AuthenticationID from K+N's helpdesk, and you must provide the following information to our helpdesk to request an AuthenticationID for your organization, which is used in most POST endpoints. That ID then travels inside the JSON body of every request alongside a username and client code, not in a header. If you're building against BookingRoad specifically, you shouldn't hit this pattern, but confirm with your onboarding contact which product and which auth model you've actually been subscribed to before you assume one or the other.
  4. Submit a test booking payload. Populate the mandatory fields you mapped in step 5 of the prerequisites: your internal reference, full pickup and delivery addresses, cargo lines with weight and volume, and requested dates. A successful call should return a K+N booking reference in the response body, not just an HTTP 200. Store that reference immediately.
  5. Set up status retrieval. K+N's connectivity catalog lists separate outbound products for this: Book Road Inbound to Kuehne+Nagel allows you to electronically place roadfreight bookings, while on the output side Document search Outbound from Kuehne+Nagel enables upload for shipment and booking related documents. Poll or subscribe to the status API to track the booking through acceptance, and use the document API to pull the POD or CMR once the shipment is delivered.
  6. Reconcile references. Store both your internally generated reference and the K+N-issued booking reference against the same shipment record. You'll need both when a branch calls about a discrepancy or when the invoice doesn't match what you booked.

How You Know It Worked

A booking that returns 200 OK isn't proof of anything by itself. What you're actually looking for:

  • The response body contains a populated K+N booking or shipment reference field, not an empty string or null.
  • That same shipment appears in myKN's track-and-trace view under the reference you just received, typically within minutes.
  • A status update showing at least "booking accepted" arrives before the scheduled pickup date. If pickup day arrives and the booking is still sitting in a submitted-but-unacknowledged state, something upstream failed silently.

Failure Mode: Booking Rejected or Stuck in Pending

The most common failure isn't a dramatic outage, it's a malformed or missing mandatory field: an incomplete address, a missing Incoterm, a goods code that doesn't match what K+N's validation expects. Some of these surface as a clean 400 response. Others don't, and the booking just sits unacknowledged, which is worse because nothing in your logs screams at you.

The fix has two parts. First, validate every payload against the OpenAPI schema published on the developer portal before you send it, not after K+N rejects it. Second, log the raw request and response pair for every single booking call, and build an alert that fires if a submitted booking hasn't received any status update within a set window, say a few hours. Treat silence as a signal that something's wrong, not as success by default.

A second failure mode is structural rather than a bug: the country or service you need simply isn't exposed via API yet. This is exactly why the EDI fallback described below isn't optional scaffolding, it's the production path for parts of your network until K+N extends API coverage there.

EDI as the Fallback, Not a Relic

Plenty of K+N lanes, especially in smaller markets, still run over EDI rather than the modern API gateway. The relevant message is listed plainly in K+N's own connectivity catalog: Transport order Inbound to Kuehne+Nagel allows the customer to electronically place bookings via EDI. On the protocol side, K+N's connectivity documentation lists the supported combinations as AS 2, HTTP(S) for communication protocols and XML, EDIFACT for formats, which lines up with what K+N's EDI partners report in the field, namely that the carrier primarily uses the AS2 and FTP/SFTP protocols for electronic data exchange with business partners.

A full K+N integration strategy, in practice, means keeping both channels alive rather than ripping out EDI the moment API goes live. This hybrid reality isn't unique to Kuehne+Nagel. It shows up across DB Schenker, DSV, and GEODIS too, and it's one of the main reasons shippers either build dual-protocol middleware internally or move to a TMS layer that abstracts the protocol difference so the rest of the business doesn't have to care whether a given lane is running API or EDIFACT underneath.

Build vs. Buy: When to Hand This to a TMS Instead

Integrating BookingRoad alone is a few weeks of focused work once you have contract access. Doing the same thing for fifteen or twenty carriers and forwarders, each with its own auth model, payload structure, and EDI fallback, is a maintenance burden that most shippers underestimate until they're three carriers in and still fixing the first integration every time K+N pushes a schema change.

At that point the realistic options are building and maintaining it all in-house, bringing in a specialist integrator such as Coneksion to build and hand off the connections, or adopting a multi-carrier TMS layer like Cargoson, nShift, FreightPOP, Shiptify, or Alpega that maintains these carrier connections as a shared service and absorbs the protocol churn so your team isn't rewriting authentication logic every time a carrier changes gateways. None of these is universally right. But know which one you're choosing, deliberately, before you're five carriers deep and it's chosen for you.