Third-party logistics (3PL)
Hand deliveries to a third-party courier — Shiprocket, Delhivery, Borzo, Dunzo and more. Check which vendors can serve an order, dispatch a shipment (manually or via auto-assignment), handle reverse pickups, and look up courier orders for their vendor, status and metadata (AWB, trackURL, cost). Requires the courier extension (e.g. ShipRocket). Orders are referenced by their orderId / referenceNumber and scoped to an organizationId.
https://zopping.comCourier eligibility
Before dispatch, find which courier vendors can serve an order and at what cost. Returns each eligible vendor with its shippingCost, distance and pickup/delivery estimates — rank them yourself, or let dispatch pick per your FASTEST/CHEAPEST preference.
| Field | Type | Description |
|---|---|---|
id | stringread-only | Eligible vendor id. |
name | stringread-only | |
provider | stringread-only | Vendor code, e.g. SHIPROCKET. |
courierVendorId | stringread-only | |
shippingCost | numberread-only | |
distanceKm | numberread-only | |
pickupEstimate | timestampread-only | |
deliveryStartEstimate | timestampread-only | |
deliveryEndEstimate | timestampread-only |
/api/logistics-service/courier-eligibilityCheck eligible couriers
Quick lookup for an existing order by id.
| Parameter | Type | Description |
|---|---|---|
organizationIdrequired | string· query | |
orderIdrequired | string· query |
curl "https://zopping.com/api/logistics-service/courier-eligibility?organizationId=<org-id>&orderId=ORD-55012" \
-H "Authorization: Bearer $ZOPPING_TOKEN"{
"courierVendor": [
{
"id": "1",
"name": "Shiprocket",
"provider": "SHIPROCKET",
"courierVendorId": "123",
"shippingCost": 48.5,
"distanceKm": 6.2,
"pickupEstimate": "2026-06-23T11:00:00Z"
}
]
}Courier shipments
Dispatch a packed order to a courier, list dispatched shipments, update, or cancel. On a packed order you can create the shipment manually with POST /courier, or let auto-assignment create it (see CourierGeneration in the logistics config). The response carries the vendor order id, AWB / tracking id and cost in courierDetails.
| Field | Type | Description |
|---|---|---|
id | string | Partner order id (vendor side). |
organizationId | stringrequired | |
orderId | stringrequired | Your Zopping order id / reference number. |
vendor | stringrequired | Courier vendor code — SHIPROCKET, DELHIVERY, BORZO, … |
courierVendorId | string | Specific vendor account/service to use. |
partnerOrderId | stringread-only | Vendor-assigned order id. |
status | enumread-only | PENDING · CANCELLED · COMPLETED · RETURNED (normalized). |
orderItemIds | string[] | Restrict the shipment to specific order items. |
metaData | object | Vendor payload — AWB, trackURL, label URL, cost. |
/api/logistics-service/courierList courier shipments
Filter by store, status and reference number. Paginated with `offset`/`limit` (default 20).
| Parameter | Type | Description |
|---|---|---|
organizationId | string· query | |
storeId | string· query | |
status | string· query | e.g. PENDING, COMPLETED. |
referenceNo | string· query | Order reference number. |
limit | integer· query | |
offset | integer· query |
{
"order": [
{
"id": 55012,
"referenceNumber": "ORD-55012",
"courierDetails": {
"vendorOrderId": "SR-9981",
"vendor": "SHIPROCKET",
"status": "PICKED_FROM_STORE",
"orderItemIds": [
"88120"
]
}
}
],
"count": 1,
"offset": 0,
"limit": 20
}/api/logistics-service/courierDispatch a shipment
Create a courier shipment for a packed order.
{
"organizationId": "<org-id>",
"orderId": "ORD-55012",
"vendor": "SHIPROCKET",
"courierVendorId": "123",
"orderItemIds": [
"88120"
]
}{
"courier": {
"orderId": "ORD-55012",
"vendor": "SHIPROCKET",
"partnerOrderId": "SR-9981",
"status": "PENDING",
"metaData": {
"awb": "3456789012",
"trackURL": "https://shiprocket.co/tracking/3456789012"
}
}
}/api/logistics-service/courier/{id}Update a shipment
| Parameter | Type | Description |
|---|---|---|
idrequired | string· path | Order id. |
{
"organizationId": "<org-id>",
"vendor": "SHIPROCKET",
"status": "CANCELLED"
}/api/logistics-service/courier/{id}Cancel a shipment
| Parameter | Type | Description |
|---|---|---|
idrequired | string· path | Order id. |
{
"organizationId": "<org-id>"
}Auto-dispatch
One call to let Zopping pick a courier and dispatch, honouring your preference. Use this instead of POST /courier when you want the platform to choose the vendor (cheapest or fastest) rather than naming one.
| Field | Type | Description |
|---|---|---|
orderId | stringrequired | Must be a positive order id. |
organizationId | stringrequired | |
storeId | string | |
preference | enum | CHEAPEST · FASTEST. Defaults to the org tplPreference, else FASTEST. |
/api/logistics-service/shipmentCreate a shipment (auto-select vendor)
{
"organizationId": "<org-id>",
"orderId": "55012",
"storeId": "<store-id>",
"preference": "FASTEST"
}"Shipment created successfully."Reverse shipments
Return an order (or specific items) back to the store via a courier reverse pickup. Create a reverse shipment with source/destination addresses and package details, list them with status filters, and update status.
| Field | Type | Description |
|---|---|---|
referenceNumber | stringrequired | Your reverse-shipment reference. |
organizationId | stringrequired | |
partner | stringrequired | Courier vendor code. |
storeID | integer | |
courierVendorId | string | |
sourceAddress | object | Pickup (customer) address. |
destinationAddress | object | Drop (store/warehouse) address. |
packageDetail | object | { length, breadth, height, weight } + per-package items. |
items | object[] | Returned items: { id, name, deliveredQuantity, mrp }. |
invoiceAmount | string | |
status | enumread-only | PENDING · CANCELLED · COMPLETED · RETURNED. |
partnerReferenceId | stringread-only | Vendor-assigned id. |
/api/logistics-service/reverse-shipmentList reverse shipments
| Parameter | Type | Description |
|---|---|---|
organizationIdrequired | string· query | |
status | string· query | Repeatable — include these statuses. |
voidStatus | string· query | Repeatable — exclude these statuses. |
referenceNumber | string· query | Repeatable. |
limit | integer· query | |
offset | integer· query |
{
"reverseShipment": [
{
"id": 771,
"referenceNumber": "RET-771",
"partner": "DELHIVERY",
"status": "PENDING",
"orderItemIds": [
"88120"
]
}
],
"count": 1,
"offset": 0,
"limit": 20
}/api/logistics-service/reverse-shipmentCreate a reverse shipment
{
"organizationId": "<org-id>",
"storeID": 7,
"referenceNumber": "RET-771",
"partner": "DELHIVERY",
"courierVendorId": "123",
"sourceAddress": {
"name": "Asha",
"phone": "9876543210",
"address": "12 MG Road",
"city": "Bengaluru",
"pincode": "560001",
"state": "Karnataka"
},
"destinationAddress": {
"name": "MG Road Store",
"pincode": "560002",
"city": "Bengaluru",
"state": "Karnataka"
},
"packageDetail": {
"length": 20,
"breadth": 15,
"height": 10,
"weight": 0.5
},
"items": [
{
"id": 88120,
"name": "Aashirvaad Atta 5kg",
"deliveredQuantity": "1",
"mrp": "28.00"
}
],
"invoiceAmount": "28.00",
"orderItemIds": [
"88120"
]
}{
"id": 771,
"referenceNumber": "RET-771",
"partner": "DELHIVERY",
"status": "PENDING",
"partnerReferenceId": "DL-4410"
}/api/logistics-service/reverse-shipment/{id}Update a reverse shipment
| Parameter | Type | Description |
|---|---|---|
idrequired | string· path |
{
"organizationId": "<org-id>",
"status": "CANCELLED"
}Courier order lookup
Fetch the courier shipment records for one or more of your orders — the vendor, its status and metadata (AWB, trackURL, cost).
/api/logistics-service/courier-orderGet courier orders
| Parameter | Type | Description |
|---|---|---|
organizationIdrequired | string· query | |
orderIds | string· query | Comma-separated order ids. |
curl "https://zopping.com/api/logistics-service/courier-order?organizationId=<org-id>&orderIds=ORD-55012,ORD-55013" \
-H "Authorization: Bearer $ZOPPING_TOKEN"{
"courierOrder": [
{
"orderId": "ORD-55012",
"vendor": "SHIPROCKET",
"partnerOrderId": "SR-9981",
"status": "PICKED_FROM_STORE"
}
]
}