Reverse Order Creation with QC

Reverse Shipment with QC (Quality Check)

Reverse shipment with QC refers to the process of inspecting and verifying products at the moment of their return by the end customer, specifically during the collection phase by the carrier partner. This quality control check is conducted on returned items to ensure that they match the originally delivered products and meet the required quality standards.

How it works

Order Creation with QC Request:

The client initiates a reverse order creation through the API, specifying that Quality Control (QC) is required for this particular reverse order. This can be indicated through a dedicated parameter or flag in the API request .

Parameter Specification:

In this section client needs to configure the parameters on which the QC will be done.

  • Client provides a list of QC parameters supported by the carrier partner for QC.
  • ClickPost configures its system with the provided list of QC parameters for that particular account and carrier partner combination.

From the list configured above. Client can send the set of params to the carrier partner for QC, currently ClickPost support 3 ways to send the parameters to carrier partner:

Account Based QC:

  • From configured list client provides the list of params which needs to be considered for QC while sending the order request to carrier partner and those params are specifically configured.
  • The Client sends the order creation request to clickpost
  • ClickPost forwards the order creation request to the carrier, including the client-selected parameters to be considered for quality control (QC)

Field Based QC:

In field-based QC, the client configure the parameters needs to be sent to carrier based on the ClickPost API Payload Field values

For example, if the field "rvp_reason" is set to "quality," then the QC parameters would include "Brand" and "Color."

  • Client can configure the field based QC by providing the field name along with values and QC params which needs to be configured this request can be raised at

QC Params directly passed in API request:

In this client can pass the parameters from the configured list directly in the API request.

Priority Order for Reverse QC Execution:

QC TypePriority
QC Params in API1
Field Based2
Account Based3

QC Params in API (Priority 1):

If QC parameters are specified in the API request, they will take precedence, and the QC check will be executed based on these parameters.

Field Based (Priority 2):

If no QC parameters are specified in the API request, the system will then consider the Field-Based QC.

Account Based (Priority 3):

If neither QC parameters nor Field-Based QC are configured or specified, the system will resort to Account-Based QC.

List of Parameters Supported

ParameterDescription
CATEGORYCategory of the item being subjected to QC.
SUB_CATEGORYRefines the item classification further.
DESCRIPTIONDetailed description of the item for QC.
QUANTITYQuantity of items being processed in the QC check.
SKUStock Keeping Unit (SKU) associated with the item.
ITEM_IMAGESImages of the item for visual inspection.
COLORColor of the item.
SERIAL_NUMBERUnique identifier assigned to the item.
SIZESize of the item.
RETURN_REASONReason for the item's return.
EANEuropean Article Number for unique product ID.
CHECK_USEDCheck for item usage.
CHECK_PRICE_TAGPresence and accuracy of the price tag.
CHECK_PACKAGING_BOXCondition of the packaging box.
TEMPLATE_IDTemplate ID associated with the item.
TEMPLATE_CATEGORYCategory of the template used.
QC_ONLYFlag for exclusive QC evaluation.
BRANDBrand of the item.
CHECK_DAMAGEDInspection for damages.
SPECIAL_INSTRUCTIONAdditional instructions for QC.
IMEIInternational Mobile Equipment Identity.
QC_VERSION2Specific version of the QC process.
PRICE_MATCHMatching the item's price against specified criteria.
LAST_5_DIGIT_OF_IMEI_CHECKCheck for the last 5 digits of the IMEI number.
PHONE_SWITCH_POWER_CHECKVerification of the phone's power switch.
ALL_BUTTONS_WORKING_CHECKVerification of all buttons on the item.
PHONE_CONDITION_CHECKEvaluation of the overall condition of the phone.
PHONE_TOUCH_SCREEN_CHECKVerification of the phone's touch screen.
PHONE_CAMERA_CHECKInspection of the phone's camera functionality.
LAST_4_DIGIT_OF_SKU_CHECKCheck for the last 4 digits of the SKU.
LAST_4_DIGIT_OF_EAN_CHECKCheck for the last 4 digits of the EAN.
HARD_CHECK_BRANDRigorous check focused on the item's brand.
HARD_CHECK_QUANTITYThorough assessment of the item's quantity.
ARTICLE_NUMBERArticle number associated with the item.
SEAL_NUMBERSeal number for items with seals.
CHECK_SEALVerification of the integrity of the item's seal.
RVP_REASON_DYNAMIC_QC_FLOWQC flow determined dynamically based on the RVP reason.
MULTI_SKU_MANIFEST_FLOWSpecialized QC flow for items with multiple SKUs.
GARMENTS_CONDITION_CHECKAssessment of the condition of garments.
CHECK_PLASTIC_LOCK_TAGVerification of the presence and condition of plastic lock tags.

Geography

This API supports conversions for carriers in India.

📘

Please refer to the list of supported carrier partners below

Supported Carrier Partners Reverse Order Creation with QC:

  1. BlueDart
  2. Delhivery
  3. Ecom
  4. Ekart
  5. ShadowFax
  6. Xpressbees

How to Activate QC for your Account

Reach out to our team at [[email protected]] with the below details

  • Account Code
  • Courier Partner (for which the QC needs to be enabled )
  • List of QC Params to be enabled

Sample Template

Subject: QC Activation Request for [Courier Partner Name]

Dear Clickpost Support Team,

I am reaching out to request the activation of Quality Check (QC) for my configured courier account.

