Managed Orders

Overview

Managed orders are loads created through the Managed Services module on the platform. They result from mutual agreements between shippers and providers that aim to simplify the load creation process.

In addition to requiring less input data, managed orders are not dispatched to a carrier, nor posted to the Load Board. Shippers only need to provide pickup and delivery locations as well as set a shipping date. Basic vehicle info such as year, make and model (or vin) is needed for each vehicle included in the load. Supported providers then generate different offers (quotes) based on the calculated inputs. Shippers can choose between options that vary in price, estimated transit time and method of delivery.

When a quote is selected, additional information may be required to book an order. This includes specific pickup and delivery details, vehicle data and customer (shipper) information. For the most part, providing these details is optional.

Keep in mind that if you opt for the automatic filling of contact information (assuming you have any saved contacts), future changes to the profile details of an existing customer and delivery/pickup details will not be reflected in a finished managed order or any successfully created load in general.

Once created, quotes are booked and become managed orders. They differ from standard orders by their assigned provider and generated internal order ID.

On this page, you can find descriptions, examples and sample request-response codes for primary managed order operations. Availability is limited to shippers and/or shipping companies.

Workflow

The following graph visualizes all stages a managed order needs to go through before it is created. Relevant APIs are indicated for each individual step.

  • Create (Fetch) a Quote
  • Select a Quote
  • Create a Managed Order

To learn more about different enum values used across the page, check out Enum Values.


Create a Managed Order

Add a key

Before you can create a quote, add a Montway API key (if you would like to use Montway as a provider).

Link: PATCH https://ship.cars/api/quote-manager/v1/providers/montway/keys

Add a Montway key (Request)
{
    "apiKey": "<key>"
}

The response will return the unique key of your provider.


Get keys

Link: GET https://staging.ship.cars/api/quote-manager/v1/providers/montway/keys


Request All Quotes

This API returns possible quotes for a potentially bookable managed order based on provided inputs (e.g. vehicle data, pickup date, delivery date). Only pickup and delivery zip codes are required.

On response, quotes are returned for every supported provider.

Link: POST https://ship.cars/api/quote-manager/v1/providers

Request
{
    "pickupDate": "2022-08-26",
    "trailerType": "OPEN",
    "pickupStreet": "",
    "pickupCity": "Schenectady",
    "pickupState": "NY",
    "pickupZipCode": "12306",
    "deliveryStreet": "",
    "deliveryCity": "West Chester Township",
    "deliveryState": "OH",
    "deliveryZipCode": "45069",
    "vehicles": [
        {
            "vin": "KL4CJESB6EB523809",
            "year": 2014,
            "make": "Buick",
            "model": "Encore",
            "bodyType": "SUV",
            "operableType": "OPERABLE"
        },
        {
            "vin": "2G1WF52E759134136",
            "year": 2005,
            "make": "Chevrolet",
            "model": "Impala",
            "bodyType": "Car",
            "operableType": "OPERABLE"
        }
    ]
}
Response
{
    "providers": [
        {
            "id": "YK41K",
            "name": "montway",
            "profilePictureUrl": "https://i.imgur.com/u1XoL3V.png"
        }
    ],
    "process_id": "KZ9EG"
}

You will need the process_id in order to proceed further.

All quotes can alternatively be received through an added webhook URL.


Get Provider Quotes

Through this API, you can get quotes only from a specific provider.

Link: GET https://ship.cars/api/quote-manager/v1/booking-details/YK41K

