> ## Documentation Index
> Fetch the complete documentation index at: https://www.zippendo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect PostNL

> Connect PostNL under Carriers with your API key, Customer code and Customer number, plus the optional Collection location and Test mode.

**PostNL** sends parcels in the Netherlands and Belgium: to the door, to PostNL locations and parcel lockers, with delivery windows and returns. It also ships across the EU and worldwide with customs declarations. The fields that every carrier shares are on [Carrier credentials](/docs/how-to/carrier-credentials).

<Info>
  You do not pick a sender address on this form. Add your addresses under the organization menu → **Manage** → **Addresses**. You choose the sender address on each shipment or in a [shipping rule](/docs/how-to/shipping-rule-fields).
</Info>

Every PostNL shipment is sent with your own PostNL API key and contract details.

## Before you start

* A PostNL business contract (PostNL Pakketten) with the products you want to use switched on.
* A PostNL **API key** from [Mijn PostNL](https://mijn.postnl.nl/). PostNL gives you one key for its test system and another for real shipments. A test key only works with **Test mode** on.
* Your PostNL **Customer code** (1 to 6 characters, for example `DEVC`) and **Customer number** (up to 8 digits). You find both on your PostNL contract and in Mijn PostNL.
* Optional: the 6-digit **Collection location** code, if PostNL gave you one.

You can connect PostNL more than once, for example one connection per contract. Give each one its own **Carrier name**. **Learn more** on the card opens PostNL's page for business customers.

## Connect PostNL

<Steps>
  <Step title="Open All carriers">
    In the sidebar, click **Carriers**, then open the **All carriers** tab.
  </Step>

  <Step title="Find PostNL">
    On the **PostNL** card, click **Connect**.
  </Step>

  <Step title="Fill in the form">
    The **Connect carrier** window opens. Enter a **Carrier name**, your **API key**, **Customer code** and **Customer number**. **Collection location** and **Test mode** are under **Optional fields**.
  </Step>

  <Step title="Connect the carrier">
    Click **Connect**. You see "Carrier connected", and the carrier appears on the **My carriers** tab.
  </Step>
</Steps>

## Fields on the form

| Field | Required | What to enter |
| - | - | - |
| **Carrier name** | Yes | The name you see on **My carriers** and when you pick a carrier on a shipment. It starts as **PostNL**. |
| **Brand** | No | Shown only if your organization has [brands](/docs/how-to/create-a-brand). The form says: "Only this brand can use this carrier." Leave it empty to let every brand use it. |
| **API key** | Yes | Your key from Mijn PostNL. The form says: "Your PostNL API key from Mijn PostNL (sandbox keys only work in Test mode)." |
| **Customer code** | Yes | The form says: "Customer code as known at PostNL Pakketten (1–6 characters, e.g. DEVC)." |
| **Customer number** | Yes | The form says: "Customer number as known at PostNL Pakketten (up to 8 digits)." |
| **Collection location** | No | Exactly 6 digits. The form says: "6-digit code of the PostNL collection location on your contract, if you have one." |
| **Test mode** | No | A checkbox, off by default. The form says: "Use PostNL's test system with a test API key. Leave off for real shipments." |

**Connect** does nothing until **Carrier name**, **API key**, **Customer code** and **Customer number** have a value. If **Customer code** is longer than 6 characters, **Customer number** is longer than 8, or **Collection location** is not exactly 6 characters, you see "Couldn't connect the carrier. Try again."

**Test mode** sends your shipments to PostNL's test system, so no real shipments are created. Use your test API key while it is on, and your live key when it is off. See [Test mode](/docs/how-to/sandbox-mode).

## After you connect

The carrier appears on **My carriers** with a **Connected** badge. You choose the product on each shipment or in a shipping rule, not on this form. See [Carrier products and services](/docs/how-to/carrier-products-and-services).

Each product's description shows its PostNL product code, so you can match it to your contract. You can only send with products PostNL has switched on for you. Other products are refused when you send, with "PostNL couldn't create the shipment."

Product groups:

* Within the Netherlands (sender in the Netherlands): **Standard shipment**, delivery to the stated address only, signature on delivery, Extra Cover, Age Check, mailbox parcels and **Pickup** products.
* Netherlands to Belgium, within Belgium and Belgium to the Netherlands, each with its own products.
* **Parcel EU**, for consumers (2C) and businesses (2B), in Track & Trace, Insured and Insured Plus versions.
* **Parcel Non EU** and international mail products (such as **Packet Track & Trace**) for the rest of the world. These carry a customs declaration built from the order lines.
* **Returns**: return to a business reply number or to a home address, returns within and to Belgium, and **Easy Return Service** from abroad.

### Delivery windows and extra choices

Products within the Netherlands offer these services: **Evening delivery (17:30–22:00)**, **Today delivery (hand over before 11:00)** and **Guaranteed delivery before 10:00**, **12:00** or **17:00**. When you turn one on, also fill in **Delivery date** under **Extra details for the carrier**.

Some products need more details on the shipment:

* Extra Cover products need **Insured amount (EUR)**, up to 5000.
* Age Check products need **Receiver date of birth**.
* Mailbox parcels need **Delivery date**.
* **Label format** lets you choose **PDF** (the default) or **ZPL (thermal)** for a Zebra label printer.

### PostNL locations (service points)

Products whose names start with **Pickup** or **Pick up** deliver to a PostNL location, such as a shop or a parcel locker. Locations are available for addresses in the Netherlands and Belgium. Choose the location on the shipment before you send. See [Pick a service point](/docs/how-to/pick-a-service-point) and [Service points](/docs/how-to/drop-point-and-service-points).

### Several parcels in one shipment

You can send up to four parcels in one shipment. Mailbox parcels are always one parcel per shipment. Within the Netherlands, PostNL handles the parcels as one shipment with a label for each parcel. On other routes, each parcel becomes its own PostNL shipment.

### Pickups, tracking and customs

* PostNL is not available under **Pickups**. Pickups are arranged through your PostNL contract.
* Zippendo fetches tracking updates from PostNL every hour. There is nothing to set up. See [Carrier tracking webhooks](/docs/how-to/tracking-webhooks).
* For shipments outside the EU, PostNL returns the customs declarations (CN23/CP71) and the commercial invoice with the label, so Zippendo does not add its own. See [Customs and documents](/docs/how-to/customs-and-documents).

## Change or remove the connection

To change it, open **Carriers** → **My carriers** and click **Edit carrier** on the card. The **Edit carrier** page has two sections:

* **General**: **Carrier name**, and **Brand** if your organization has brands.
* **Carrier settings**: **API key**, **Customer code**, **Customer number**, **Collection location** and **Test mode**.

Click **Save**. You see "Carrier updated".

To remove it, click **Delete** on the same page, type the carrier name in capital letters, and click **Delete**. Shipping rules that use this carrier are deleted with it. Shipments you already sent keep their labels and tracking numbers.

## Common problems

| What you see | What to do |
| - | - |
| "Couldn't connect the carrier. Try again." | Check the required fields and the lengths described above, then try again. |
| "You've reached your plan's limit. Upgrade your plan or remove something you no longer use." | Your plan's carrier limit is reached. See [Billing and usage](/docs/how-to/billing-and-usage). |
| "The carrier rejected your login details. Update the carrier credentials under Carriers." when you send | The API key is wrong, or it does not match **Test mode** (a test key with **Test mode** off, or the other way round). Fix it on **Edit carrier**. |
| "PostNL couldn't create the shipment." or PostNL's own error text | PostNL refused the shipment, for example because the product is not on your contract or the address is wrong. Fix what the message names and send again. |
| "Some options for this carrier product are missing or not valid. Check the shipment's services and options, then try again." | A required detail is missing, such as **Insured amount (EUR)**, **Delivery date** or **Receiver date of birth**. Fill it in under **Extra details for the carrier**. |
| "This product delivers to a service point. Select a service point before sending." | Choose a PostNL location on the shipment. |
| "The selected carrier product does not ship between these countries. Choose a different product." | Choose a product for this route, for example a **Parcel EU** product for another EU country. |

## Related

* [Connect a carrier or integration](/docs/how-to/connect-index)
* [Carrier credentials](/docs/how-to/carrier-credentials)
* [Test mode](/docs/how-to/sandbox-mode)
* [Carrier products and services](/docs/how-to/carrier-products-and-services)
* [Pick a service point](/docs/how-to/pick-a-service-point)
* [Request a carrier integration](/docs/how-to/request-carrier-integration)
* [Carriers](/docs/tutorials/carriers)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.