Skip to main content

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), pickupPoint is required in the booking request and must be a pickup point of type locker.
  • For 5901, call Pickup Point API with query parameter pickupPointType=Locker to filter locker pickup points.
  • For 5902 (Parcel to Manned Pickup Point), pickupPoint is optional (default handling can be used if omitted).

References:

Flow A: with pickup

Use this flow when the customer wants pickup from mailbox.

  1. Call Pickup API GET /api/pickup-options to 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"
        }
      ]
    }
    
  2. Let the customer choose one of the available dates.

  3. Create shipment in Booking API POST /api/create.

  4. In the booking request:

    • set selected service (5900, 5901, or 5902)
    • set applicable size VAS for that service
    • include pickup VAS 1073
    • set customerSpecifiedDispatch to the chosen pickup date
    • for 5901, include a pickupPoint ID of type locker
    • for 5902, pickupPoint is optional (you can omit it and use default handling)

    Example:

    {
      "customerSpecifiedDispatch": {
        "startDateTime": "2019-10-25T12:30:00.000+02:00"
      }
    }
    
  5. Store the booking response values needed by your platform (for example packageNumber and tracking link).

  6. If customer needs changes after booking, use Pickup API:

    • PUT /modify
    • DELETE /cancel

Notes for Flow A

  • When mapping a selected value from GET /api/pickup-options into customerSpecifiedDispatch.startDateTime, you can use the to field as time (typically 07:00:00, earliest mailbox pickup).
  • A valid sender street address and postal code are required for mailbox pickup booking.
  • packageNumber should 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.

  1. Create shipment in Booking API POST /api/create.
  2. In the booking request:
    • set selected service (5900, 5901, or 5902)
    • set applicable size VAS for that service
    • do not include pickup VAS 1073
    • do not set customerSpecifiedDispatch
    • for 5901, include a pickupPoint ID of type locker
    • for 5902, pickupPoint is optional (you can omit it and use default handling)
  3. 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 packageNumber on the parcel. No QR code is used.
  • 5901 (Parcel to Locker):
    • with VAS 1073: label-free code with prefix PB, no QR code
    • without VAS 1073: label-free code with prefix PB and QR code
  • 5902 (Parcel to Manned Pickup Point):
    • with VAS 1073: label-free code with prefix PB, no QR code
    • without VAS 1073: label-free code with prefix PB and QR code

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 that pickupPoint is 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.