Response
{
    "selectedQuoteId": "5EEEEEEEEEEEE33C",
    "transitTime": "3-6 days",
    "vehicles": [
        {
            "id": "YK41K",
            "vin": "JF1ZNAA10D1702170",
            "year": 2022,
            "make": "BMW",
            "model": "M5",
            "bodyType": "SUV",
            "operableType": "OPERABLE"
        }
    ],
    "pickupDate": "2022-03-23",
    "pickupStreet": "161 W Cherry St",
    "pickupCity": "Albion",
    "pickupState": "IL",
    "pickupZipCode": "62806",
    "deliveryStreet": "161 W Cherry St",
    "deliveryCity": "Albion",
    "deliveryState": "IL",
    "deliveryZipCode": "62806",
    "trailerType": "OPEN",
    "selectedProviderId": "YK41K",
    "selectedProviderName": "MartinTLC",
    "selectedProviderProfilePictureUrl": "https://www.image.com/provider.jpg",
    "service": "7 days pick up",
    "priceInCents": 1000,
    "chosenIdentity": "7",
    "chosenRateType": "regular",
    "quotes": [
        {
            "payload": {
                "quoteId": "CE13C6919F02CE15",
                "quoteRefId": "656316",
                "expiresAt": "2023-10-17T03:05:51-05:00",
                "transitTime": {
                    "min": 1.0,
                    "max": 4.0,
                    "shortLabel": "1 - 4 days",
                    "label": "Transit time: 1 - 4 days"
                },
                "vehicle": [
                    {
                        "id": null,
                        "vin": null,
                        "year": 2013,
                        "make": "Scion",
                        "model": "FR-S",
                        "bodyType": null,
                        "operableType": "OPERABLE"
                    },
                    {
                        "id": null,
                        "vin": null,
                        "year": 2022,
                        "make": "BMW",
                        "model": "M5",
                        "bodyType": null,
                        "operableType": "OPERABLE"
                    }
                ],
                "rates": [
                    {
                        "identity": "7",
                        "pickupWindow": 7,
                        "payment": "regular",
                        "price": "899.00",
                        "label": "7 days pick up",
                        "subcharges": null
                    },
                    {
                        "identity": "2",
                        "pickupWindow": 1,
                        "payment": "regular",
                        "price": "929.00",
                        "label": "1 day pick up",
                        "subcharges": null
                    }
                ]
            },
            "providerId": "YK41K",
            "providerName": "MartinTLC",
            "providerProfilePictureUrl": "https://www.image.com/provider.jpg"
        }
    ]
}

Make a Quote selection

This API confirms and books a selection of a quote offered by a provider. Use the process_id from the Request All Quotes API to make the selection, and then proceed to book the order.

Link: POST https://ship.cars/api/quote-manager/v1/booking-details

The payload should be:

Request
{
    "providerId": "YK41K",
    "quoteId": "5EEEEEEEEEEEE33C",
    "rateType": "regular",
    "rateIdentity": "7",
    "service": "7 days pick up",
    "processId": "YK41K",
    "priceInCents": 1000,
    "transitTime": "3-6 days"
}

When you have this mapping from a provider quote, you can observe its rate. Different rates represent basic parameters of the selected quote, such as its price, pickup window and transit time.

"transitTime": {  
                    "min": 1.0,  
                    "max": 4.0,  
                    "shortLabel": "1 - 4 days",  
                    "label": "Transit time: 1 - 4 days"  
                },  
...  
"rates": [  
    {  
        "identity": "2",  
        "pickupWindow": 1,  
        "payment": "regular",  
        "price": "929.00",  
        "label": "1 day pick up",  
        "subcharges": null  
    },  
    ...  
]

Mapping:

"quoteId" -> "payload.quoteId"  
"rateType" -> "payload.rates[0].payment"  
"rateIdentity" -> "payload.rates[0].identity"  
"service" -> "payload.rates[0].label"  
"priceInCents" -> "payload.rates[0].price" - converted to cents  
"transitTime" -> "payload.transitTime.label"

Create an Order

The final step is to create your managed order. A quote must already be selected and booked.

Pickup and delivery phone number, first and last name, and street address are required.

The response order_id field is used in the validation of the vehicle gatepass document.

Link: POST https://ship.cars/api/quote-manager/v1/orders

