SendifyAPI docs
Open Sendify

Shipping guides · 2 min read

Service Point Delivery

Book shipments for delivery to a carrier service point.

This guide shows how to book shipments that should be delivered to a carrier service point (e.g. DHL Service Point). The flow consists of four API calls: create a shipment → get rates (with service-point products) → pick a service point & book.

Prerequisites

  1. Finish the Getting Started Guide – you need a valid X-API-KEY.
  2. Create a shipment – you will need its shipment_id.
  3. The shipment's receiver address must be complete and must be a private individual.
  4. Rates request must include "include_service_point_rates": true.

1. Create the shipment

Create a shipment with a receiver is a private individual.

Example request:

bash
curl -X POST https://app.dev.sendify.se/external/v1/shipments \
  -H "X-API-KEY: $YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "reference_id": "ORDER-12345",
        "to": {
          "name": "Jane Doe",
          "address": {
            "address_line_1": "Erik Dahlbergsgatan 60",
            "postal_code": "41260",
            "city": "Göteborg",
            "country_code": "SE"
          },
          "contact": {
            "name": "Jane Doe",
            "phone": "+46709998877",
            "email": "jane@example.com"
          },
          "is_private_individual": true
        },
        "packages": [{
          "description": "Shoes",
          "type": "PACKAGE",
          "quantity": 1,
          "depth_cm": 30,
          "width_cm": 20,
          "height_cm": 10,
          "weight_kg": 1.2,
          "stackable": true
        }]
      }'

Example response:

jsonc
{
  "id": "YOUR_SHIPMENT_ID",
  "reference_id": "ORDER-12345"
}

Copy the id – we'll use it in the next call.

2. Get rates that require a service point

Set include_service_point_rates to true. Rates that need a service point return the flag "require_delivery_service_point": true.

Without this flag, the API will not return service point rates. We recommend always setting this flag to true for all shipments, as it was added for backward compatibility.

bash
curl -X POST https://app.dev.sendify.se/external/v1/shipments/rates \
  -H "X-API-KEY: $YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "shipment_id": "YOUR_SHIPMENT_ID",
        "requested_pickup_time": "2025-04-10T09:00:00+02:00",
        "include_service_point_rates": true
      }'

Example response:

jsonc
{
  "rates": [
    {
      "price_rank": 1,
      "shipment_id": "YOUR_SHIPMENT_ID",
      "booking_token": "YOUR_BOOKING_TOKEN", // <── Save this
      "carrier_name": "DHL Freight",
      "product_name": "DHL Service Point",
      "price": "91",
      "currency": "SEK",
      "require_delivery_service_point": true, // <--- Service Point Rate
      "expires_at": "2025-04-09T13:27:18Z"
    }
  ],
  "warnings": [] // Carriers excluded due to field validation issues, if any
}

Save the booking_token; it is valid for 30 minutes.

3. Pick a service point & book the shipment

3.1 List nearby service points

Send the receiver address to /locations/servicepoints to get available locations:

bash
curl -X POST https://app.dev.sendify.se/external/v1/locations/servicepoints \
  -H "X-API-KEY: $YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "address_line": "Erik Dahlbergsgatan 60",
        "postal_code": "41260",
        "city": "Göteborg",
        "country_code": "SE"
      }'

Example response:

json
{
  "locations": [
    {
      "carrier": "dhl_freight_sweden",
      "service_point_token": "YOUR_SERVICE_POINT_TOKEN", // <── Save this
      "service_point_name": "LANDALA GODIS O TOBAK",
      "address_line": "ERIK DAHLBERGSGATAN 60",
      "postal_code": "41260",
      "city": "GÖTEBORG",
      "country_code": "SE",
      "distance_by_road": "610",
      "distance_great_circle": "380"
    }
  ]
}

Pick the service_point_token corresponding to the user's choice.

3.2 Book the shipment

Provide both the booking_token and the chosen service_point_token:

bash
curl -X POST https://app.dev.sendify.se/external/v1/shipments/book \
  -H "X-API-KEY: $YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "booking_token": "YOUR_BOOKING_TOKEN",
        "delivery_service_point_token": "YOUR_SERVICE_POINT_TOKEN"
      }'

Successful response:

jsonc
{
  "shipment_id": "YOUR_SHIPMENT_ID",
  "main_tracking_id": "SE11XXXXXXX0"
}

4. Quick recap

  1. Create a shipment (or use an existing one).
  2. Call POST /shipments/rates with include_service_point_rates: true → copy booking_token.
  3. Call POST /locations/servicepoints → select service_point_token.
  4. Call POST /shipments/book with both tokens.
  5. Profit – shipment booked to the selected service point!

Need help? Contact api@sendify.com and include the X-Sendify-Request-ID header from the relevant request if available.