Introduction
Good news for Cdiscount sellers: you can now ship order lines in CancelRequest status through the REST API in specific cases.
This applies when the order header is InPreparation, the supply mode is Seller, and the cancellation request was initiated by the customer. The shipment is performed through the existing POST /orders/{orderId}/shipments endpoint.
What changed?
Until now, the REST shipment flow only supported shipping lines in InPreparation, which could block sellers when a customer requested cancellation after the parcel had already entered the shipping process. The documented shipment flow currently reflects that baseline rule.
With this update, Cdiscount sellers can now declare shipment for eligible CancelRequest lines when:
- the order header status is
InPreparation - the cancellation request comes from the customer
- the order supply mode is
Seller
Requests are still rejected for seller-initiated or sales-channel-initiated cancellation requests, and for non-shippable order states.
Example — Ship a Cdiscount order with a CancelRequest line
You can continue using the same shipment endpoint:
POST /orders/{orderId}/shipments
The request body format does not change: you still declare one or more parcels with parcelNumber, carrierName, optional trackingUrl, and the orderLineIds to ship.
Request
{
"parcelNumber": "PKG-123456",
"carrierName": "Chronopost",
"trackingUrl": "https://tracking.example.com/PKG-123456",
"orderLineIds": ["LINE_1", "LINE_2"]
}
Example scenario
This shipment is now accepted for Cdiscount when:
- the order status is
InPreparation LINE_1isInPreparationLINE_2isCancelRequest- the cancellation request was initiated by the customer
Response
201 Created
As with the standard shipment flow, a successful request confirms that the shipment declaration has been created for the targeted order or order lines.
Why it matters
Less manual handling
Sellers no longer need to leave the REST workflow and go to OSP just to resolve a customer cancellation request before declaring shipment.
Better alignment with operational reality
If the parcel is already with the carrier, shipment still needs to be declared. This update allows the API flow to match that real-life scenario.
Closer functional parity with legacy behavior
This change restores a behavior that sellers previously had in SOAP, while keeping it framed within explicit REST eligibility conditions.