Request
{
  "providerId": "YK41K",
  "orderId": "CUSTOM_ID_2",
  "quoteId": "5EEEEEEEEEEEE33C",
  "rateType": "regular",
  "rateIdentity": "7",
  "pickupDate": "2022-03-23",
  "processId": "YK41K",
  "transitTime": "3-6 days",
  "customer": {
    "id": "YK41K",
    "firstName": "Martin",
    "lastName": "Smith",
    "phoneNumber": "3033210789",
    "companyName": "MartinTLC",
    "emailAddress": "[email protected]"
  },
  "pickup": {
    "id": "YK41K",
    "firstName": "Martin",
    "lastName": "Smith",
    "phoneNumber": "3033210789",
    "companyName": "MartinTLC",
    "mobileNumber": "3033210789",
    "workNumber": "3033210789",
    "streetAddress": "string",
    "locationId": "XC223"
  },
  "delivery": {
    "id": "YK41K",
    "firstName": "Martin",
    "lastName": "Smith",
    "phoneNumber": "3033210789",
    "companyName": "MartinTLC",
    "mobileNumber": "3033210789",
    "workNumber": "3033210789",
    "streetAddress": "string",
    "locationId": "XC223"
  },
  "gatepasses": [
    {
      "attachmentId": "YK41K",
      "vehicleId": "YK41K",
      "lotNumber": "CS123",
      "stockNumber": "XC#42",
      "buyerNumber": "123X2XD"
    }
  ],
  "customerComment": "Be careful with the car"
}
Response
<ORDER_ID>

Get Load

This API uses the order_id field to fetch response data about an existing managed order. The response schema matches what is typically returned for all standard loads, the only difference being that the orderInformation object will be filled.

Link: GET https://ship.cars/api/shipperlite/posting/v2/integrators/loads/K9RV0

