Couriers API

This REST API manages customer shipping couriers for a warehouse profile. For the API to work properly, create a warehouse profile to obtain API key and warehouse ID. This API also requires a valid partner ID.

To avoid per minute quota, requests should be spread out whenever possible.

Hash Types
Status Hash
success
boolean
Status of API request.
messages
list
List of messages of type string.
Courier Hash
courierId
string
Courier identifier.
enabled
boolean
Enable or disable the courier. Default is true.
type
integer
Courier type:
  • 0 - Custom Courier
courier
string
Courier display name, e.g. Custom Courier.
service
string
Service display name, e.g. Express Delivery.
containers
list
Optional list of containerId. Refer to Containers API.
tags
list
Optional tags (max 10). Allowed characters are alphanumerics, underscores, and colons.
weightUnit
string
Weight unit for rates table intervals: "lb" (default), "oz", "kg", or "g".
dimensionalWeightEnabled
boolean
Enable dimensional weight for the custom courier. Default is false.
dimensionalWeightDivisor
float
Positive divisor used when dimensional weight is enabled. Default is 1.
dimensionalWeightMinVolume
float
Minimum volume before dimensional weight applies. Default is 0.
dimensionalWeightVolumeUnit
string
Volume unit: "in" (default), "ft", "cm", or "m".
ratesTable
string
Optional CSV-like string with max 300 lines. For example:
country,region,post,fee,10,20,30
gb,%,SW1%,3,10.00,12.00,14.00
us,%,90100-92199,1,4.00,4.50,5.00
us,%,75001,0.5,6.00,6.50,7.00
postageTaxTable
string
Optional CSV-like string with max 300 lines. For example:
country,region,post,percentage
GB,%,SW1%,12
US,%,90100-90199,6.75
US,%,75001,10
handlingTaxTable
string
Optional CSV-like string with max 300 lines. For example:
country,region,post,percentage
GB,%,SW1%,12
US,%,90100-90199,6.75
US,%,75001,10
List Couriers
URI
http(s)://api.solvingmaze.com/api/v1/couriers/partner/PARTNER/key/API_KEY/warehouse/WAREHOUSE_ID
Query Parameters
offset
integer, optional
Pagination offset. Default 0.
limit
integer, optional
Max results per request. Default 100.
courierId
string or list, optional
Filter by courier ID.
Output Parameters
Request status and messages.
couriers
list
Output Example
{
    "status": {"success": true, "messages": []},
    "couriers": [
        {
            "enabled": true,
            "type": 0,
            "courier": "Custom Courier",
            "service": "Express Delivery",
            "tags": ["parcel", "ground"],
            "courierId": "f3b4a6c8-7b3c-4d2c-94ab-2c1f6cdb2c99",
            "containers": [
                "06bb9ea1-0fcf-4d25-90aa-c7aab916abfb"
            ],
            "weightUnit": "lb",
            "dimensionalWeightEnabled": true,
            "dimensionalWeightDivisor": 139,
            "dimensionalWeightMinVolume": 0,
            "dimensionalWeightVolumeUnit": "in",
            "ratesTable": "country,region,post,fee,1,5,10\nus,CA,90000-96999,0,8.5,10.75,13",
            "postageTaxTable": "country,region,post,percentage\nus,CA,90000-96999,7.25",
            "handlingTaxTable": "country,region,post,percentage\nus,CA,90000-96999,2.5"
        }
    ]
}
			
Create Couriers
URI
http(s)://api.solvingmaze.com/api/v1/couriers/partner/PARTNER/key/API_KEY/warehouse/WAREHOUSE_ID
Input Parameters
couriers
list or hash
A list of courier hashes without courier ID. A single courier hash is also accepted.
Input Example
{
    "couriers": [
        {
            "enabled": true,
            "type": 0,
            "courier": "Custom Courier",
            "service": "Express Delivery",
            "containers": [
                "06bb9ea1-0fcf-4d25-90aa-c7aab916abfb"
            ],
            "tags": ["parcel", "ground"],
            "weightUnit": "lb",
            "dimensionalWeightEnabled": true,
            "dimensionalWeightDivisor": 139,
            "dimensionalWeightMinVolume": 0,
            "dimensionalWeightVolumeUnit": "in",
            "ratesTable": "country,region,post,fee,1,5,10\nus,CA,90000-96999,0,8.5,10.75,13",
            "postageTaxTable": "country,region,post,percentage\nus,CA,90000-96999,7.25",
            "handlingTaxTable": "country,region,post,percentage\nus,CA,90000-96999,2.5"
        }
    ]
}
			
Output Example
{
    "couriers": [
        {
            "enabled": true,
            "type": 0,
            "courier": "Custom Courier",
            "service": "Express Delivery",
            "tags": ["parcel", "ground"],
            "courierId": "f3b4a6c8-7b3c-4d2c-94ab-2c1f6cdb2c99",
            "containers": [
                "06bb9ea1-0fcf-4d25-90aa-c7aab916abfb"
            ],
            "weightUnit": "lb",
            "dimensionalWeightEnabled": true,
            "dimensionalWeightDivisor": 139,
            "dimensionalWeightMinVolume": 0,
            "dimensionalWeightVolumeUnit": "in",
            "ratesTable": "country,region,post,fee,1,5,10\nus,CA,90000-96999,0,8.5,10.75,13",
            "postageTaxTable": "country,region,post,percentage\nus,CA,90000-96999,7.25",
            "handlingTaxTable": "country,region,post,percentage\nus,CA,90000-96999,2.5"
        }
    ],
    "status": {
        "success": true,
        "messages": [
            "Data saved succesfully."
        ]
    }
}
			
