Naar hoofdinhoud

KoppelingenPostNL

PostNL API koppelen aan je website.

Met een koppeling op de PostNL API maakt je webshop zelf de verzendlabels aan, meldt hij zendingen voor en haalt hij de track & trace-status terug. In de checkout kunnen klanten daarnaast een bezorgmoment of een PostNL-punt kiezen, in je eigen ontwerp.

Vertrouwd door

200+ bedrijven en webshops

Dux
Swim Essentials
Vouwwagenspecialist
Fit Preps
Fysio Moov
Mörgenn
MBST
Sunwave Brands
Flaske
Boumij Makelaars

Wat het oplevert

Wat een koppeling met PostNL je oplevert.

Labels zonder overtypen. Een order wordt een barcode en een verzendlabel, zonder adressen te kopiëren naar een portal.

Bezorgopties in je eigen checkout. Bezorgmomenten en afhaalpunten in de buurt, opgehaald op het adres van de klant.

De status in je eigen systeem. De track & trace-status komt terug bij de order, zodat niemand in een tweede scherm hoeft te zoeken.

Technisch

De koppeling in het kort.

Vorm van de koppeling
REST op api.postnl.nl, met losse API's voor Barcode, Labelling, Confirming, ShippingStatus, Checkout, Locations en Postalcode check; testen op api-sandbox.postnl.nl
Authenticatie
Een API key uit Mijn PostNL Zakelijk, mee in de header apikey; in de aanvraag zelf je klantcode en klantnummer
Richting
Beide kanten op
Verversing
Per order; de status per barcode of als lijst van bijgewerkte zendingen, elke 5 tot 15 minuten
Wij bouwen het op
WordPress, Next.js, Maatwerk

Waar het misgaat

  • Naar productie gaat niet vanzelf. Je bouwt en test op de sandbox, maar de overstap naar productie keurt het Technical Support-team van PostNL goed, en pas dan krijg je de toegangsgegevens voor het echte verkeer. Plan die stap in voordat je een livedatum belooft. Losse ontwikkelaarssleutels geeft PostNL niet meer uit; de sleutels hangen aan een zakelijk account in Mijn PostNL Zakelijk.
  • Een label is nog geen voorgemelde zending. De Labelling API heeft een instelling confirm. Staat die uit, dan moet er een aparte aanvraag naar de Confirming API om de zending bij PostNL aan te melden. Wie dat vergeet, heeft een geprint label en een pakket dat PostNL niet verwacht. Wij bevestigen in dezelfde aanvraag, tenzij er een reden is om dat later te doen, bijvoorbeeld omdat een order nog kan wijzigen.
  • Klantcode, klantnummer en afleverlocatie moeten kloppen. Een barcode vraag je aan met je klantcode en klantnummer, en een label vraagt per zending een adres, de barcode, de afmetingen en een productcode die bepaalt hoe het pakket wordt bezorgd. De afleverlocatie is een code van zes tekens. Die gegevens staan in je account of krijg je van PostNL; met een verkeerde waarde loopt de aanvraag vast of komt de zending op het verkeerde account.
  • Niet alles staat in de sandbox. De Postalcode check, die een Nederlands adres controleert op postcode en huisnummer, is niet beschikbaar in de testomgeving. Dat deel test je dus pas met je productiesleutel. Ook een limiet op het aantal aanvragen staat zonder getal in de documentatie; de API antwoordt met een 429 als je eroverheen gaat, en de koppeling moet dan wachten in plaats van orders over te slaan.

Bron: documentatie van PostNL, Den Haag

Wat is de PostNL API?

De PostNL API is de verzameling koppelingen waarmee software van een webshop of magazijn rechtstreeks met PostNL praat. Het gaat om een set losse diensten: een voor barcodes, een voor labels, een voor het voormelden van zendingen, een voor de status, en een paar voor de checkout.

PostNL richt zich daarmee op webshops met eigen software of een opensourceplatform, zoals WooCommerce. Je vraagt de sleutel aan in Mijn PostNL Zakelijk, onder API-beheer. Ben je nog geen klant, dan kun je via het Developer Portal een testsleutel aanvragen om te kijken wat er kan.

Alle API's werken met dezelfde sleutel in een header en zijn REST. Er is een sandbox op een eigen adres, met dezelfde opbouw als productie, zodat je de hele stroom kunt testen zonder echte zendingen.

