Create Delivery
POST /drive/v2/deliveries is the core endpoint used to create a parcel in DashLink. It is functionally identical to accepting a quote, except it does not allow a preview of the fee or serviceability beforehand.
When to use create delivery
Use this endpoint instead of quotes when:
- You already trust your serviceability logic
- You don’t need to preview fees
- You want to simplify your integration to a single step
- You run a synchronous realtime workflow
Endpoint
POST /drive/v2/deliveries
Request behavior
The delivery creation call:
- Creates an active parcel delivery
- Generates or confirms the tracking code
- Validates the full request payload
- Triggers address correction
- Returns a base64 shipping label
- Initiates the delivery lifecycle
Request Fields
A sample request and response found in the Create Delivery Example appendix.
| Field | Type | Requirement | Description |
|---|---|---|---|
external_delivery_id | string | Required | Empty string signals DashLink to generate the code. Required if shipper-generated tracking codes are used. Must be 15–35 characters, unique, no leading zeros. Prefix must be DashLink-approved |
order_fulfillment_method | string | Required | Must be "parcel" for DashLink. |
pickup_external_business_id | string | Required | String identifier for your business provided by DashLink. |
origin_facility_id | string | Required | Merchant warehouse ID used for mid-mile routing provided by DashLink. |
dropoff_address | string | Required | Full comma-separated delivery address used for serviceability and fee checks. |
pickup_business_name | string | Recommended | Name of the business shipping the item; used in SMS communications, labels, and the tracking page. |
dropoff_business_name | string | Recommended | Name of the business receiving the delivery, used to help Dashers identify the dropoff location. |
dropoff_location.lat | integer | Optional | Latitude for precise navigation. Used only for routing, not fee validation and overrides geocoding. |
dropoff_location.lng | integer | Optional | Longitude for precise navigation. Overrides geocoding. |
dropoff_phone_number | string | Required | Must follow E.164 format (e.g. +16505555555). |
dropoff_instructions | string | Recommended | Instructions to help Dashers successfully complete the delivery. |
dropoff_contact_given_name | string | Required | Recipient first name. |
dropoff_contact_family_name | string | Required | Recipient last name. |
dropoff_contact_send_notifications | boolean | Recommended | Defaults to true. Indicates whether SMS notifications will be sent for this delivery. |
Dropoff Address Components
| Field | Type | Requirement | Description |
|---|---|---|---|
dropoff_address_components.street_address | string | Required | Street address line. |
dropoff_address_components.sub_premise | string | Recommended | Apartment, suite, or unit number. |
dropoff_address_components.city | string | Required | City name. |
dropoff_address_components.state | string | Required | 2-letter state code. |
dropoff_address_components.zip_code | integer | Required | ZIP or postal code. |
dropoff_address_components.country | string | Required | Country code (e.g. "US"). |
Order & Item Details
| Field | Type | Requirement | Description |
|---|---|---|---|
order_value | integer (cents) | Recommended | Subtotal excluding tax/tip (e.g. $19.99 → 1999). Must be ≥ 0. |
currency | string | Optional | Defaults to USD. Currency code. |
items[] | array | Required | Array of Delivery Item objects (maximum 1 item). |
Delivery Item Object
| Field | Type | Requirement | Description |
|---|---|---|---|
items[].name | string | Required | Name of the package or item. |
items[].description | string | Optional | Description of item contents. |
items[].external_id | string | Optional | Shipper-provided metadata that will print on the label returned. |
items[].quantity | integer | Required | Quantity of item (always 1 for parcel shipments). |
items[].height | integer (inches) | Required | Height of package. |
items[].width | integer (inches) | Required | Width of package. |
items[].length | integer (inches) | Required | Length of package. |
items[].weight | integer (pounds) | Required | Weight of package. |
items[].volume | integer (cubic feet) | Optional | Volume of package, (H × W × L) / 1728. |
items[].price | integer (cents) | Optional | Price of item in lowest currency denomination. |
Delivery Options
| Field | Type | Requirement | Description |
|---|---|---|---|
contactless_dropoff | boolean | Required | Defaults to true. If true, Dasher takes photo at dropoff. |
dropoff_requires_signature | boolean | Required | Defaults to false. Requires recipient signature. Mutually exclusive with contactless_dropoff |
Response Fields
In addition to the create delivery request fields returned in the response, the fields below are either only sent in the response or possibly updated from the request inputs sent.
A sample request and response found in the Create Delivery Example appendix.
| Field | Type | Description |
|---|---|---|
external_delivery_id | string | Echoed unique delivery ID generated by the caller. |
delivery_status | string | Always "created" for this endpoint. |
fee | integer (cents) | Delivery fee in lowest currency denomination (e.g. $5.99 → 599). |
dropoff_address | string | Full comma-separated delivery address returned by geocoding. |
dropoff_location.lat | integer | Latitude returned by geocoding for precise navigation. |
dropoff_location.lng | integer | Longitude returned by geocoding for precise navigation. |
dropoff_address_components.street_address | string | Geocoded street address line. |
dropoff_address_components.sub_premise | string | Geocoded apartment, suite, or unit number. |
dropoff_address_components.city | string | Geocoded city name. |
dropoff_address_components.state | string | Geocoded 2-letter state code. |
dropoff_address_components.zip_code | integer | Geocoded ZIP or postal code. |
dropoff_address_components.country | string | Geocoded country code (e.g. "US"). |
updated_at | string (ISO-8601) | Timestamp indicating when the delivery record was last updated. |
pickup_time_estimated | string (ISO-8601) | Estimated pickup time, if available. |
dropoff_time_estimated | string (ISO-8601) | Estimated delivery time, if available. |
support_reference | string | Internal DashLink support reference ID. |
tracking_url | string | Customer-facing tracking page URL. |
shipping_label.label_format | string | Label format (e.g. "zpl"). |
shipping_label.label_size | string | Label size (e.g. "4x6"). |
shipping_label.print_density | string | Print density (e.g. "203dpi"). |
shipping_label.label_string | string (base64) | Base64-encoded shipping label string. |
action_if_undeliverable | string | What DashLink should do if the parcel cannot be delivered. All parcel shipments use: "return_to_pickup", parcels are never disposed or left behind unless configured differently. |
Note: Not all fields that may be returned by the Drive API are listed above.
This table includes only the fields relevant to the DashLink parcel use case.