C2C platforms
This guide describes how C2C platforms can integrate Pickup API and Booking API for parcel services in Norway, with two main flows:
- Flow A (with pickup): customer orders shipment and requests mailbox pickup.
- Flow B (without pickup): customer orders shipment and delivers it without mailbox pickup.
For Booking API request examples, see Booking API documentation.
Booking API examples to check
When implementing these C2C flows, use the Booking API examples for:
- C2C Parcel to Mailbox (5900) with pickup
- C2C Parcel to Locker (5901) with pickup
- C2C Parcel to PiB / Manned Pickup Point (5902)
Supported services
- 5900 - Parcel to Mailbox
- 5901 - Parcel to Locker
- 5902 - Parcel to Manned Pickup Point
Size VAS
- 2528: Small (35 x 25 x 11 cm, max 5 kg)
- 2529: Medium (45 x 30 x 15 cm, max 5 kg)
- 1377: Large (58 x 43 x 23 cm, max 10 kg)
- 1378: Extra Large (120 x 60 x 60 cm, max 20 kg)
Valid size VAS per service
| Service | Allowed size VAS |
|---|---|
| 5900 | 2528, 2529 |
| 5901 | 2528, 2529, 1377 |
| 5902 | 2528, 2529, 1377, 1378 |
A size VAS is required in the booking request for all C2C services (5900, 5901, 5902).
Pickup point integration
When booking 5901 or 5902, use Pickup Point API to fetch nearby pickup points.
- For
5901(Parcel to Locker),pickupPointis required in the booking request and must be a pickup point of type locker. - For
5901, call Pickup Point API with query parameterpickupPointType=Lockerto filter locker pickup points. - For
5902(Parcel to Manned Pickup Point),pickupPointis optional (default handling can be used if omitted).
References:
- Pickup Point API docs: Pickup Point API
- Booking request example with optional pickup point: Optional pickup point domestic Norway
Flow A: with pickup
Use this flow when the customer wants pickup from mailbox.
-
Call Pickup API
GET /api/pickup-optionsto get available pickup dates.Example response:
{ "pickupOptions": [ { "date": "2026-05-15", "from": "08:00:00", "to": "16:00:00" }, { "date": "2026-05-18", "from": "08:00:00", "to": "16:00:00" }, { "date": "2026-05-19", "from": "08:00:00", "to": "16:00:00" }, { "date": "2026-05-20", "from": "08:00:00", "to": "16:00:00" } ] } -
Let the customer choose one of the available dates.
-
Create shipment in Booking API
POST /api/create. -
In the booking request:
- set selected service (
5900,5901, or5902) - set applicable size VAS for that service
- include pickup VAS
1073 - set
customerSpecifiedDispatchto the chosen pickup date - for
5901, include apickupPointID of type locker - for
5902,pickupPointis optional (you can omit it and use default handling)
Example:
{ "customerSpecifiedDispatch": { "startDateTime": "2019-10-25T12:30:00.000+02:00" } } - set selected service (
-
Store the booking response values needed by your platform (for example
packageNumberand tracking link). -
If customer needs changes after booking, use Pickup API:
PUT /modifyDELETE /cancel
Notes for Flow A
- When mapping a selected value from
GET /api/pickup-optionsintocustomerSpecifiedDispatch.startDateTime, you can use thetofield as time (typically07:00:00, earliest mailbox pickup). - A valid sender street address and postal code are required for mailbox pickup booking.
packageNumbershould be presented to the customer so it can be written on the parcel when relevant.- For test calls, can use testIndicator http header as true.
Flow B: without pickup
Use this flow when the customer will hand in the parcel without mailbox pickup.
- Create shipment in Booking API
POST /api/create. - In the booking request:
- set selected service (
5900,5901, or5902) - set applicable size VAS for that service
- do not include pickup VAS
1073 - do not set
customerSpecifiedDispatch - for
5901, include apickupPointID of type locker - for
5902,pickupPointis optional (you can omit it and use default handling)
- set selected service (
- Store the booking response values needed by your platform.
Customer hand-in and label-free behavior
What will be provided in the booking response. If sender email is added in the request, the sender will also get an email this information.
- 5900 (Parcel to Mailbox): Customer writes
packageNumberon the parcel. No QR code is used. - 5901 (Parcel to Locker):
- with VAS
1073: label-free code with prefixPB, no QR code - without VAS
1073: label-free code with prefixPBand QR code
- with VAS
- 5902 (Parcel to Manned Pickup Point):
- with VAS
1073: label-free code with prefixPB, no QR code - without VAS
1073: label-free code with prefixPBand QR code
- with VAS
Example values returned from Booking API:
{
"packages": [
{
"correlationId": "PACKAGE-123-TEST",
"packageNumber": "37043810444281XXXX",
"labelFreeCode": "PB-9262-XXXX",
"qrCodeLink": "https://api.qa.bring.com/labels/id/XXXXXXXXXXXXXXXXXXXXX.png"
}
]
}
Endpoint overview
| API | Endpoint | Purpose |
|---|---|---|
| Pickup API | GET /api/pickup-options |
Get available pickup dates |
| Booking API | POST /api/create |
Create shipment booking |
| Pickup API | PUT /modify |
Modify a booked pickup |
| Pickup API | DELETE /cancel |
Cancel a booked pickup |
Implementation checklist
- Validate service and size VAS combinations before sending booking request.
- For Flow A, always fetch valid pickup dates first and use a valid date in
customerSpecifiedDispatch. - For
5901, validate thatpickupPointis a locker pickup point before booking. - Use idempotent correlation/reference values in your platform to handle retries safely.
- Store identifiers from booking response for customer communication and lifecycle updates.