Response
{
    "id": "YK41K",
    "status": "POSTED",
    "shipperLoadId": "CS1234X",
    "externalId": "123XX",
    "load": {
        "id": "YK41K",
        "dispatchInstructions": "Please, do not come before 6.",
        "useEnclosedTrailer": true,
        "useM22InspectionGuide": true,
        "useGpsTracking": true
    },
    "route": {
        "id": "YK41K",
        "pickupDateDetail": {
            "id": "YK41K",
            "estimatedEndDate": "2022-03-23",
            "estimatedStartDate": "2022-03-21",
            "restriction": "NO_RESTRICTIONS"
        },
        "deliveryDateDetail": {
            "id": "YK41K",
            "estimatedEndDate": "2022-03-23",
            "estimatedStartDate": "2022-03-21",
            "restriction": "NO_RESTRICTIONS"
        },
        "deliveryLocation": {
            "id": "YK41K",
            "city": "Albion",
            "state": "IL",
            "street": "161 W Cherry St",
            "zipCode": "62806",
            "locationId": "XC223",
            "longitude": "-94.2332754",
            "latitude": "39.3514073"
        },
        "pickupLocation": {
            "id": "YK41K",
            "city": "Albion",
            "state": "IL",
            "street": "161 W Cherry St",
            "zipCode": "62806",
            "locationId": "XC223",
            "longitude": "-94.2332754",
            "latitude": "39.3514073"
        },
        "distanceInMiles": 1345.56,
        "transitTime": "5-6 days"
    },
    "shippingItems": [
        {
            "id": "YK41K",
            "vehicle": {
                "bodyType": "Car",
                "buyerNumber": "123CXS23",
                "color": "red",
                "lotNumber": "123CXS23",
                "stockNumber": "123CXS23",
                "make": "BMW",
                "model": "218i",
                "vin": "1D4GP24R85B225747",
                "year": 2022,
                "id": "YK41K",
                "length": "4526",
                "height": "1420",
                "width": "1800",
                "weight": "1325",
                "logo": "https://image.com/bmw.jpg",
                "operableType": "OPERABLE",
                "lbExternalId": "123CXS23"
            },
            "attachments": [
                {
                    "fileUrl": "https://www.media.com/attachment1.jpg",
                    "shareWith": "CARRIER",
                    "id": "YK41K",
                    "lbExternalId": "CS1235XX",
                    "loadLegId": "YK41K",
                    "shippingItemId": "YK41K",
                    "creatorType": "SHIPPER",
                    "originalFileName": "Dispatch Sheet"
                }
            ]
        }
    ],
    "payments": [
        {
            "id": "YK41K",
            "carrierPayInCents": 10000,
            "notes": "I prefer cards.",
            "paymentType": "COD",
            "paymentTransactionType": "CUSTOMER_TO_CARRIER",
            "paymentMethod": "CASH",
            "paymentTermsBeginType": null,
            "paymentTermsType": null
        }
    ],
    "carrierPayInCents": 100000,
    "orderInformation": {
        "id": "YK41K",
        "refId": "1234567XX",
        "orderId": "1234567XX",
        "selectedQuoteId": "5EEEEEEEEEEEE33C",
        "selectedQuoteRateType": "regular",
        "providerId": "YK41K",
        "providerName": "MartinTLC",
        "providerLogoUrl": "https://www.image.com/provider.jpg"
    },
    "contract": {
        "id": "YK41K",
        "shipper": {
            "id": "YK41K",
            "companyName": "MartinTLC",
            "email": "[email protected]",
            "name": "Martin",
            "primaryPhone": "1234567890",
            "primaryPhoneNotes": "Do not call me before 8",
            "secondaryPhone": "1234567890",
            "secondaryPhoneNotes": "Do not call me before 8",
            "thirdPhone": "1234567890",
            "thirdPhoneNotes": "Do not call me before 8",
            "workingHours": "From 5 to 12",
            "location": {
                "id": "YK41K",
                "city": "Albion",
                "state": "IL",
                "street": "161 W Cherry St",
                "zipCode": "62806",
                "locationId": "XC223"
            },
            "type": "CUSTOMER",
            "notes": "string"
        }
    },
    "attachments": [
        {
            "fileUrl": "https://www.media.com/attachment1.jpg",
            "shareWith": "CARRIER",
            "id": "YK41K",
            "lbExternalId": "CS1235XX",
            "loadLegId": "YK41K",
            "shippingItemId": "YK41K",
            "creatorType": "SHIPPER",
            "originalFileName": "Dispatch Sheet"
        }
    ],
    "carrierOffers": [
        {
            "id": "YK41K",
            "priceInCents": 100000,
            "carrierDot": "1111111",
            "negotiationId": "123X",
            "status": "active",
            "externalId": "123X",
            "companyId": "123X",
            "expirationDate": "2022-08-23T09:35:07.237Z"
        }
    ],
    "pickupContact": {
        "id": "YK41K",
        "companyName": "MartinTLC",
        "email": "[email protected]",
        "name": "Martin",
        "primaryPhone": "1234567890",
        "primaryPhoneNotes": "Do not call me before 8",
        "secondaryPhone": "1234567890",
        "secondaryPhoneNotes": "Do not call me before 8",
        "thirdPhone": "1234567890",
        "thirdPhoneNotes": "Do not call me before 8",
        "workingHours": "From 5 to 12",
        "location": {
            "id": "YK41K",
            "city": "Albion",
            "state": "IL",
            "street": "161 W Cherry St",
            "zipCode": "62806",
            "locationId": "XC223"
        },
        "type": "CUSTOMER",
        "notes": "string"
    },
    "extRateCalculationId": "YKXS23IJ",
    "carrier": {
        "id": "YK41K",
        "email": "[email protected]",
        "name": "Martin",
        "primaryPhone": "1234567890",
        "primaryPhoneNotes": "Do not call me before 8",
        "secondaryPhone": "1234567890",
        "secondaryPhoneNotes": "Do not call me before 8",
        "thirdPhone": "1234567890",
        "thirdPhoneNotes": "Do not call me before 8",
        "logo": "https://www.image.com/logo.jpg",
        "usDot": 1234567,
        "lbExternalId": "123X",
        "location": {
            "id": "YK41K",
            "city": "Albion",
            "state": "IL",
            "street": "161 W Cherry St",
            "zipCode": "62806",
            "locationId": "XC223"
        },
        "userManagementId": "123X"
    },
    "driver": {
        "id": "YK41K",
        "name": "Martin",
        "email": "[email protected]",
        "phone": "1234567890",
        "additionalPhone": "1234567890",
        "lbExternalId": "123X",
        "profilePictureUrl": "https://www.image.com/picture.jpg",
        "userManagementId": "123X"
    },
    "pickupSignatureRequired": false,
    "deliverySignatureRequired": false,
    "deliveryContact": {
        "id": "YK41K",
        "companyName": "MartinTLC",
        "email": "[email protected]",
        "name": "Martin",
        "primaryPhone": "1234567890",
        "primaryPhoneNotes": "Do not call me before 8",
        "secondaryPhone": "1234567890",
        "secondaryPhoneNotes": "Do not call me before 8",
        "thirdPhone": "1234567890",
        "thirdPhoneNotes": "Do not call me before 8",
        "workingHours": "From 5 to 12",
        "location": {
            "id": "YK41K",
            "city": "Albion",
            "state": "IL",
            "street": "161 W Cherry St",
            "zipCode": "62806",
            "locationId": "XC223"
        },
        "type": "CUSTOMER",
        "notes": "string"
    },
    "publicLinkInfo": {
        "id": "YK41K",
        "publicLinkKey": "1231435435",
        "publicLink": "https://www.public-link.com"
    }
}

