SalesOrders

Records the shipment of an in-transit transfer (the app's Ship dialog): carrier and tracking, or "ship without tracking".

Requires ManageSalesOrders and an Idempotency-Key header. Body: { "transferId": 904, "carrier": "UPS", "trackingNumber": "1Z999AA10123456784" }, or { "transferId": 904, "withoutTracking": true }. transferId omitted = the order's single in-transit transfer. The transfer must be in transit (/complete-pick first). Same code path as the app: the transfer's shipment is added — or replaced when it already has one (every field is overwritten; shipDate omitted = now) — the history records "Shipment added — UPS tracking … (via API key '…')" and the order's status is recalculated: Shipped once every live transfer has shipping info. Without tracking only flags the transfer shipped ("Shipped without tracking").

post/api/v1/sales-orders/{id}/ship

Request

  • Base URL: https://app.flexonthejob.com
  • URL: https://app.flexonthejob.com/api/v1/sales-orders/{id}/ship
  • Auth: HTTP bearer

Path parameters

idinteger required

Sales-order id. Example: 318.

Request body

transferIdinteger nullable

The order's in-transit transfer being shipped. Omit when the order has exactly one transfer in transit. Example: 904.

withoutTrackingboolean

true = the app's "Ship without tracking": no shipment record, the transfer is only flagged shipped so it can be delivered. Then carrier, trackingNumber and the other shipment fields must be omitted. Default false.

carrierstring nullable

Carrier name, up to 100 characters. Example: UPS.

trackingNumberstring nullable

Carrier tracking number, up to 100 characters. Example: 1Z999AA10123456784.

shippingMethodstring nullable

Shipping method / service level, up to 50 characters. Example: Ground.

shipDatestring date-time nullable

Ship date as ISO-8601 (stored as sent); omit for now (UTC). Example: 2026-09-23T15:00:00Z.

estimatedDeliveryDatestring date-time nullable

Estimated delivery date as ISO-8601 (stored as sent). Example: 2026-09-26.

weightnumber double nullable

Package weight, 0–1,000,000, in whatever unit the organization uses (the app does not fix one). Example: 12.5.

notesstring nullable

Free-text shipment notes. Example: 2 boxes.

Response

Shipment saved; the recalculated order status.

salesOrderIdinteger

The sales order's id. Example: 318.

statusstring

Order status after the step: Pending, Picking, Packed, Shipped, Delivered, Complete or Cancelled. Recalculated from the order's transfers, so always read it rather than assuming the next status. Example: Packed.

fulfillmentStatusstring nullable

Aggregate status of the order's transfers (None, Pending, InTransit, AtWaypoint, Completed, Cancelled…), as fulfillmentStatus on the order. Example: InTransit.

transferIdinteger nullable

The transfer the step acted on (resolved when the request did not name one); null for /complete and /cancel. Example: 904.

messagestring nullable

Human-readable confirmation, as the app shows it. Example: Transfer status updated to In Transit.

unitsPickedinteger

/pick: units marked picked by this call (0 for other steps). Example: 10.

itemsReturnedinteger

/cancel: delivered units returned to inventory (0 for other steps). Example: 0.

transfersCancelledinteger

/cancel: transfers cancelled (0 for other steps). Example: 1.

Changes

No recorded changes to this operation across all 1 revision of this API.