With this extension, you can register shipments with PostNL and print the shipping labels with one push of a button. Moreover, your customers choose how they want to receive the order.
Online Manual (in Dutch): https://postnl.github.io/woocommerce/new-manual
- Submit shipments easily with PostNL, single orders or in a batch.
- Easily print shipping labels.
- Your customers can choose whether they want to receive the parcel at home or collect it from a PostNL point nearby.
- Use PostNL’s various shipping methods (mailbox parcel, insured shipping, etc.).
- Easily send your parcels to Belgium, Europe and the rest of the world.
- Follow orders via Track & Trace.
- Create multiple shipments for the same order.
- Modify the PostNL shipping options per order before exporting
- NEW! Free address validation for addresses in the Netherlands.
- NEW! Easily share the return label with your customers.
- NEW! Merchants based in Belgium can make use of this plug-in as well.
A PostNL API account is required for this plugin! Check out your API key in the Mijn PostNL business portal or contact your account manager.
Automatic installation is the easiest option as WordPress handles the file transfers itself and you don’t even need to leave your web browser. To do an automatic install of PostNL for WooCommerce, log in to your WordPress admin panel, navigate to the Plugins menu and click Add New.
In the search field type “PostNL for WooCommerce” and click Search Plugins. You can install it by simply clicking Install Now. After clicking that link you will be asked if you’re sure you want to install the plugin. Click yes and WordPress will automatically complete the installation.
Manual installation via the WordPress interface
- Download the plugin zip file to your computer
- Go to the WordPress admin panel menu Plugins > Add New
- Choose upload
- Upload the plugin zip file, the plugin will now be installed
- After installation has finished, click the ‘activate plugin’ link
Manual installation via FTP
- Download the plugin file to your computer and unzip it
- Using an FTP program, or your hosting control panel, upload the unzipped plugin folder to your WordPress installation’s wp-content/plugins/ directory.
- Activate the plugin from the Plugins menu within the WordPress admin.
Setting up the plugin
- Go to the menu
WooCommerce > Settings > Shipping methods > PostNL.
- Fill in your API key and Customer details. If you don’t have an API key request it in your Mijn PostNL Business Portal. Check out the instructions here.
- The plugin is ready to be used!
We advise you to test the whole checkout procedure once to see if everything works as it should. Pay special attention to the following:
The PostNL plugin adds extra fields to the checkout of your webshop, to make it possible for the client to add street name, number and optional additions separately. This way you can be sure that everything is entered correctly. Because not all checkouts are configured alike, it’s possible that the positioning/alignment of these extra fields have to be adjusted.
Moreover, after a label is created, a Track & Trace code is added to the order. When the order is completed from WooCommerce, this Track & Trace code is added to the email (when this is enabled in the settings). Check that the code is correctly displayed in your template. You can read how to change the text in the FAQ section.
How do I get an API key?
Follow these instructions (https://www.postnl.nl/Images/aanvragen-api-key-stappenkaart_tcm10-200445.pdf?version=2) to request an API key or to look it up.
Contributors & Developers
“PostNL for WooCommerce” is open source software. The following people have contributed to this plugin.Contributors
Interested in development?
- Support shipping from BE
- Add morning delivery option
- Add ID check shipping option
- Fix : Make dropoff points optional
- Fix WooCommerce HPOS compatibility
- Fix track and trace URL
- Print company name on the label
- MAJOR RELEASE
- Reconfigure the plug-in.
- Fix: change post data sanitization for shipping method
- Fix: process print queue after exporting
- Fix: correct track trace link
- Fix: sanitize posted array
- Fix: sanitize request variables
- Fix: fix modal in order grid
- Fix: escape output
- Fix: change name
- Fix: fix warning cannot modify header information #83
- Improvement: add option to disable insurance for shipments to Belgium
- Fix: email for printing evening delivery
- Improvement: wpm-config.json included (support WP-Multilang plugin)
- Improvement: add translation files fr_FR
- Improvement: Deactivate delivery date
- Improvement: Option for automatic order status after exporting or printing
- Fix: Saving options in the order grid model
- Fix: Validation for sending to other address on checkout page
- Improvement: Export bulk order shipments although there is a wrong shipment
- Improvement: Add option to show prices as surcharge
- Improvement: Support WP Desk Flexible Shipping plugin
- Fix: Calculate weight from grams to kilos during the migration
- Fix: Set PostNL response cookie with 20 sec expire
- Fix: Use saturday cutoff time
- Fix: Use country codes from the PostNL SDK
- Fix: Translation files not being generated properly
- Fix: Rename
- Fix: Weight calculation for all shipment types
- Fix: Delivery options after woocommerce subtotal for solving conflicts with multiple themes
- Fix: Error array_replace_recursive second parameter must be array
- Fix: Show correct delivery type in orders grid
- Fix: Package type from shipping method/class not shown in order grid
- Fix: Unable to send return email
- Fix: Send return email modal
- Fix: Show delivery date in order grid for any order that has one
- Fix: Don’t load checkout scripts on order received page
- Fix: Multicollo voor Dutch shipments and for international shipments can you create multiple labels
- Fix: Missing barcode in emails of automatically processed orders
- Fix: Properly add/remove cart fees when using delivery options
- Fix: Error on checkout when using custom address fields
- Fix: Maximum label description length of 45 characters
- Fix: Multiple barcode in order note
- Fix: Saving the correct days in the setting drop off days
- Fix: Save the correct shipping class
- Fix: Check if shipping address is selected on checkout page en use the correct address
- Fix: Order confirmation on the thank you page, confirmation email and on the customer account
- Fix: Do not save address in address book
- Fix: Correct package type for international shipments
- Fix: Only add empty parcel weight to packages
- Fix: Export via actions at the bottom of the order-grid
- Improvement: Set correct UserAgent
- Improvement: More options for age verification at product level
- Improvement: Better country of origin selection
- Improvement: Improve shipment options dialog
- Improvement: Spinner for order grid bulk actions
- Improvement: Update icons
- Improvement: Use base price for delivery options
- Improvement: Error handling after exporting and printing a label
- Improvement: Stabilizer code for opening a label in a new tab
- Improvement: New status for letter and DPZ and show them on the barcode column
- Improvement: Use customer note for label description.
- Improvement: Use the latest PostNL SDK.
- Improvement: Handle translations in gulp
- Fix: select box for country of origin
- Fix: delivery options for not logged in users
- Improvement: prices from the shipping method inside the delivery options
- Fix: Shipping classes not saving
- Fix: Drop off days
- Fix: WooCommerce PDF Invoices & Packing Slips placeholders compatibility
- Fix: Calculate DPZ weight
- Fix: Error delivery_date is too early
- Fix: Multiple barcode in order note
- Fix: Maximum label description lenght of 45 characters
- Improvement: support WP-Multilang
- Fix: Error on checkout when using custom address fields
- Fix: Crack down on invalid package types
- Fix: 4.1.0 migration fatal errors
- Fix: PHP Fatal error: Uncaught TypeError: Return value of WCPN_Export::getPackageTypeFromOrder()
- Improvement: All enabled/disabled dropdowns replaced with clickable toggles.
- Improvement: Show package type and delivery date instead of “details”.
- Improvement: Add label description for individual shipments.
- Improvement: Loading speed/experience.
- Improvement: Spinner for order grid bulk actions.
- Improvement: make default export settings show up in shipment options.
- Improvement: show delivery date in order grid for any order that has one (only when “show delivery day” setting is enabled).
- Fix: Wrong label for “show delivery day” setting.
- Fix: Error on sending return email.
- Fix: Allow split address field for Belgium as well.
- Fix: Add options that were missing in 4.0.0
- Fix: Rename at_home_delivery to delivery_title
- Fix: Monday delivery
- Fix: Free_shipping linked to package then you should also see the delivery options
- Fix: If you have a shipping method with flatrate: 181 and the method gives flatrate: 18 then you should not see the delivery options
- Fix: Error CRITICAL Uncaught TypeError: Return value of WCPN_Export::getShippingMethod()
- Fix: Disable order status delivered
- Fix: Package type not being recognized
- Fix: migrate all package types in export defaults settings
- Fix: Failed opening class-wcmypa-settings.php
- Fix: Old settings non existent error
- Fix: Class naming for theme compatibility
- Fix: Show delivery options with a shipping class and with tablerates
- Improvement: Automatic insurance
- Fix: Wrong meta variable country of origin
- Fix: Html layout of shipment summary settings and searching in WooCommerce orders overview
- Fix: Translations
- Fix: Export pickup locations
- Fix: When deliveryType is empty use default package
- Fix: Html layout of shipment summary and searching in WooCommerce orders overview
- Improvement: Add empty parcel weight option
- Improvement: Add multicollo option
- Fix: HS code
- Fix: Delete options keep old shipments
- Fix: Insurance possibilities
- Fix: Barcode in orderview
- Fix: Housenumber and suffix
- Improvement: Country of origin
- Improvement: New checkout and SDK
- Improvement: Automatic export after payment
- Improvement: V2 shipment endpoint
- Improvement: HS code for variable product
- Fix: The recursive delivery date loop and full cache
- Fix: Since November is it no longer possible to use pickup express.
- Fix: Warning: invalid argument supplied …. class-wc-shipping-flat-rate.php.
- Fix: Check if there is connection with PostNL
- Fix: Search in order grid PostNL shipment
- Fix: More than 5 products for World shipments
- Fix: Use constants for delivery_type
- Fix: Saturday cutoff time
- Fix: Shipping method issue with pickup
- Improvement: Add the link for the personalized Track & Trace page (portal)
- Improvement: Show deliverday only for NL shipments
- Improvement: Cut the product title after 50 characters
- Improvement: Barcode in order grid
- Fix: Translation house number again button
- Fix: Set default to 0 if there’s no tax rate set up
- Fix: fix issue with shipping class term id
- Fix: trying to get property of non-object
- Fix: Shipment validation error (PakjeGemak)
- Fix: Delivery date when deliveryday window is 0
- Fix: Change
- Preparation: Move Great Britain to world shipment for the Brexit
- Fix: Showing delivery date in the order when consumer using safari
- Fix: Scrolling of the order overview when an input is clicked.
- Improvement: 18+ check
- Fix: Standard delivery text
- Fix: showing checkout
- Fix: Remove some styling code
- Fix: Text changes
- Fix: Hide delivery options
- Fix: Get the total weight on a later moment
- Fix: Unset weight by mailbox package
- Fix: Since WooCommerce 3.0, logging can be grouped by context (error code 0 when exporting / printing)
Fix: The checkout is still loading when change the country.
Improvement: Add maxlength to number suffix field
- Improvement: Translate all text inside the checkout
- Improvement: The option to give a discount on the shipping method ( negative amounts)
- Hotfix: Show delivery options when checkout form already filled in.
- Hotfix: Flashing of the order summary.
- Hotfix: Get mailbox delivery option and save it into the order.
- Fix: The multiple calls that are made to retrieve the shipping data.
- Fix: The option for Pick up extra early
- Fix: Wrong house number / postcode message and the possibility to adjust the address in the PostNL checkout
- Fix: Woocommerce tabel rates
- Improvement: Better support the default WooCommerce checkout address fields
- Fix: Set default values for dropoff days and delivery days window
- Fix: Remove concatenation from constant (causes an error on php version < 5.6)
- Fix: No more double address fields with delivery options disabled
- Fix: Error message about money_format
- Fix: Add the priority to the checkout field for support WooCommerce 3.5.1
- Fix: The PostNL logo is not visible with all browsers
- Improvement: Support Channel Engine
- Improvement: Information inside the checkout and the translations
- Improvement: Support WooCommerce default shipping fields (_address_1 and _address_2)
- Fix: mollie payments
- Improvement: Check for minimum php version (php 5.4)
- Improvement: Hide automatic pickup express if pickup is not enabled
- Fix: Problem with WooCommerce PDF Invoices & Packing Slips
- Fix: error about “Bewaar barcode in een notitie” size
- Fix: Turn of the option allow Pickup Express
- Fix: Save settings with a new update
- Improvement: PostNL delivery header titel
- Improvement: Support WooCommerce 3.5.0
- Improvement: add preliminary support for “digitale postzegel”
- Fix: Error a non-numeric value encountered in class-wcpn-frontend-settings.php
- Fix: Notice Undefined index: checkout_position
- Fix: Add version number after the nl-checkout.css call
- Changes: The whole checkout has a new look. A choice has been made to go back to the basic checkout. The checkout is designed so that he will take the styling of the website.
These are the biggest changes:
* No use of libraries (only jQuery)
* No iframe is used
* The checkout is more stable
* Easier to implement improvements
- Fix: Use street and house number fields for export a Belgium order
- Fix: The at home or at work delivery title inside the checkout
- Fix: The default settings
- Improvement: The option to change the position of the checkout (edited)
- Fix: at home delivery title
- Fix: Export Belgium delivery, use the street/number input fields
- Fix: Select the correct package type inside admin when there is one shipping used.
- Fix: Tabel rate shipping witch WooCommerce Table Rate Shipping by Automattic / Bolder Elements 4.0 / Bolder Elements 4.1.3
- Fix: The option to show the checkout only when he is linked to package
- Fix: #102 change Iceland to world shipping
- Fix: #106 tabel rates shipping
- Improvement: #94 support legacy consignment and tracktrace data
- Improvement: #95 Speed up order list view
- Improvement: #104 Add reference identifier, that is always the order id
- Fix: Export shipment labels
- Improvement: Support Effect Connect, you can place the barcode inside a note of the order
- Fix: Scrolling when changing package type in orderview
- Fix: Select the correct delivery methode inside the checkout
- Improvement: Support Cloudflare
- Fix: The array error from the userAgent (https://wordpress.org/support/topic/parse-error-syntax-error-unexpected-in-wp-content-plugins-woocommerce-mypa/)
- Fix: The countries Norway, Turkey, Switzerland changed to world country
- Fix: Changing Type from Order List (https://wordpress.org/support/topic/changing-type-from-order-list/#post-10020043)
- Improvement: WooCommerce 3.3.1 compatibility
- Improvement: WooCommerce 3.3 compatibility
- Feature: The option to print the label on A4 and A6 format
- Fix: Export an order with an old delivery date
- Refactor: Error about rest api (https://wordpress.org/support/topic/error-in-woocommerce/)
`des/class-wcpn-rest-api-integration.php): failed to open stream“`
- Fix:Error about rest api (https://wordpress.org/support/topic/error-in-woocommerce/)
`des/class-wcpn-rest-api-integration.php): failed to open stream“`
- Fix: Add PostNL fields to REST api to create order request
- Fix: Hide days when the pickup delivery is selected
- Fix: Price changes for 2018
- Fix: WooCommerce 3.2 compatibility
- Feature: Export world shipments + customs declaration form
- Feature: Show delivery options on thank you page
- Feature: Use WC logger when possible
- Fix: Return shipment error
- Fix: Order details layout for pickup location
- Fix: Delete cache of admin notices
- Fix: Display of negative delivery options price
- Fix: Improved tax handling on delivery options fees
- Fix: Pickup locations in Safari
- Fix: Delivery options header order
- Feature: Support for region (=state) in international addresses
- Feature: Hide Delivery options if PostNL service is unavailable
- Fix: Table Rate Shipping + WooCommerce 2.6 (error in settings)
- Feature: WooCommerce Table Rate Shipping support (woocommerce.com & Bolder Elements 4.0)
- Feature: Support for monday delivery
- Feature: Start print position
- Feature: Individual label printing from the order details page
- Fix: Delivery options checkout in Edge browser
- Fix: HTTPS issue with google fonts
- Fix: Multi-colli printing
- Fix: Delivery options tax in WC3.0
- Fix: Disable ‘signature on delivery’ & ‘recipient only’ when switching to pickup location in checkout
- Fix: Improve order-based calculation of highest shipping class
- WooCommerce 3.0 compatible
- Requires PHP version 5.3 or higher
- Feature: Validate NL postcodes
- Fix: Multistep checkout
- Fix: Email text translation typo
- Fix: Remove spin button (arrows) for house number checkout field
- Fix: Issues creating return shipments
- Fix: Clear delivery options (&costs) when no longer available or deselected
- Fix: Error exporting foreign addresses & PayPal Express checkout
- Feature: Option to autoload google fonts in delivery options
- Feature: [DELIVERY_DATE] placeholder on label
- Various minor fixes
- Fix: Script error on the Thank You page (interfered with Facebook/Google tracking)
- Fix: Don’t show delivery date (backend/emails) if delivery days window is 0 (=disabled)
- Tweak: Notice for BE shop owners
- Tweak: Sanity check for delivery options
- Fix: Delivery options iPad/iPhone issues
- Fix: Ignore badly formatted delivery options data
- Fix: Don’t show delivery options when cart doesn’t need shipping (downloads/virtual items)
- Fix: Delivery options container not found (explicitly uses window scope)
- Tweak: Shipping column width/float in order backend
- Tweak: Page reloading & print dialogue flow optimizations
- Feature: Select combinations of Flat Rate & Shipping Class to link parcel settings & delivery options display
- Feature: Option to show delivery options for all shipping methods (except foreign addresses)
- Feature: Pick colors for the delivery options
- Feature: Set custom styles (CSS) for delivery options
- Feature: Enter ‘0’ for the delivery days window to hide dates in the delivery options
- Fix: Don’t apply ‘only recipient’ fee for morning & night delivery (already included)
- Fix: Order search issues
- Fix: 404 header on delivery options
- Tweak: Several delivery options style adjustments
- Tweak: Reload page after exporting
- Fix default insurance selection
- Tweak: Show shipping ‘method title’ instead of ‘title’ in settings (with fallback to title)
- Tweak: added
- Improved theme compatibility
- Fix: Checkout option fees tax
- Fix: Settings page conditional options display
- Improved settings migration from previous versions
- Fix order search
- Default delivery options background to white
- Completely revamped settings & export interface
- New delivery options replaces old ‘Pakjegemak’:
- Postponed delivery (pick a delivery date)
- Home address only option
- Signature on delivery option
- Evening or morning delivery option
- PostNL Pickup & Early PostNL Pickup
- Possibility to assign cost to the above delivery options
- Create return labels from the WooCommerce backend
- Uses new PostNL API
- Fix: Disable pakjegemak if ‘ship to different address’ is disabled after selecting Pakjegemak location
- Fix: Use billing postcode for Pakjegemak Track & Trace
- Fix: Foreign postcodes validation fix.
- Fix: Various Pakjegemak related issues (now saves & sends pakjegemak address separately to PostNL)
- Fix: Postcode validation issues with Portugal
- Feature: Edit PostNL address fields on user profile page
- Fix: Bug with automatic order completion
- Feature: Option to keep old consignments when re-exporting
- Feature: Use billing name for pakjegemak (when empty)
- Feature: store pakjegemak choice
- Fix: prevent illegal export settings/combinations
- Tweak: Better error reporting
- Tweak: Small text changes (backend)
- Tweak: Added error when no consignments available when trying to print labels
- Tweak: Tip for direct processing of labels (when not enabled)
- Tweak: admin styles
- Feature: Shipment type setting (Pakket/Brievenbuspakje/Ongefrankeerd label)
- Feature: Multi-colli support
- Feature: More advanced insurance options
- Feature: Allow overriding pakjegemak passdata file via child theme (place in /woocommerce/)
- Fix: Backend address formatting/styles
- Fix: Unexpected output at first activation
- Tweak: Hide parcel settings for other shipment types
- Tweak: Remove deprecated comments field
- Tweak: Settings now under WooCommerce top menu
- Tweak: better error logging
- Dev: Code refactor
- Fix: Foreign Track & Trace link updated
- Tweak: Prevent label creation if direct processing is disabled. NOTE! If you had this setting disabled and were used to downloading the labels directly, you need to change this in the settings.
- Tweak: Remove required tags in checkout for disabled fields.
- Fix: error for missing shipping fields
- Fix: WooCommerce 2.2+ compatibility
- Fix: weight unit is now properly taken into account
- Tweak: different bulk action hook (for better compatibility)
- Fix: Broken special characters (ë, û, à etc.)
- Tweak: different API communication mode for secure configuration
- Feature: Print order number on label
- Feature: PakjeGemak integration
- Feature: Option to autocomplete order after successful export to PostNL
- Feature: Option to display Track & Trace link on my account page
- Fix: Big exports now run without any warnings/problems (was limited by the server)
- Fix: Names, cities etc. with quotes (‘)
- Fix: Error on combined foreign & Dutch exports
- Fix: IE9 compatibility
- Fix: Checkout placeholder data was being saved in older versions of Internet Explorer
- Feature: Option to download PDF or display in browser
- Fix: warnings when debug set to true & downloading labels directly after exporting
- Fix: WooCommerce 2.1 bug with copying foreign address data
- Fix: Errors when trashing & restoring trashed orders
- Fix: Errors on foreign country export
- Fix: legacy address data is now also displayed properly
- Tweak: background scrolling locked when exporting
- Fix: Checks for required fields
- Tweak: Improved address formatting
- Tweak: Removed placeholders on house number & suffix for better compatibility with old browsers
- Fix: Description labels for Custom ID (‘Eigen kenmerk’) & Message (‘Optioneel bericht’)
- Fix: button image width
- New PostNL icons
- Export & PDF buttons compatible with WC2.1 / MP6 styles
- Button styles are now in CSS instead of inline
- Feature: The PostNL checkout fields (street name / house number) can now also be modified on the my account page
- Fix: WooCommerce 2.1 compatibility (checkout field localisation is now in WC core)
- Updated PostNL tariffs
- Fix: Labels for Custom id (‘Eigen kenmerk’) & Message (‘Optioneel bericht’) in the export window were reversed
- Fix: Removed depricated functions for better WooCommerce 2.1 compatibility
- Made extra checkout fields exclusive for dutch customers.
- Show process indicator during export.
- Various bugfixes.
- First release.