Cancel a sale
Cancels one of your sales. The order moves to cancelled_seller, the buyer is refunded in full, and the cards return to your inventory.
The order must be awaiting dispatch (pending_shipment). Any other status returns 409 INVALID_STATUS.
When the buyer has asked to cancel (cancellation_requested), use POST /v1/sales/{orderNumber}/accept-cancellation instead: it has no review or completion-rate penalty.
reasonText is shown to the buyer along with the reason code, and both appear on the sale's cancellation afterwards.
Returns the updated sale, in the same shape as GET /v1/sales/{orderNumber}.
Send an Idempotency-Key header to make retries safe: the same key returns the same response for 24 hours.
Requires the sales:write scope.
Path Parameters
- Type: stringorder
Number min length:1requiredThe order reference, e.g.
OR-ASNBC-1. Path parameter — not a query string.
Body
- Type: stringenumreasonrequired
Why you are cancelling: the item is no longer available (
item_unavailable), the item was damaged (item_damaged), the listing price was wrong (pricing_error), or another reason (seller_other).values- item
_unavailable The item is no longer available.
- item
_damaged The item was damaged.
- pricing
_error The listing price was wrong.
- seller
_other Another reason — explained in
reasonText.
- item
- Type: stringreason
Text min length:10max length:500requiredA note to the buyer explaining the cancellation — 10 to 500 characters.
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://public-api.cardnexus.com/v1/sales/{orderNumber}/cancel' \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"reason": "item_unavailable",
"reasonText": ""
}'
{
"orderNumber": "OR-ASNBC-1",
"status": "shipped",
"placedAt": "2026-06-13T15:02:00.000Z",
"updatedAt": "2026-06-14T09:12:00.000Z",
"shippedAt": "2026-06-14T09:12:00.000Z",
"deliveredAt": null,
"completedAt": null,
"shippingService": "tracked",
"webUrl": "https://cardnexus.com/orders/OR-ASNBC-1",
"shipBy": null,
"untrackedCloseAt": null,
"currency": "EUR",
"items": [
{
"productId": 50212,
"productName": "Dark Magician (SDMY-EN001)",
"imageUrl": "https://images.cardnexus.com/yugioh/SDMY-EN001.png",
"condition": "NM",
"language": "en",
"finish": "Standard",
"graded": null,
"quantity": 2,
"unitPrice": {
"amount": 4.5,
"currency": "EUR"
},
"lineTotal": {
"amount": 9,
"currency": "EUR"
},
"inventoryId": "665f3a2b1c8d4e9f7a6b5c4d",
"customId": "YRG|5555-5DS1-2EX-006-f-2-2008-08-01"
}
],
"subtotal": {
"amount": 9,
"currency": "EUR"
},
"shippingAmount": {
"amount": 3.5,
"currency": "EUR"
},
"shippingManagedByCardNexus": false,
"sellerFee": {
"percentage": 5,
"amount": {
"amount": 0.45,
"currency": "EUR"
}
},
"payout": {
"amount": {
"amount": 12.05,
"currency": "EUR"
},
"eligibleAt": "2026-06-21T09:12:00.000Z",
"paidOutAt": null
},
"refunded": {
"amount": 0,
"currency": "EUR"
},
"buyer": {
"id": "665f3a2b1c8d4e9f7a6b5c4d",
"username": "north_arena_tcg",
"avatarUrl": "https://images.cardnexus.com/avatars/north_arena_tcg.png",
"country": "GB",
"type": "individual",
"rating": {
"average": 4.9,
"count": 51
},
"reliability": null
},
"shippingAddress": {
"recipientName": "Marie Dubois",
"line1": "14 Rue des Lilas",
"line2": null,
"city": "Lyon",
"state": null,
"postalCode": "69003",
"countryCode": "FR",
"phone": null
},
"metadata": {
"fulfillment_stage": "packed",
"internal_order_ref": "SO-10432"
},
"labelState": null,
"actions": [
{
"id": "update-tracking",
"method": "POST",
"path": "/v1/sales/OR-ASNBC-1/tracking"
}
],
"shipping": {
"trackingNumber": "6A18432197431",
"type": "parcel",
"carrier": "Colissimo",
"trackingUrl": "https://www.laposte.fr/outils/suivre-vos-envois?code=6A18432197431",
"status": "in_transit",
"shippedAt": "2026-06-14T09:12:00.000Z",
"deliveredAt": null,
"history": null
},
"cancellation": null
}