Update Couriers
URI
http(s)://api.solvingmaze.com/api/v1/couriers/partner/PARTNER/key/API_KEY/warehouse/WAREHOUSE_ID

Important: PUT updates only the fields you send. Fields omitted from a PUT request remain unchanged. To clear containers or tags, send an empty array. To clear ratesTable, postageTaxTable, or handlingTaxTable, send an empty string.

Input Parameters
couriers
list or hash
A list of courier hashes with courier ID. A single courier hash is also accepted.
Input Example
{
    "couriers": [
	        {
	            "courierId": "f3b4a6c8-7b3c-4d2c-94ab-2c1f6cdb2c99",
	            "service": "Express Delivery",
	            "containers": [],
	            "tags": ["parcel"],
	            "ratesTable": "country,region,post,fee,1,5,10\nus,CA,90000-96999,0,9.25,11.5,14.25",
	            "postageTaxTable": "",
	            "handlingTaxTable": ""
	        }
    ]
}
			
Output Example
{
    "couriers": [
        {
            "enabled": true,
            "type": 0,
            "courier": "Custom Courier",
            "service": "Express Delivery",
            "tags": ["parcel"],
            "courierId": "f3b4a6c8-7b3c-4d2c-94ab-2c1f6cdb2c99",
            "containers": [],
            "weightUnit": "lb",
            "dimensionalWeightEnabled": false,
            "dimensionalWeightDivisor": 1,
            "dimensionalWeightMinVolume": 0,
            "dimensionalWeightVolumeUnit": "in",
            "ratesTable": "country,region,post,fee,1,5,10\nus,CA,90000-96999,0,9.25,11.5,14.25",
            "postageTaxTable": "",
            "handlingTaxTable": ""
        }
    ],
    "status": {
        "success": true,
        "messages": [
            "Data saved succesfully."
        ]
    }
}
			
Delete Couriers
URI
http(s)://api.solvingmaze.com/api/v1/couriers/partner/PARTNER/key/API_KEY/warehouse/WAREHOUSE_ID
Input Parameters
couriers
list or hash
A list of objects containing courier ID. A single object with courierId is also accepted.
Input Example
{
    "couriers": [
        {"courierId": "f3b4a6c8-7b3c-4d2c-94ab-2c1f6cdb2c99"}
    ]
}
			
Output Example
{
    "status": {
        "success": true,
        "messages": [
            "Data deleted succesfully."
        ]
    }
}
			
Code Examples:   PHP | Ruby | C# | Python | Javascript

The example code creates, updates, and deletes a custom courier. Refer to Containers API on how to manage containers.

Important: PUT updates only the fields you send. Fields omitted from a PUT request remain unchanged. To clear containers or tags, send an empty array. To clear ratesTable, postageTaxTable, or handlingTaxTable, send an empty string.

<?php

$baseUrl = "https://api.solvingmaze.com/api/v1/couriers/partner/$partner/key/$apiKey/warehouse/$warehouseId";
$headers = array('Content-Type: application/json');
$containerId = "CONTAINER_ID";

$create = array(
	"couriers" => array(
		array(
			"enabled" => true,
			"type" => 0,
			"courier" => "Custom Courier",
			"service" => "Express Delivery",
			"containers" => array($containerId),
			"tags" => array("parcel"),
			"weightUnit" => "lb",
			"dimensionalWeightEnabled" => true,
			"dimensionalWeightDivisor" => 139,
			"dimensionalWeightMinVolume" => 0,
			"dimensionalWeightVolumeUnit" => "in",
			"ratesTable" => "country,region,post,fee,1,5,10\nus,CA,90000-96999,0,8.5,10.75,13"
		)
	)
);
$ch = curl_init($baseUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($create));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$createResponse = curl_exec($ch);
curl_close($ch);
echo $createResponse;

$courierId = "COURIER_ID";
$update = array(
	"couriers" => array(
		array(
			"courierId" => $courierId,
			"enabled" => true,
			"type" => 0,
			"courier" => "Custom Courier",
			"service" => "Express Delivery",
			"containers" => array(),
			"tags" => array("parcel"),
			"weightUnit" => "lb",
			"dimensionalWeightEnabled" => false,
			"dimensionalWeightDivisor" => 1,
			"dimensionalWeightMinVolume" => 0,
			"dimensionalWeightVolumeUnit" => "in",
			"ratesTable" => "country,region,post,fee,1,5,10\nus,CA,90000-96999,0,9.25,11.5,14.25",
			"postageTaxTable" => "",
			"handlingTaxTable" => ""
		)
	)
);
$ch = curl_init($baseUrl);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($update));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$updateResponse = curl_exec($ch);
curl_close($ch);
echo $updateResponse;

$delete = array(
	"couriers" => array(
		array("courierId" => $courierId)
	)
);
$ch = curl_init($baseUrl);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($delete));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$deleteResponse = curl_exec($ch);
curl_close($ch);
echo $deleteResponse;

?>

UPS, FedEx, DHL, Spee-Dee, USPS, Shopify trademarks are property of their respective owners.
SolvingMaze Ltd, Company No. 11016672, Copyright © 2026  
    Contact  -  FAQ  - Knowledge Base  -  Terms Of Service  -  Privacy Policy