Edit Fulfillment Order Shipping Details
PATCH/api/fulfillment-orders/:fulfillmentOrder/shipping
Edit the requested shipping params on a proforma fulfillment order before it is submitted — the shipping method, requested ship date, and provider-specific metadata (e.g. notes). These travel with the FO into the submission payload.
orders:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Mutability gate. Allowed ONLY while the FO is status=open AND request_status is unsubmitted or rejected (i.e. not yet successfully sent). Once submitting/accepted the carrier owns the values, so edits return 409.
Body fields (all optional — sometimes; only the keys present are written):
requested_shipping_method_id(nullable, integer, must exist inshipping_methods) — the chosen shipping method.requested_shipping_method(nullable, string, max 255) — free-text method label (used when no method id applies / provider-specific).requested_ship_date(nullable, date) — requested dispatch date.requested_metadata(nullable, object) — free-form, provider-varying values. Only the keys the active provider owns are written; on submission they are bridged onto the SalesOrderFulfillment metadata the carrier dispatchers read.requested_metadata.notes(nullable, string, max 2000) — fulfillment notes for the provider.requested_metadata.signature_required(nullable, boolean) — signature on delivery (Starshipit / ShipHero / ShipMyOrders / ShipFusion). Aliased toisSignatureRequiredfor ShipHero & ShipMyOrders when bridged onto the fulfillment.requested_metadata.veracore_packing_slip_comments(nullable, string, max 500) — Veracore packing-slip comments.requested_metadata.veracore_shipping_comments(nullable, string, max 500) — Veracore shipping comments.requested_metadata.veracore_third_party_type(nullable, integer, in 1,2,3) — Veracore third-party billing type.requested_metadata.veracore_third_party_account_number(nullable, string, max 100) — Veracore third-party account number.requested_metadata.isInsured(nullable, boolean) — ShipMyOrders insured flag.requested_metadata.instructionsForWarehouse(nullable, string, max 500) — ShipMyOrders warehouse instructions.requested_metadata.fulfillment_sequence(nullable, integer, min 1) — backup override for the postfix pushed to the provider as the order number ({sales_order_number}.{sequence}). Omit/null to auto-assign the next sequence at submit. The current default is exposed on the fulfillment order object asnext_fulfillment_sequence.requested_integration_instance_id(nullable, integer, must exist inintegration_instancesAND be a SHIPPING_PROVIDER instance) — per-FO shipping-provider override; null = use the warehouse default.requested_fulfillment_type(nullable, string, in:manual) — per-FO "force Manual" override.
Click & Collect (pickup) lock. When the order's effective shipping method is a pickup method (is_pickup), it is collected in person and is never dispatched — so a requested_integration_instance_id (carrier) or requested_fulfillment_type=manual override is rejected with 422. The lock is keyed on the RESULTING method: passing a non-pickup requested_shipping_method_id in the SAME request releases the lock (the resource then reports is_pickup=false).
Returns the updated fulfillment order object (which includes next_fulfillment_sequence and is_pickup).
Request
Responses
- 200
- 401
- 403
- 404
- 409
- 422
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
Conflict
Response Headers
Unprocessable Entity
Response Headers
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.