Van order tot pakket: zo loopt een zending door de API

Het begint met een barcode. Die vraag je aan bij de Barcode API, met je klantcode, je klantnummer en het type barcode. Elke zending krijgt er een, en die barcode is daarna de sleutel voor alles wat volgt.

Dan het label. De Labelling API krijgt de afzender, het adres van de ontvanger, de barcode, de afmetingen en de productcode, en geeft het label terug om te printen. Met de instelling confirm meld je de zending in dezelfde aanvraag voor bij PostNL; zonder die instelling volgt een aparte aanvraag bij de Confirming API.

En dan de status. De ShippingStatus API geeft de status per barcode of per eigen referentie, en ook een lijst van zendingen die in een bepaalde periode zijn bijgewerkt. PostNL adviseert die lijst elke 5 tot 15 minuten op te vragen. Wij zetten de status bij de order, zodat je klantenservice en je klantmails dezelfde informatie hebben.

Bezorgopties en afhaalpunten in je checkout

De Checkout API geeft op basis van het adres van de klant de bezorgopties terug, zoals bezorgmomenten en afhaalmogelijkheden. De Locations API zoekt de PostNL-punten het dichtst bij een adres of bij coördinaten, of binnen een gebied, en kan één punt opzoeken als de klant het al heeft gekozen.

Het voordeel van een eigen koppeling is dat die keuzes in je eigen checkout staan, in je eigen opmaak, en dat de keuze van de klant meteen meegaat naar het label. Een gekozen PostNL-punt staat dan als adres op het label.

Met de Postalcode check controleer je bovendien het Nederlandse adres op postcode en huisnummer, voordat de bestelling wordt afgerond. Dat scheelt pakketten die terugkomen omdat een huisnummer net verkeerd was ingetypt.

Plugin, verzendplatform of directe koppeling

Niet elke webshop heeft een eigen koppeling nodig. PostNL heeft zelf de plugin PostNL for WooCommerce, met meer dan 4.000 actieve installaties. Die maakt labels per order of in bulk, toont bezorgopties en afhaalpunten in de checkout en controleert Nederlandse adressen. Ook voor Shopify, Magento, Lightspeed en CCV zijn er plugins. Voor veel webshops is dat genoeg, en dan raden we dat ook aan.

Verzend je met meerdere vervoerders, dan ligt verzendsoftware zoals Sendcloud meer voor de hand: één omgeving voor alle labels, waarin PostNL er een van is. En doet een magazijn de verzending, dan koppelt dat systeem met de vervoerder. Dat zie je bij een magazijnsysteem als Picqer of bij fulfilment door een partij als Monta; je webshop praat dan met het magazijn, niet met PostNL.

Een directe koppeling op de API is de route als je orderflow afwijkt van wat een plugin verwacht. Denk aan een maatwerkplatform, orders die uit meerdere bronnen komen, eigen regels voor welke productcode bij welke order hoort, of een checkout die niet op WooCommerce draait.

De overstap naar V4

PostNL werkt aan een nieuwe generatie API's, V4. Daarin vallen onder meer Checkout V4, met Locations en tijdvakken, en Warehouse V4, met Shipment, Return, Labelling, Confirming en Barcode. Volgens PostNL gaan die de huidige API's vervangen.

Een datum noemt PostNL niet. Klanten worden op tijd en gefaseerd uitgenodigd om over te stappen. Voor een koppeling die nu gebouwd wordt, betekent dat: houd de aanroepen naar PostNL op één plek in de code, zodat de overstap een aanpassing is in plaats van een herbouw.

De PostNL API koppelen met WooCommerce of met maatwerk

In een WooCommerce-webshop beginnen we bij de vraag of de plugin van PostNL je orderflow dekt. Doet hij dat, dan richten we hem in en controleren we de eerste zendingen. Doet hij dat niet, dan bouwen we een uitbreiding die barcode, label en voormelding vanuit de order regelt en de status terugzet, met de sleutel op de server.

Op een maatwerksite in Next.js of in een eigen platform is het een serverkoppeling die bij een betaalde order de zending aanmaakt, het label klaarzet voor het printen en de status op een vast ritme ophaalt. De bezorgopties komen via een eigen route in de checkout.

Koppelingen als deze bouwen we binnen Design & Development.

Bijgewerkt op

Specialist voor koppelingen