Courier Partner: [Specify courier partner name]
Account Code: [Find in Clickpost dashboard]

List of Parameters:

  1. [Parameter 1]
  2. [Parameter 2]
  3. [Parameter 3]
    ...

Placing Reverse Shipment with QC (RVP with QC) Requests

  • This request will be required If the enterprise is interested in conducting a quality-control check (QC check) at the end-user's end by the carrier
  • The carrier partner to be used to place the RVP with QC order must support RVP with QC shipments.

Account and Field Based Request

Client can pass the param qc_typeas "doorstep"in the additional object of the payload. The system will treat that request as Reverse QC request and execute according to the priority order mentioned above.

QC Params directly in API

Client can pass the param qc_typeas "doorstep"and qc_params : ["Param 1 ", "Param 2"] in the additional object of the payload. In addition client will have to pass all the QC params within the API request in the additional object of the payload

Path

POST <https://www.clickpost.in/api/v3/create-order/?username=*****&key=*****>

Query Parameters

Query Parameters to be passed directly in the URL.

Field NameData TypeFieldDescriptionMax LengthExample
usernameStringMandatoryUsername of the enterprise100"test-enterprise"
keyStringMandatoryUnique API key provided by Clickpost for the enterprise100"92we9be5-3de8-4223-ad14-d7391159b80e"

Payload

The payload will consist of the following fields:

Field NameData TypeFieldDescriptionMax LengthExample
pickup_infoObjectMandatoryInformation for where the shipment will be picked up by the carrier
drop_infoObjectMandatoryInformation for where the shipment will be delivered by the carrier
shipment_detailsObjectMandatoryInformation about the shipment itself
additionalObjectOptionalAdditional optional information about the shipment

Pickup Info (pickup_info)

This mandatory object takes in the data for the warehouse/pickup location for the shipment.

Note: Conditional Mandatory means certain carrier need this field mandatorily while other carrier do not need it at all.

Field NameData TypeFieldDescriptionMax LengthExample
pickup_latFloatConditional MandatoryLatitude of the pickup location. To review conditional mandatory refer to this doc here45.12211
pickup_longFloatConditional MandatoryLongitude of the pickup location88.12342
pickup_nameStringMandatoryContact name of the consignor of the shipment100"Mukesh Kumar"
pickup_organisationStringOptionalName of the organisation100"Walmart"
pickup_addressStringMandatoryAddress of the pickup location500"123, ABC Street"
pickup_districtStringOptionalDistrict of the pickup location100"Nadia"
pickup_cityStringMandatoryCity of the pickup location100"Mumbai City"
pickup_stateStringMandatoryState/province of the pickup location100"Maharashtra"
pickup_landmarkStringOptionalLandmarks to help find the pickup location500"Near XYZ Towers"
emailStringMandatoryEmail of the pickup contact50"[email protected]"
pickup_phoneStringMandatoryContact number of the pickup contact11"9876543210"
pickup_timeStringMandatoryTime of pickup for the order (to be provided in YYYY-MM-DDTHH:MM:SS format only)2022-01-10T10:02:33
pickup_pincodeStringMandatory6-digit Pin code of the pickup location6"400065"
pickup_countryStringMandatoryAlpha ISO-2 country code of the pickup location. Only "IN" is accepted as input.2"IN"
tinStringMandatoryTaxpayer Identification Number (TIN) of the seller. In case the TIN is not available, the user may choose to enter the seller's GST number instead.100"TIN00001"
pickup_address_typeStringOptionalAddress type of the pickup address. Must be either OFFICE or RESIDENTIAL10"OFFICE"

Drop Info (drop_info)

This mandatory object takes in the data for the delivery/consignee location for the shipment.

Field NameData TypeFieldDescriptionMax LengthExample
drop_latFloatOptionalLatitude of the drop location45.12211
drop_longFloatOptionalLongitude of the drop location88.12342
drop_nameStringMandatoryContact name of the consignee of the shipment100"Mukesh Kumar"
drop_organisationStringOptionalName of the organisation100"Walmart"
drop_addressStringMandatoryAddress of the drop location500"123, ABC Street"
drop_districtStringOptionalDistrict of the drop location100"Mumbai City"
drop_cityStringMandatoryCity of the drop location100"Mumbai"
drop_stateStringMandatoryState/province of the drop location100"Maharashtra"
drop_landmarkStringOptionalLandmarks to help find the drop location500"Near XYZ Towers"
drop_emailStringOptionalEmail of the drop contact50"[email protected]"
drop_phoneStringMandatoryContact number of the drop contact11"9876543210"
drop_start_timeStringOptionalEstimated time of drop for the order (to be provided in YYYY-MM-DDTHH:MM:SS format only)

Supported for Bluedart and Shipsy only.
2022-01-10T10:02:33
drop_end_timeStringOptionalEstimated end-time of drop for the shipment. (to be provided in YYYY-MM-DDTHH:MM:SS format only)

Supported for Bluedart and Shipsy only.
2022-01-10T12:02:33
drop_pincodeStringMandatory6-digit Pin code of the drop location6"400065"
drop_countryStringMandatoryAlpha ISO-2 country code of the drop location. Only "IN" is accepted as input.2"IN"
drop_address_typeStringOptionalAddress type of the drop address. Must be either OFFICE or RESIDENTIAL10"OFFICE"
drop_vendor_codeStringOptionalHub code of the drop address (if the drop address is a warehouse)50"test_drop_warehouse"
location_typeStringOptionalType of standardized address. Possible values include: What3Words50"What3Words"
location_valueStringOptionalValue of the standardized address type selected in the location_type field.

