Delete Sales Order Line
DELETE/api/sales-order-lines
Deletes a SINGLE sales order line, identified by line_id in the request BODY — despite the collection-level path (DELETE /api/sales-order-lines), this is not a bulk or delete-all operation. For multi-line deletes use DELETE /api/sales-order-lines/bulk.
orders:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Delete a single sales order line. Recalculates order discounts if any were applied.
Authentication: Requires Bearer token.
Restrictions:
- Cannot delete if the line has associated fulfillment lines
- Cannot delete the last line on a sales order
Lines a shipping provider has a record of (a fulfillment order for the line was submitted to, or voided at, a carrier) are not deleted: every remaining unit is cancelled and the line drops to a zero price, so it no longer counts toward the order total but stays on the order as history. The response then carries kept_as_history: true. If units are still committed to a live fulfillment, the request is refused with a 422 until that fulfillment is cancelled.
Body:
- line_id (required): ID of the sales order line to delete
A line that already has fulfillment lines cannot be deleted; the request is refused.
Requires permission: sales_orders.update
Request
Responses
- 200
- 401
- 403
- 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
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.