Skip to main content
POST
/
shipping-options
curl --request POST \
  --url https://panel.sendcloud.sc/api/v3/shipping-options \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "from_country_code": "NL",
  "to_country_code": "NL",
  "from_postal_code": "1012AB",
  "to_postal_code": "2000AB",
  "parcels": [
    {
      "dimensions": {
        "length": "30",
        "width": "20",
        "height": "15",
        "unit": "cm"
      },
      "weight": {
        "value": "2",
        "unit": "kg"
      },
      "additional_insured_price": {
        "value": "50.00",
        "currency": "EUR"
      }
    },
    {
      "dimensions": {
        "length": "25",
        "width": "18",
        "height": "12",
        "unit": "cm"
      },
      "weight": {
        "value": "1.5",
        "unit": "kg"
      },
      "total_insured_price": {
        "value": "100.00",
        "currency": "EUR"
      }
    }
  ],
  "carrier_code": "postnl",
  "functionalities": {
    "signature": true
  },
  "calculate_quotes": true
}
'
{
"data": [
{
"code": "postnl:standard/signature",
"name": "PostNL Standard + Handtekening",
"carrier": {
"code": "postnl",
"name": "PostNL"
},
"product": {
"code": "postnl:standard",
"name": "PostNL Standard"
},
"functionalities": {
"b2b": true,
"b2c": true,
"ers": false,
"size": null,
"tyres": false,
"sorted": false,
"boxable": false,
"premium": false,
"returns": false,
"segment": null,
"tracked": true,
"id_check": false,
"incoterm": null,
"manually": false,
"priority": null,
"age_check": null,
"insurance": null,
"labelless": false,
"last_mile": "home_delivery",
"signature": true,
"surcharge": false,
"first_mile": "pickup_dropoff",
"multicollo": true,
"bulky_goods": false,
"form_factor": "parcel",
"fresh_goods": false,
"eco_delivery": false,
"service_area": "domestic",
"flex_delivery": false,
"fragile_goods": false,
"non_conveyable": false,
"dangerous_goods": false,
"delivery_before": null,
"cash_on_delivery": null,
"harmonized_label": false,
"weekend_delivery": null,
"carrier_insurance": false,
"delivery_attempts": null,
"delivery_deadline": "best_effort",
"neighbor_delivery": true,
"customs_value_limit": null,
"registered_delivery": false,
"carrier_billing_type": null,
"personalized_delivery": false,
"pick_up": false,
"direct_contract_only": false
},
"contract": {
"id": 60,
"client_id": "",
"carrier_code": "postnl",
"name": "PostNL Test"
},
"weight": {
"min": {
"value": "0.001",
"unit": "kg"
},
"max": {
"value": "23.001",
"unit": "kg"
}
},
"max_dimensions": {
"length": "175.00",
"width": "78.00",
"height": "58.00",
"unit": "cm"
},
"parcel_billed_weights": [
{
"unit": "kg",
"value": "4.000",
"volumetric": false,
"calculation": null,
"parcel_number": 1
}
],
"requirements": {
"fields": [],
"export_documents": false,
"is_service_point_required": false
},
"charging_type": "label_creation",
"quotes": [
{
"weight": {
"min": {
"value": "0.001",
"unit": "kg"
},
"max": {
"value": "23.001",
"unit": "kg"
}
},
"price": {
"breakdown": [
{
"type": "price_without_insurance",
"label": "Label",
"price": {
"value": "15.50",
"currency": "EUR"
}
},
{
"type": "insurance_price",
"label": "Shipment protection (incl. taxes)",
"price": {
"value": "2.00",
"currency": "EUR"
}
}
],
"total": {
"value": "17.50",
"currency": "EUR"
}
},
"lead_time": 24
}
]
}
]
}
Unlike the Create a list of shipping options endpoint, this endpoint:
  • Accepts multiple parcels with individual dimensions and weights
  • Returns total pricing for the entire shipment
You must have either enabled a carrier in your Sendcloud account, or connected your own direct carrier contract, in order to be able to retrieve shipping options related to that carrier via this endpoint. When shipping to a remote area, it’s possible that a remote surcharge will be invoiced. Make sure to provide the from_country_code, to_country_code and to_postal_code to see remote surcharges in the price breakdown. Similarly, to access zonal prices, provide from_country_code, to_country_code, from_postal_code, and to_postal_code. When neither to_country_code nor from_country_code is provided, the shipping options will be returned without quotes irrespective of the value you pass into calculate_quotes.

Development status

This endpoint is currently in beta, meaning that it is still under development. During this phase, we continually monitor and test the API to improve its performance, review the requested and the returned data, and uncover any potential bugs that could have a future impact on our users.
Please note that there is a possibility of experiencing breaking changes while the endpoint is still in beta.
Last updated at: 17-09-2025.

Authorizations

Authorization
string
header
required

Basic Authentication using API key and secrets is currently the main authentication mechanism.

Body

application/json

Shipment details for quote calculation

from_country_code
string | null

Sender country code in ISO 3166-1 alpha-2 format.

to_country_code
string | null

Destination country code in ISO 3166-1 alpha-2 format.

from_postal_code
string | null

The postal code of the sender address. Should be provided, to make quotes as accurate as possible.

Maximum string length: 12
to_postal_code
string | null

The postal code of the destination address. Should be provided, to make quotes as accurate as possible.

Maximum string length: 12
to_service_point_id
integer | null

Service point ID as specified in the Retrieve a list of service points endpoints.

parcels
object[] | null

List of parcels in a shipment.

functionalities
Shipping Functionalities Object · object

Shipping functionalities

carrier_code
string | null

Carrier code.

contract_id
integer | null

Contract id.

shipping_product_code
string | null

Shipping product code.

shipping_option_code
string | null

Specific shipping option code to use for pricing.

lead_time
Lead Time Filter Object · object

Filter to trim down shipping options with a specific lead time.

calculate_quotes
boolean | null
default:false

If true, the quotes will be retrieved for the provided parcels and other parameters.

If false, the quotes will not be retrieved, and the shipping options will be returned without quotes.

This is useful when you want to return shipping options with/without retrieving quotes.

The default value is false.

Response

List of shipping options for a shipment.

data
Shipping Option · object[] | null
required

A list of shipping options suitable for entire shipments. Each option includes total pricing for the entire shipment and breakdown per parcel. If the request doesn't pass basic details about the parcels (e.g. from_country, to_country), it's possible that the data will be null.