If What3Words, then the value of the What3Words address.
500"stickler.leaky.workers"

Additional Fields (additional)

In the "additional" object optional fields can be passed which may be used by the carrier, or give additional details for the order, e.g. Async/Sync order creation or whether label generation is needed.

Field NameData TypeFieldDescriptionMax LengthExample
asyncBooleanOptionalWhether the order will be placed asynchronously (in the background) or not (in real-time). Defaults to false. Please read the section "Processing Async Requests" for how async requests work.
labelBooleanOptionalWhether label is required for the order or not. Defaults to true.
zoneStringOptionalZone of the location of pickup100"XYZ Locality"
min_eddIntegerOptionalMinimum estimated due date (in days) for delivery of the shipment5
max_eddIntegerOptionalMaximum estimated due date (in days) for delivery of the shipment10
invoice_base_64StringOptionalA Base64 string representation of the invoice document file5000
is_multi_sellerBooleanConditionalRequired for multi-seller shipments only. Denotes whether the shipment has multiple items, each with different GST numbers. Defaults to false
vendor_codeStringOptionalVendor code of pickup location. Not supported for all carriers100"TESTWAREHOUSE-01"
qc_typeString/NullOptionalOnly applicable for RVP. Should be set to doorstep if the carrier needs to do a quality check for the item, otherwise null.10"doorstep"
qc_paramsArray/NullOptionalonly applicable for RVP with QC.
Client needs to send the params for which the QC needs to be done
["COLOR","BRAND"]
rvp_reasonStringConditionalReason for returning the product/failed delivery. Mandatory if delivery_type is RVP.500"Defect in product"
order_dateStringOptionalDate when the order was placed for this shipment. To be provided in YYYY-MM-DD format only

Can also be sent in the DateTime format i.e. YYYY-MM-DDTHH:MM:SS
50"2022-12-15" or "YYYY-MM-DDTHH:MM:SS"
store_codeStringOptionalFor customers using the store flow, they shall pass the store_code for the order to link the order with the respective store50"store-1"
user_defined_field_arrayListOptionalThis object provides additional fields to the customers who wish to add custom details to their labels configured on Clickpost.

The field values mentioned here can be accessed via the udf_1, udf_2, udt_3 and udt_4 tags in the Label Configuration section on Clickpost dashboard.

This list can only accept at max 10 objects.
[ { "name":"udf_1", "type":"String", "value":"" }, { "name":"udf_2", "type":"String", "value":"" }]
estimated_delivery_dateDateOptionalThe date of estimated delivery has been shared with the customer. This field can be used to measure carrier performance by comparing it with the actual date of delivery in the Clickpost reports2023-12-05

Return Info (return_info)

In the optionalreturn_info object, the details for the return address is to be provided. The details are particularly useful in case of a failed delivery or product return due to other reasons.

Field NameData TypeFieldDescriptionMax LengthExample
latFloatOptionalLatitude of the return location45.12211
longFloatOptionalLongitude of the return location88.12342
nameStringMandatoryContact name of the return contact of the shipment100"Mukesh Kumar"
addressStringMandatoryAddress of the return location500"123, ABC Street"
districtStringOptionalDistrict of the return location100"Mumbai City"
cityStringMandatoryCity of the return location100"Mumbai"
stateStringMandatoryState/province of the return location100"Maharashtra"
landmarkStringOptionalLandmarks to help find the return location500"Near XYZ Towers"
emailStringOptionalEmail of the return contact50"[email protected]"
phoneStringMandatoryContact number of the return contact11"9876543210"
pincodeStringMandatory6-digit Pin code of the return location10"400065"
countryStringMandatoryAlpha ISO-2 country code of the return location. Only "IN" is accepted as input.2"IN"

User Defined Custom Fields ( user_defined_field_array )

This object takes in upto 4 custom fields that can be shared in the payload to Clickpost. These values are not saved and are only used incase some dynamic data needs to be added to the custom labels created by the Clickpost's system. This object is passed inside the additional object.

Field NameData TypeFieldDescriptionMax LengthExample
nameStringMandatoryName of the custom field.100"Speed"
typeStringMandatoryCurrently, only value that should be sent here is "String"100"String"
valueStringMandatoryValue that you wish to allocate to the key name100"EDD"

Shipment Details (shipment_details)

In the 'shipment_details' field, the details regarding all items, and important order details like payment type, order type, carrier, etc. are added.

Field NameData TypeFieldDescriptionMax LengthExample
itemsListMandatoryList of items to be delivered in the shipment. Details of the items explained below.
account_codeStringMandatoryCourier partner account name configured on the Clickpost dashboard. Will return a 400 Bad Request response if the given account is inactive or does not exist.100'test_courier'
heightIntegerMandatoryHeight of the overall package (in cms)25
breadthIntegerMandatoryWidth of the overall package (in cms)45
lengthIntegerMandatoryLength of the overall package (in cms)75
weightIntegerMandatoryWeight of the package (in gms)500
courier_partnerIntegerMandatoryEach carrier partner has a unique identifier (Integer value) in the Clickpost system, which will be used to identify the courier partner and track the shipment. List: http://track.clickpost.in/courier_partner123
reference_numberStringMandatoryReference number of the order. Must be unique for every shipment, i.e. every call of this API.

