PickupOrderRequest
The customer's address where the rider will pick up the return item.
Where the picked-up item should be delivered — either the seller's address (RTS) or your warehouse (RTO).
List of items being picked up. At least one item required.
CustomerDetails
nameCustomer name. Truncated to 100 characters.
contactCustomer phone number. 10-14 characters, digits and an optional leading +. Sent through as given — no country-code stripping happens on this field.
addressFull pickup address.
citypincode6-digit pickup pincode.
address2Second line of the pickup address.
alternate_contactSecondary phone number for the customer.
latitudelongitudelocation_accuracyGPS accuracy of the supplied coordinates — L (over 500m), H (100-500m), G (under 100m). A value outside this set is dropped rather than rejected.
location_typeType of pickup location. A value outside this set is dropped rather than rejected.
stateCustomer's state.
ReturnDetails
return_typeseller — return to the seller (RTS). origin or warehouse — return to your warehouse (RTO); the two behave identically.
addressFull return address.
pincode6-digit return destination pincode.
nameSeller name or warehouse name. Required for seller return type.
contactContact number. Required for seller return type. Optional otherwise. A leading +91 or 91 is stripped on this field.
cityemaillatitudelongitudeunique_codeYour internal identifier for this seller or warehouse location.
OrderDetails
client_order_idYour unique order identifier. Sending the same ID twice returns the existing order instead of creating a duplicate.
awb_numberYour own tracking number. If not provided, Shadowfax auto-assigns one.
priceProduct value. If Rs. 50,000 or above, eway_bill becomes mandatory.
total_amountTotal order amount including taxes.
eway_billGST e-way bill number (exactly 12 digits). Mandatory when price is Rs. 50,000 or above.
pickup_typeregular — standard pickup. slot — pickup in a chosen window; requires preferred_start_time and preferred_end_time. self_drop — customer drops the item off; cannot be combined with a seller return type. surface — surface transport, enabled per account.
invoice_dateInvoice date. Format: YYYY-MM-DD.
actual_weightActual weight in kilograms. Sending grams will place the shipment in the highest weight slab.
volumetric_weightVolumetric weight in kilograms. Sending grams will place the shipment in the highest weight slab.
reseller_nameName of the reseller, if applicable.
preferred_start_timeStart of the requested pickup window. Required when pickup_type is slot.
preferred_end_timeEnd of the requested pickup window. Required when pickup_type is slot.
additional_detailsOptional extras. return_otp must be exactly 4 digits if supplied. rider_name must be a non-empty string if supplied.
SkuDetails
sku_nameProduct name.
priceItem price.
sku_idYour SKU identifier.
categorybrandreturn_reasonReason for return — free text or your internal reason code.
qc_requiredWhether the rider should perform a quality check before accepting the item.
hsn_codeHSN code for GST classification.
invoice_noInvoice number for this item.
Registered seller details for GST/tax purposes.
Tax breakdown for the item.
Extra item attributes for QC and handling.
Custom quality check questions the rider must verify during pickup.
SellerDetails
seller_nameseller_addressseller_stategstin_numberSeller's GSTIN number.
Taxes
cgst_amountsgst_amountigst_amounttotal_tax_valueSkuAdditionalDetails
colorsizesku_imagesProduct image URLs for rider QC reference.
quantity_valueNumber of units.
quantity_unitUnit of measurement (e.g. pcs, kg).
imeiIMEI number for electronics.
serial_noSerial number for the item.
requires_extra_careFlag for items needing special handling.
type_extra_careCategory of special handling required.
QCRule
questionThe QC question shown to the rider.
is_mandatoryWhether the rider must answer this before completing pickup.
valueExpected answer or reference value.
PickupOrderResponse
messageerrorsAlways null on success.
ErrorResponse
messageError details — either a string message or an object with field-level validation errors.
TrackingAddress
nameMasked empty in tracking responses.
phone_numberMasked empty in tracking responses.
address_lineMasked empty in tracking responses.
citystatepincodecreated_atISO 8601 timestamp.
updated_atISO 8601 timestamp.
alternate_contactEmpty in tracking responses.
TrackingSku
client_sku_idClient's SKU identifier.
nameProduct name.
pricereturn_reasonbrandcategoryadditional_detailsArbitrary key-value pairs (color, size, etc.).
pickedWhether this SKU was physically collected by the rider.
qc_statuspassed — QC passed at doorstep. fail — QC failed at doorstep. fail_hub — QC failed at hub.
qc_remarksRider or hub QC remarks.
Seller details as returned in tracking SKU objects. Field names differ from the order creation schema.
Tax breakdown as returned in tracking SKU objects.
hsn_codeinvoice_noqc_imagesImages captured during QC (URLs).
TrackingSkuSellerDetails
regd_nameRegistered seller name.
regd_addressRegistered seller address.
stategstinTrackingSkuTaxes
cgst_amountsgst_amountigst_amounttotal_tax_amountTrackingEvent
created_atISO 8601 timestamp of the transition.
current_locationHub or location name where the event occurred.
stateDisplay name of the state. The values in use are: New, Assigned, Out For Pickup, Picked, Received, Cancelled, Cid, Not Contactable, Not Attempted, Undelivered, On Hold, Returned To Client, QC Failed, Lost, Pending Inscan, Item added to Bag, Bag In Transit, Bag Received, Bag Received at Via, Received at Return DC, In Transit for RTS, In Transit for RTO, Bag in transit for return, Received at RTS destination hub, Return Shipment Out for Delivery, Return to Seller initiated. Treat this as an open set — an event whose state is not recognised falls back to the raw internal label, so match on known values and pass anything else through unchanged.
commentAdditional context about the event.
PickupTrackingResponse
client_order_numberClient's order identifier.
request_typeAlways 'pickup' for reverse logistics orders.
client_request_idAWB number (same as the path parameter).
client_idShadowfax client ID.
destination_pincodeReturn destination pincode. Null if not set.
priceAlways null in tracking responses.
Address structure returned in tracking responses. PII fields (name, phone_number, address_line) are masked empty for privacy.
Seller/return address. Null for RTO orders.
status_last_updated_atISO 8601 timestamp of the last status update.
statusCurrent status of the order, as a display name.
scheduled_dateScheduled pickup date as milliseconds since epoch.
date_createdOrder creation date as milliseconds since epoch.
pickup_typeConfirmed pickup type.
Chronological list of all state transitions.
slot_start_timeStart of the agreed pickup window. Set only for slot pickups, null otherwise.
slot_end_timeEnd of the agreed pickup window. Set only for slot pickups, null otherwise.
BulkTrackingRequest
request_idsList of AWB numbers to track. Maximum 50.
BulkTrackingResponse
client_order_numberClient's order identifier.
request_typeAlways 'pickup' for reverse logistics orders.
client_request_idAWB number (same as the path parameter).
client_idShadowfax client ID.
destination_pincodeReturn destination pincode. Null if not set.
priceAlways null in tracking responses.
Address structure returned in tracking responses. PII fields (name, phone_number, address_line) are masked empty for privacy.
Seller/return address. Null for RTO orders.
status_last_updated_atISO 8601 timestamp of the last status update.
statusCurrent status of the order, as a display name.
scheduled_dateScheduled pickup date as milliseconds since epoch.
date_createdOrder creation date as milliseconds since epoch.
pickup_typeConfirmed pickup type.
Chronological list of all state transitions.
slot_start_timeStart of the agreed pickup window. Set only for slot pickups, null otherwise.
slot_end_timeEnd of the agreed pickup window. Set only for slot pickups, null otherwise.
CancellationRequest
request_idAWB number or your client_order_id identifying the order to cancel.
cancel_remarksReason for cancellation.
OrderUpdateRequest
awb_numberAWB number of the order to update.
Updated customer pickup details. Cannot be modified after Out For Pickup.
Updated return/seller details. Cannot be modified after RTS/RTO phase begins.
Updated order-level metadata.
Updated SKU/product information.
PickupDetailsUpdate
contactCustomer phone number.
alternate_contactCustomer alternate phone number.
latitudelongitudecustomer_addressUpdated pickup address.
pincodeUpdated pickup pincode.
ReturnDetailsUpdate
contactReturn destination contact number.
latitudelongitudeemailpincodeUpdated return destination pincode.
return_addressUpdated return address.
capture_delivery_imageWhether to capture image at delivery.
OrderDetailsUpdate
eway_bill_number^[0-9]{12}$GST e-way bill number (exactly 12 digits).
return_eway_bill_numberE-way bill number for the return leg.
invoice_numberInvoice number.
actual_weightActual weight in grams.
volumetric_weightVolumetric weight in grams.
ProductDetailsUpdate
sku_idShadowfax internal SKU ID (if known).
client_sku_idYour SKU identifier.
sku_nameProduct name.
hsn_codeinvoice_nocategorybrandpriceSeller details as returned in tracking SKU objects. Field names differ from the order creation schema.
Tax breakdown as returned in tracking SKU objects.
additional_detailsArbitrary key-value pairs (color, size, etc.).
PODRequest
awb_numbersList of AWB numbers. Maximum 100.
PODResponse
messageDictionary keyed by AWB number with POD information.
PODDetail
recipientWho took delivery. Null when the captured value is outside this set.
recipient_nameName of the person who received the item. Comes back as the literal string "None" when it was not captured.
recipient_contactContact number of the recipient. Comes back as the literal string "None" when it was not captured.
recipient_signatureURL of the recipient's signature image. Comes back as the literal string "None" when no signature was captured — not JSON null.
AWBRequest
countNumber of AWB numbers to generate. Default 1000, maximum 350,000.
ServiceabilityResult
code6-digit pincode.
servicesList of service tiers available for this pincode (e.g., 'Regular', 'Surface').
TrackingErrorResponse
responseMsgError message.
responseCodeHTTP status code.
TrackingMessageResponse
responseMsgSuccess message.
responseCodeHTTP status code.
AuthErrorResponse
statuserrorCodeReason for the failure. Carries the same text as message rather than a separate code.
messageHuman-readable error message.
DuplicateOrderResponse
client_order_numberYour client_order_id from the original request.
client_request_idThe AWB of the existing order. Note the field name differs from awb_number on a fresh creation.
request_typepickup for reverse orders.
client_iddestination_pincodepricestatusDisplay status, title-case (e.g. New) — differs from the lower-case new returned on a fresh creation.
pickup_typeaddressPickup address as stored.
SKUs as stored.
sellerstatus_last_updated_atpickup_request_state_historiesscheduled_datedate_created