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

  • The order reference, e.g. OR-ASNBC-1. Path parameter — not a query string.

Body

required
application/json
  • 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.

  • A 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
Request Example for post/sales/{orderNumber}/cancel
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
}