Note: For Bluedart, the reference number should not go beyond 20 characters, or else the AWB generation will fail
20"TEST12345678912345678912"
cod_valueFloatConditional MandatoryCash to be given to the carrier (currency to be determined by currency_code). Must be non-zero for COD orders, and zero for PREPAID orders.25.25
order_idStringOptionalIdentification string for the order100"TestOrderID00001"
order_typeStringMandatoryType of payment of the shipment. Can only take values "COD", "EXCHANGE" or "PREPAID". cod_value must be non-zero for COD shipments and zero for PREPAID shipments. "EXCHANGE" is only applicable for Delhivery (Partner ID: 4) and Bluedart (Partner ID: 5)10"COD"/"PREPAID"/"EXCHANGE"
delivery_typeStringMandatoryType of delivery to be done. Can only take values "FORWARD" or "RVP".10"FORWARD"/"RVP"
invoice_valueFloatMandatoryValue of the shipment as mentioned in the invoice.256.29
invoice_dateStringMandatoryDate of issuance of the invoice of the shipment. (YYYY-MM-DD format only)1002022-01-10
awb_numberStringConditional MandatoryThe airwaybill number of the shipment.

Mandatory for the following couriers
- Shadowfax Forward (Partner ID: 9)
- Fareye (Partner ID: 31)
- Gati (Partner ID: 32)
- SELF Reverse (Partner ID: 34)
- SELF (Partner ID: 35)
- Gati MPS (Partner ID: 71)
- Holisol Reverse (Partner ID: 77)
- Trackon (Partner ID: 80)
- Sicepat (Partner ID: 116)
- Ithink Logistics (Partner ID: 170)
- Swftbox (Partner ID: 202)
- KerryIndev MPS (Partner ID: 259)
100"TESTAWB0001"

❗️

Reference Number should not exceed 20 characters

For Bluedart, the reference number should not go beyond 20 characters, or else the AWB generation will fail

Item Level details (items)

The details for each item to be delivered is passed in the "items" field, in "shipment_details".

Field NameData TypeFieldDescriptionMax LengthExample
descriptionStringMandatoryBrief description of the item500"Brown Cotton Socks - 1 pair"
quantityIntegerMandatoryNumber of units of the item5
weightFloatMandatoryWeight of each unit of the item500
priceFloatMandatoryNon-negative price of each unit of the item (currency to be decided by 'currency_code' field)64.99
gst_infoObjectConditionalRequired for multi-seller shipments
Information regarding the GST levied on the item. GST Info to be passed will have the same fields as thegst_infofield mentioned below.
final_amount_paidStringOptionalThe Final amount that the customer has paid for the item after deducting store credits, discounts, vouchers etc100"200.00"
store_credits_usedStringOptionalThe store credits used to purchase the item100"50.50"
product_idStringConditional OptionalNeeded only if customer has subscribed for Exchanges platform (Currently only supported for Shopify)

Product ID of the item in Shopify storefront
100"4817825955902"
variant_idStringConditional OptionalNeeded only if customer has subscribed for Exchanges platform (Currently only supported for Shopify)

Variant ID of the item (mentioned in product_id) in Shopify storefront
100"32783884976190"
additionalObjectConditionalAdditional details regarding the item

The item's additional object can have the following fields:

Field NameData TypeFieldDescriptionMax LengthExample
catStringOptionalCategory of the item in question50Footwear
manufacture_country_codeStringOptionalAlpha-2 ISO Country code of manufacture of the item2"CA"
manufacture_countryStringOptionalFull country name of manufacture of the item100"Canada"
skuStringOptionalStock-keeping unit of the item100"SKU0001"
return_daysIntegerOptionalNumber of days within which the item can be returned5
exchange_daysIntegerOptionalNumber of days within which the item can be exchanged5
product_urlStringOptionalURL for the product. If there are multiple URLs, they can be sent as a single string with comma-separated values.1000"http://link1.to.product, http://link2.to.product"
imagesStringOptionalURL for the image(s) of the product. If there are multiple URLs, they can be sent as a single string with comma-separated values.1000"http://link.to.product.image1, http://link.to.product.image2"
colorStringConditional OptionalColour of the item Applicable for quality checking for RVP shipments100"dark blue"
sub_categoryStringConditional OptionalCategory the item's type is classified in Applicable for quality checking for RVP shipments100"T-Shirts"
sizeStringConditional OptionalSize of the item
Applicable for quality checking for RVP shipments
100"XL"
brandStringConditional OptionalBrand of the item
Applicable for quality checking for RVP shipments
100"Puma"
return_reasonStringConditional OptionalReason for returning the item
Applicable for quality checking for RVP shipments
100"Defective product"
special_instructionsStringConditional OptionalSpecial Instructions for returning the item
Applicable for quality checking for RVP shipments
100"Handle with care"
imeiStringConditional OptionalIMEI number of the item (if it is a mobile device)
Applicable for quality checking for RVP shipments
100"12345678910111"
eanStringConditional OptionalEAN Number of the item
Applicable for quality checking for RVP shipments
100"EAN111111"
heightIntegerMandatoryHeight of one unit of the item (in cms)25
breadthIntegerMandatoryWidth of one unit of the item (in cms)45
lengthIntegerMandatoryLength of one unit of the item (in cms)75
weightIntegerMandatoryWeight of one unit of the item (in gms)500

GST Info (gst_info)

