Skip to main content
uber.createDelivery dispatches a courier and returns the new delivery with its id, status, fee, and public trackingUrl.
automations/dispatch-uber-delivery.automation.ts
pickup and dropoff require name, address, and phoneNumber. Phone numbers must start with + and contain only digits. Addresses accept the same formats as Create delivery quote. Both waypoints accept businessName, latitude, longitude, notes (up to 280 characters), readyAt, deadlineAt, and verification; dropoff also accepts sellerNotes. manifestItems requires at least one item with name and quantity. size is small, medium, large, or xlarge and defaults to small. If you pass dimensions in centimeters, also pass weight in grams.

Proof and handoff

  • pickup.verification accepts picture, barcodes, and signatureRequirement.
  • dropoff.verification also accepts pincode and identification: { minAge } for age-restricted items. Identification includes a sobriety check unless you set noSobrietyCheck.
  • returnVerification applies when Uber returns an undeliverable order.
  • deliverableAction is deliverable_action_meet_at_door by default or deliverable_action_leave_at_door. Leave-at-door deliveries cannot require a signature, PIN, or ID check, and Uber requires a photo for them.
  • undeliverableAction is return by default, discard, or leave_at_door. Orders that require a signature, PIN, or ID check cannot be left at the door.
Automate.ax rejects those invalid combinations before calling Uber.

Retries and duplicates

Pass idempotencyKey to make the action safe to retry. Uber refuses to create a second delivery with the same key for 60 minutes, so a retry cannot dispatch a second courier. Without a key, Automate.ax does not repeat a request whose outcome is uncertain because it could dispatch a second courier. Uber also rejects a second delivery with the same manifestReference and externalId pair.

Other inputs

tip is in cents and is included in fee. externalStoreId (up to 150 characters) and externalId link the delivery to your systems. returnNotes, externalUserInfo, and userFeesSummary pass through to Uber. With test credentials, set roboCourier: { mode: "auto" } to have Uber’s simulated courier advance the delivery about every 30 seconds, or mode: "custom" with enrouteForPickupAt, pickupImminentAt, pickupAt, dropoffImminentAt, and dropoffAt to control each step. Add cancelReason to simulate a courier cancellation. Uber returns couriers_busy or address_undeliverable_limited_couriers when no courier is available; Automate.ax retries both. address_undeliverable, expired_quote, used_quote, and time-window errors fail without retrying.