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.

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
  • orderNumber
    Type: string
    min length:  
    1
    required

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

Body
required
application/json
  • reason
    Type: string enum
    required

    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.

  • reasonText
    Type: string
    min length:  
    10
    max length:  
    500
    required

    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
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,
  "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"
  },
  "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
  },
  "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
  },
  "shipping": {
    "trackingNumber": "6A18432197431",
    "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
}