Portret van Jos van der Pluijm tussen de stellingen van een magazijnJosDesign & Development085 83 30 533jos@klubb.nl

Veelgestelde vragen

Heeft PostNL een API?

Ja. PostNL heeft een set REST-API's voor zakelijke klanten: voor barcodes, verzendlabels, het voormelden van zendingen, track & trace-status, bezorgopties in de checkout, PostNL-punten en een postcodecheck. De documentatie staat op het Developer Portal van PostNL. Je werkt met een API key uit Mijn PostNL Zakelijk en kunt eerst testen in een sandbox.

Hoe vraag ik een PostNL API key aan?

Een PostNL API key maak je aan in Mijn PostNL Zakelijk, onder API-beheer. Ben je nog geen klant, dan kun je via het Developer Portal een testsleutel aanvragen. Voor productie keurt het Technical Support-team van PostNL de overstap goed en verstrekt het de toegangsgegevens. Losse ontwikkelaarssleutels worden niet meer uitgegeven.

Heb ik een zakelijk account nodig voor de PostNL API?

Ja. De sleutels voor de PostNL API hangen aan een account in Mijn PostNL Zakelijk, en in elke zending gaan je klantcode en klantnummer mee. Wie nog geen klant is, kan via het Developer Portal een testsleutel aanvragen om te bouwen en te testen. Voor echte zendingen heb je het zakelijke account en de goedkeuring van PostNL nodig.

Is er een PostNL-plugin voor WooCommerce?

Ja. PostNL heeft de plugin PostNL for WooCommerce, met meer dan 4.000 actieve installaties. Hij maakt labels per order of in bulk, toont bezorgopties en afhaalpunten in de checkout en controleert Nederlandse adressen. Je hebt er een PostNL API key voor nodig. Past je orderflow er niet in, dan bouwen we een eigen koppeling.

Kan ik PostNL koppelen aan Shopify?

Ja. PostNL biedt kant-en-klare plugins aan voor onder meer Shopify, Magento, Lightspeed, CCV en WooCommerce. Voor de meeste Shopify-winkels is dat de route. Een directe koppeling op de PostNL API is pas nodig als je orders, productcodes of checkout afwijken van wat de plugin verwacht, of als je met een eigen platform werkt.

Kan ik de PostNL API eerst testen?

Ja. PostNL heeft een sandbox op api-sandbox.postnl.nl, met dezelfde opbouw als productie. Daar test je barcodes, labels, voormelden en status zonder echte zendingen. Eén uitzondering: de Postalcode check is niet beschikbaar in de sandbox en test je pas met je productiesleutel. Daarna keurt PostNL de overstap naar productie goed.

Hoe krijg ik de track & trace-status terug in mijn webshop?

Via de ShippingStatus API van PostNL. Je vraagt de status op per barcode of per eigen referentie, of je haalt een lijst op van zendingen die in een bepaalde periode zijn bijgewerkt. PostNL adviseert dat elke 5 tot 15 minuten te doen. Wij zetten de status bij de order, zodat klantenservice en klantmails dezelfde stand tonen.

Kan de PostNL API adressen controleren in de checkout?

Ja. Met de Postalcode check controleer je een Nederlands adres op postcode, huisnummer en toevoeging, terwijl de klant afrekent. Zo vang je een verkeerd ingetypt huisnummer af voordat het label wordt gemaakt. Deze API is niet beschikbaar in de sandbox, dus testen gebeurt met de productiesleutel.

Wat is het verschil tussen de PostNL API en Sendcloud?

De PostNL API is de rechtstreekse koppeling met één vervoerder: PostNL. Sendcloud is verzendsoftware die meerdere vervoerders in één omgeving samenbrengt, waaronder PostNL. Verzend je alleen met PostNL, dan is een plugin of directe koppeling vaak genoeg. Verzend je met meerdere vervoerders, dan ligt een verzendplatform meer voor de hand.

Wat verandert er met PostNL V4?

PostNL brengt een nieuwe generatie API's uit, V4, die de huidige gaat vervangen: Checkout V4 voor locaties en tijdvakken en Warehouse V4 voor barcode, label, voormelden, zending en retour. Een datum noemt PostNL niet; klanten worden gefaseerd uitgenodigd. Wij houden de aanroepen op één plek in de code, zodat de overstap klein blijft.

Let's work together.

Van order tot pakket, zonder overtypen.