This object encapsulates every information about the Goods and Services Tax (GST) levied on the shipment, and all it's requisite details, e.g. GST Number, EWaybill Number, etc.

FieldData TypeFieldDescriptionMax LengthExample
enterprise_gstin StringOptionalGST No of enterprise shipping the shipment100
seller_gstin StringOptionalGST No of seller sending the shipment (will be different from above for marketplaces)100
taxable_value FloatOptionalTaxable amount for GST (in INR)
ewaybill_serial_number StringOptionalEWaybill Serial Number for the shipment100
is_seller_registered_under_gst BooleanOptionalWhether the enterprise/seller is registered under the GST law
place_of_supply StringOptionalPlace of supply of the service or product. Please refer to https://cleartax.in/s/gst-state-code-jurisdiction
for further details
100"DELHI"
gst_discountFloatOptionalDiscount under GST, if any
hsn_codeStringOptionalHarmonized System Nomenclature Code of the product. Please refer to https://cleartax.in/s/gst-hsn-lookup for knowing the code for your products.50"1234.56.78"
gst_total_taxFloatOptionalTotal GST applicable for the shipment (in INR)250.00
sgst_tax_rateFloatOptionalTax percent applicable for SGST for the shipment25
sgst_amountFloatOptionalSGST Amount levied on the shipment (in INR)250.00
igst_tax_rateFloatOptionalTax percent applicable for IGST for the shipment25
igst_amountFloatOptionalIGST Amount levied on the shipment (in INR)
cgst_tax_rateFloatOptionalTax percent applicable for CGST for the shipment
cgst_amountFloatOptionalCGST Amount levied on the shipment (in INR)
consignee_gstinStringConditionalGST No of consignee (compulsory for B2B shipments)

Response

The response typically consists of the following fields. Keep in mind that additional fields can be present according to the requirement of the enterprise/carrier.

Field NameData TypeDescription
metaObjectMetadata for the request, e.g. status code, error messages.
resultObjectThe actual result of the request
order_idIntegerOrder ID of the request [For internal use of Clickpost for debuggging]
tracking_idIntegerA shipment ID of the request [For internal use of Clickpost for debuggging]

Response Meta

Field NameData TypeDescription
statusIntegerStatus code for the request (including but not limited to HTTP Status codes)
messageStringError/Success messages for the request
successBooleanWhether the order was successfully created or not
usernameStringyour Clickpost username with which you tried creating the order
reference_numberStringreference_number passed in the request. Please share this number with Clickpost team to debug any issue with the request

Response Result

Field NameData TypeDescription
waybillStringWaybill of the newly created order. This waybill is automatically registered for tracking in our database
reference_numberStringReference number of the order, sent in the payload.
labelString/NullURL to the generated label of the order. If labels are not needed, this stays null.
commercial_invoice_urlString(Appears for certain carriers) URL to the generated commercial invoice of the order
courier_partner_idIntegerID of the carrier
courier_nameStringName of the carrier
sort_codeString/NullCarrier Sort code. Certain carriers use something called a sort code that can be passed to the shipping label for custom-built labels. Will return null if sort codes are not supported.
security_keyStringUUID security key of the shipment that needs to be stored at your end. Used to enable security features on the shipment
order_idStringorder_id passed in the API request, else reference_number will reflect here if nothing is passed in the request
account_codeStringaccount_code with which the order creation was done

Sample Payload Reverse with QC