Update Load

Using retrieved information from the Get Load endpoint, this API allows you to make changes to a specific managed order - in other words, updating one or more of its fields.

Keep in mind that you cannot update a managed order if its status is one of the following:

DELIVERED - the load is delivered and cannot be changed

ARCHIVED - the load is archived

The response body is the same as the one you receive on create.

Link: PUT https://ship.cars/api/shipperlite/posting/v2/integrators/managed-orders/K9RV0


Get Location Data for a Load

This API returns the location tracking data of a specific managed order using the externalId field from its create response. To use location history, enable location sharing for the order, which should also be approved by its dispatcher.

You can obtain a valid externalId once the load status becomes DISPATCHED.

Link: GET https://ship.cars/api/location_tracking/history/vg9q38/

Location Data Response
[
    {
        "status": "ongoing",
        "timestamp": "2021-07-22T09:41:20.483000+00:00",
        "location": {
            "longitude": -119.8524937,
            "latitude": 37.5945638
        }
    },
    {
        "status": "ongoing",
        "timestamp": "2021-07-22T10:15:20.483000+00:00",
        "location": {
            "longitude": -119.2053407,
            "latitude": 38.1888124
        }
    },
    {
        "status": "ongoing",
        "timestamp": "2021-07-22T10:42:20.483000+00:00",
        "location": {
            "longitude": -119.4643684,
            "latitude": 38.5128509
        }
    },
    {
        "status": "ongoing",
        "timestamp": "2021-07-22T11:02:20.483000+00:00",
        "location": {
            "longitude": -117.7764446,
            "latitude": 38.0186303
        }
    },
    {
        "status": "ongoing",
        "timestamp": "2021-07-23T11:02:20.483000+00:00",
        "location": {
            "longitude": -119.1196436,
            "latitude": 37.9571971
        }
    },
    {
        "status": "ongoing",
        "timestamp": "2021-09-24T07:41:20.483000+00:00",
        "location": {
            "longitude": -118.8517224,
            "latitude": 37.5945638
        }
    }
]

Get the BOL & Images for a Load

This API uses the Get Load response to retrieve a PDF file containing the load’s bill of lading document. Inside, you’ll be able to access a link leading to the BOL’s attachments (images), if applicable.

There can be attachments per managed order and per specific shipping item such as vehicle.

Each attachment contains a public link with secure URL (check the fileURL from the Json below).

Sample response of attachments on shipping item level:

Shipping Items Attachments
"shippingItems": [
    {
        "id": "8J5LV",
        "vehicle": {
            "bodyType": "Car",
            "buyerNumber": null,
            "color": null,
            "lotNumber": null,
            "stockNumber": null,
            "make": "Acura",
            "model": "Legend",
            "vin": "JH4KA4540JC050162",
            "year": 1988,
            "id": "8J5LV",
            "length": "190.00",
            "height": "52.00",
            "width": "68.0",
            "weight": "3239",
            "logo": "https://storage.googleapis.com/ship-cars-make-logos/acura-logo.png",
            "operableType": "OPERABLE",
            "lbExternalId": null
        },
        "attachments": [
            {
                "fileUrl": "https://media.ship.cars/media/postings/attachments/d93a1ac3-9817-4f96-a6eb-37c6bd6cae38.jpg",
                "shareWith": null,
                "id": "XWP21",
                "lbExternalId": null,
                "loadLegId": null,
                "shippingItemId": "8J5LV",
                "creatorType": "SHIPPER",
                "originalFileName": "4mb_image.jpg"
            }
        ]
    }
],