{
   "drop_info":{
      "drop_lat":0,
      "drop_city":"Mumbai",
      "drop_long":0,
      "drop_name":"dsadsad sadsad",
      "drop_email":"[email protected]",
      "drop_phone":"9876543210",
      "drop_state":"Maharashtra",
      "drop_address":"123 ABC St",
      "drop_district":"Mumbai City",
      "drop_landmark":null,
      "drop_pincode":"400065",
      "drop_country":"IN",
      "drop_address_type":"OFFICE",
      "drop_vendor_code":"test_drop"
   },
   "pickup_info":{
      "pickup_lat":25.1414664,
      "pickup_city":"Mumbai",
      "pickup_long":55.255369,
      "pickup_name":"TEST DO NOT PICKUP",
      "pickup_time":"2022-10-27T11:52:36",
      "email":"[email protected]",
      "pickup_phone":"1234567890",
      "pickup_state":"Maharashtra",
      "pickup_address":"123, ABC St",
      "pickup_district":"Mumbai City",
      "pickup_landmark":"Near XYZ Towers",
      "pickup_pincode":"400065",
      "pickup_country":"IN",
      "tin":"TIN000001",
      "pickup_address_type":"RESIDENTIAL"
   },
   "shipment_details":{
      "items":[
         {
            "sku":"53813",
            "price":249.29,
            "weight":500,
            "hs_code":"6405.10.00",
            "quantity":1,
            "description":"Tod's Blue Patent Cutout Ankle Strap Ballet Flats Size 39.5",
            "product_id":"11112222333444555",
            "variant_id":"66667777888999111",
            "additional":{
               "manufacture_country":"Italy",
               "manufacture_country_code":"IT",
               "cat":"Footwear",
               "images":"http://link1.image.com",
               "product_url":"http://link1.product.com,http://link2.procuct.com",
               "return_days":2,
               "exchange_days":2,
               "length":25,
               "breadth":15,
               "height":11,
               "brand":"Tod's",
               "color":"blue",
               "size":"39.5",
               "serial_no":"25",
               "imei":"AA-BBBBBB-CCCCCC-D",
               "ean":"EAN123456",
               "sub_category":"Flats",
               "return_reason":"ABCD"
            }
         }
      ],
      "height":13,
      "length":23,
      "weight":1000,
      "breadth":31,
      "order_id":"TESTORDER0001",
      "cod_value":50,
      "cod_currency_code":"INR",
      "order_type":"COD",
      "invoice_date":"2022-06-21",
      "delivery_type":"RVP",
      "invoice_value":468.58,
      "invoice_number":"TLC-2022-06-WS-00038",
      "courier_partner":3,
      "reference_number":"TESTECOM00001",
      "account_code":"1",
      "reseller_name":"ABCD",
      "booking_id":"123456"
   },
   "additional":{
      "return_info":{
         "lat":25.1414664,
         "city":"Mumbai",
         "long":55.255369,
         "name":"TEST DO NOT RETURN",
         "email":"[email protected]",
         "phone":"1234567890",
         "state":"Maharashtra",
         "address":"123, ABC St",
         "district":"Mumbai City",
         "landmark":"Near GHI Towers",
         "pincode":"400065",
         "country":"IN"
      },
      "async":false,
      "label":true,
      "vendor_code":"ABC",
      "zone":"ABC",
      "min_edd":2,
      "max_edd":5,
      "invoice_base_64":"JWBERKLhjfswifniouNuiHFGIUEHWOWNOFOINkjno2749189",
      "priority":"URGENT",
      "is_multi_seller":false,
      "channel_name":"Channel 1",
      "exchange_address":"123, XYZ Street",
      "exchange_city":"Delhi",
      "exchange_state":"Delhi",
      "exchange_country":"India",
      "exchange_pincode":"110001",
      "exchange_shipment_description":"Exchanged due to defective product",
      "otp_based_delivery":false,
      "inv_url":"http://link.to.invoice.com",
      "pickup_type":"WH",
      "is_fragile":true,
      "is_dangerous":false,
      "from_wh":"SOURCE WAREHOUSE",
      "to_wh":"DESTINATION WAREHOUSE",
      "template_id":"123456",
      "template_category":"ABCD",
      "invoice_reference":"TESTINV00001",
      "categories":"Footwear, Footwear",
      "otp_code":"174747",
      "insured":false,
      "customer_id_number":"111AAA6464646",
      "insurance_amount":1125.55,
      "exchange_rvp_awb":"TESTRVPAWB00001",
      "rvp_reason":"Defective product",
      "qc_type": "doorstep",
      "order_date":"2022-11-21",
     "user_defined_field_array":[
         {
            "name":"udf_1",
            "type":"String",
            "value":""
         },
         {
            "name":"udf_2",
            "type":"String",
            "value":""
         },
         {
            "name":"udf_3",
            "type":"String",
            "value":""
         },
         {
            "name":"udf_4",
            "type":"String",
            "value":""
         }
      ]
   },
   "gst_info":{
      "seller_gstin":"1234",
      "taxable_value":100,
      "ewaybill_serial_number":"2345677",
      "is_seller_registered_under_gst":false,
      "sgst_tax_rate":100,
      "place_of_supply":"DELHI",
      "gst_discount":0,
      "hsn_code":"1234",
      "sgst_amount":100,
      "enterprise_gstin":"13",
      "gst_total_tax":100,
      "igst_amount":100,
      "cgst_amount":200,
      "gst_tax_base":200,
      "consignee_gstin":"1233",
      "igst_tax_rate":100,
      "cgst_tax_rate":100
   }
}
{
  "drop_info": {
    "drop_lat": 0,
    "drop_city": "Mumbai",
    "drop_long": 0,
    "drop_name": "dsadsad sadsad",
    "drop_email": "[email protected]",
    "drop_phone": "9876543210",
    "drop_state": "Maharashtra",
    "drop_address": "123 ABC St",
    "drop_district": "Mumbai City",
    "drop_landmark": null,
    "drop_pincode": "400065",
    "drop_country": "IN",
    "drop_address_type": "OFFICE",
    "drop_vendor_code": "test_drop"
  },
  "pickup_info": {
    "pickup_lat": 25.1414664,
    "pickup_city": "Mumbai",
    "pickup_long": 55.255369,
    "pickup_name": "TEST DO NOT PICKUP",
    "pickup_time": "2022-10-27T11:52:36",
    "email": "[email protected]",
    "pickup_phone": "1234567890",
    "pickup_state": "Maharashtra",
    "pickup_address": "123, ABC St",
    "pickup_district": "Mumbai City",
    "pickup_landmark": "Near XYZ Towers",
    "pickup_pincode": "400065",
    "pickup_country": "IN",
    "tin": "TIN000001",
    "pickup_address_type": "RESIDENTIAL"
  },
  "shipment_details": {
    "items": [
      {
        "sku": "53813",
        "price": 249.29,
        "weight": 500,
        "hs_code": "6405.10.00",
        "quantity": 1,
        "description": "Tod's Blue Patent Cutout Ankle Strap Ballet Flats Size 39.5",
        "product_id": "11112222333444555",
        "variant_id": "66667777888999111",
        "additional": {
          "manufacture_country": "Italy",
          "manufacture_country_code": "IT",
          "cat": "Footwear",
          "images": "http://link1.image.com",
          "product_url": "http://link1.product.com,http://link2.procuct.com",
          "return_days": 2,
          "exchange_days": 2,
          "length": 25,
          "breadth": 15,
          "height": 11,
          "brand": "Tod's",
          "color": "blue",
          "size": "39.5",
          "serial_no": "25",
          "imei": "AA-BBBBBB-CCCCCC-D",
          "ean": "EAN123456",
          "sub_category": "Flats",
          "return_reason": "ABCD"
        }
      }
    ],
    "height": 13,
    "length": 23,
    "weight": 1000,
    "breadth": 31,
    "order_id": "TESTORDER0001",
    "cod_value": 50,
    "cod_currency_code": "INR",
    "order_type": "COD",
    "invoice_date": "2022-06-21",
    "delivery_type": "RVP",
    "invoice_value": 468.58,
    "invoice_number": "TLC-2022-06-WS-00038",
    "courier_partner": 3,
    "reference_number": "TESTECOM00001",
    "account_code": "1",
    "reseller_name": "ABCD",
    "booking_id": "123456"
  },
  "additional": {
    "return_info": {
      "lat": 25.1414664,
      "city": "Mumbai",
      "long": 55.255369,
      "name": "TEST DO NOT RETURN",
      "email": "[email protected]",
      "phone": "1234567890",
      "state": "Maharashtra",
      "address": "123, ABC St",
      "district": "Mumbai City",
      "landmark": "Near GHI Towers",
      "pincode": "400065",
      "country": "IN"
    },
    "async": false,
    "label": true,
    "vendor_code": "ABC",
    "zone": "ABC",
    "min_edd": 2,
    "max_edd": 5,
    "invoice_base_64": "JWBERKLhjfswifniouNuiHFGIUEHWOWNOFOINkjno2749189",
    "priority": "URGENT",
    "is_multi_seller": false,
    "channel_name": "Channel 1",
    "exchange_address": "123, XYZ Street",
    "exchange_city": "Delhi",
    "exchange_state": "Delhi",
    "exchange_country": "India",
    "exchange_pincode": "110001",
    "exchange_shipment_description": "Exchanged due to defective product",
    "otp_based_delivery": false,
    "inv_url": "http://link.to.invoice.com",
    "pickup_type": "WH",
    "is_fragile": true,
    "is_dangerous": false,
    "from_wh": "SOURCE WAREHOUSE",
    "to_wh": "DESTINATION WAREHOUSE",
    "template_id": "123456",
    "template_category": "ABCD",
    "invoice_reference": "TESTINV00001",
    "categories": "Footwear, Footwear",
    "otp_code": "174747",
    "insured": false,
    "customer_id_number": "111AAA6464646",
    "insurance_amount": 1125.55,
    "exchange_rvp_awb": "TESTRVPAWB00001",
    "rvp_reason": "Defective product",
    "qc_type": "doorstep",
    "qc_params": [
      "Brand",
      "Color"
    ],
    "order_date": "2022-11-21",
    "user_defined_field_array": [
      {
        "name": "udf_1",
        "type": "String",
        "value": ""
      },
      {
        "name": "udf_2",
        "type": "String",
        "value": ""
      },
      {
        "name": "udf_3",
        "type": "String",
        "value": ""
      },
      {
        "name": "udf_4",
        "type": "String",
        "value": ""
      }
    ]
  },
  "gst_info": {
    "seller_gstin": "1234",
    "taxable_value": 100,
    "ewaybill_serial_number": "2345677",
    "is_seller_registered_under_gst": false,
    "sgst_tax_rate": 100,
    "place_of_supply": "DELHI",
    "gst_discount": 0,
    "hsn_code": "1234",
    "sgst_amount": 100,
    "enterprise_gstin": "13",
    "gst_total_tax": 100,
    "igst_amount": 100,
    "cgst_amount": 200,
    "gst_tax_base": 200,
    "consignee_gstin": "1233",
    "igst_tax_rate": 100,
    "cgst_tax_rate": 100
  }
}

Sample Response

We can either get a 200 (OK) or a 400 (Bad Request) error as follows

{
	"meta": {
		"status": 200,
		"message": "Order Placed Successfully",
		"success": true,
		"username": "test-user",
		"reference_number": "TEST-20230428"
	},
	"result": {
		"label": "https://clickpost-shipping-label.s3.amazonaws.com:443/ECOM/TEST-20230428.pdf",
		"waybill": "4600001ASDF",
		"order_id": "TEST-Order-ID",
		"sort_code": "MH/WHH/BMF",
		"account_code": "EcomExpress Forward",
		"courier_name": "EcomExpress",
		"security_key": "2e43f762-0c7c-41ef-ges5-20a3cc7aascw",
		"reference_number": "TEST-20230428",
		"courier_partner_id": 3
	},
	"order_id": 199649298,
	"tracking_id": 6790638236
}
{
    "meta": {
		"status": 400,
		"message": "Error Message",
		"success": false,
		"username": "test-user",
		"reference_number": "TEST-20230428"
	}
}

Possible Error Codes

These are the list of possible error/status codes that can appear in the response metadata, and the actionables corresponding to each.

Meta Status CodeHTTP Status CodeDescriptionActionableOrder Successful?Status Message
102200For async orders: The order has been recorded in Clickpost's database and is under processing.Need to re-attempt Clickpost's order creation API to check if the order has been processed.No"
200200The order is successfully createdNoneYes"Success"
202200For async orders: The async order request has been successfully registered.Need to poll the same API endpoint with the same reference number (the one used to register the order) to get the results of the request.Order may succeed or fail"Order Registered Successfully"
301200The customer is sending an invalid/non-existent/inactive license key in the URL parametersNeed to re-attempt the order with a valid/registered/active license key, or check the username.No"Authentication Failed: Invalid Token or API Key"
302200Either of the three things:
- The customer is sending the courier_partner value as a string
- The customer is sending a null value in the courier_partner field.
- The partner ID being sent in courier_partner field does not exist.
Need to re-attempt the order with a valid integer value in the courier_partner field, and the value should exist in Clickpost's database.No"Invalid Courier Partner Id with Field courier_partner"
303200For async orders: The awb_number provided already exists and is registered by ClickpostNeed to re-attempt the order with a different awb_number value.Yes"Waybill already registered"
307200Theorder_type value is anything other than PREPAID, COD or EXCHANGE, or is null.Need to re-attempt the order with the order_type as either PREPAID, COD or EXCHANGE.No"You have entered invalid Order Type"
308200Thepriority value is anything other than NORMAL or URGENT.Need to re-attempt the order with the priority as either NORMAL or URGENT.No"You have entered invalid Order priority"
309200Thedelivery_type value is anything other than FORWARD or RVP.Need to re-attempt the order with the delivery_type as either FORWARD or RVP.No"Invalid Delivery Type"
310200In case of RVP orders: This is due to either of the following
- The rvp_reason field is missing
- The rvp_reason length is more than 500 characters.
Need to re-attempt the RVP order with a non-null rvp_reason value within 500 characters.No"RVP reason is missing" or "RVP reason can't be more than 500 chars"
311200For RVP orders: The carrier defined by the courier_partner field does not support RVP shipments, or is not an RVP carrier.Need to re-attempt the RVP order with a courier_partner value that supports RVP shipments.No"Invalid Courier Partner For RVP"
312200There is no item data in the payload (in the item field).Need to retry the order with a non-empty items array.No"Items Data is missing from order details"
313200Either of the following:
- The item data being sent in the items field is either a string or any other invalid format.
- The items value is an array, but of anything other than objects.
- The items value is an array of objects, but one or more mandatory fields are missing for one or more items.
Need to retry the order with proper items data, as an array of JSON objects.No"Invalid Format of items for Order data"
314200There is an issue with the order data being passed.The error is captured in the status message. Retry the order after addressing the status message.No"Invalid Format of items for Order data: "
315200Either of the following:
- For a PREPAID order, the cod_value is non-zero.
- For a COD order, the cod_value is zero.
Need to retry the orders after:
- (For PREPAID orders) setting the cod_value to zero.
- (For COD orders) setting the cod_value to a non-zero number
No"Invalid Cod Value"
316200There are no credentials for the carrier of the account given in account_code, or the credentials are blank.Need to re-attempt the order with a different account_code, or fill the credential fields in the dashboard and retry.No"You do not have credentials for the Courier Partner"
319200There is an issue in placing orders with the carrier.The actual error generally pops up alongside the error message (see Status Message). In cases where the error message is vague, contact the support team.No"Error In Order Placing To Courier Partner: "
320200The enterprise has not subscribed for Clickpost's Order Creation Service.Need to subscribe to the order creation service, then retry with all valid details and credentials.No"This service is not subscribed by you"
321200The awb provided in the awb_number field does not exist in Clickpost's database.Need to provide a registered AWB, or remove the AWB field and try again.No"Awb Number Does not exist in system for courier partner"
322200There is an issue in the carrier's servers.Need to retry after waiting for a while, or get in touch with Clickpost support or the carrier's support.No"Internal Server Error In Courier Partners Server"
323200An order is already present in Clickpost's database with the same reference number as the one provided.Need to re-attempt the order with a different reference numberYes"You have already placed this order"
328200Some mandatory field in the POST data might be missing.Check for missing fields that are supposed to be there in the data and retryNo"Invalid POST data"
329200The connection to the carrier's API timed out.Need to retry after waiting for a while, or get in touch with Clickpost support or the carrier support.No"Courier Partner API timeout"
351200The account name of the carrier account given in the account_code field does not exist for the enterprise user.The user needs to check either/all of the things below if they are correct
- Enterprise license key in the URL params
- Carrier ID in the courier_partner field.
- Account name in the account_code field, and whether this account exists for this carrier.

Re-attempt the order after correcting any of the incorrect details mentioned above.
No"Clickpost Account: Does not exist"
352200There are multiple accounts of the same enterprise with the same carrier with the same name as the one in account_code field.No"Multiple account exists"
353200The account mentioned in the account_code field is inactive.Need to either enable the account on the dashboard from the enterprise's end, or use an active account.No"Clickpost Account: Inactive"
354200There is an unhandled error from the carrier's end.The error is typically visible in the status message and can be fixed accordingly. In case of vague error messages, get in touch with the support teamNo"Unhandled error! Contact [email protected]" or the actual error
355200In certain couriers the vendor_code field is required. This error pops up whenever vendor_code is not passed in the payloadNeed to pass the vendor_code field alongwith a registered vendor code.No"Vendor code not found"
400200There is an issue with the payload, or some invalid data is being sent in the request.Need to fix the issues in the payload as mentioned in the status message. If "Bad Request" pops up, get in touch with the support team.No"Bad Request" or the actual error
500200There is an error in Clickpost's servers.Need to wait a while and try again. If this error pops up even after multiple tries, get in touch with the support team.No"Oops! Internal server error in Clickpost"