Skip to main content
This is the customer-token call path of the same endpoint described in Cancel Subscription (Merchant API Key). Behavior, request body, and response shape are identical — only the auth surface and the call site differ.
POST /v1/actions/subscription-order/cancel-order
Authentication: Session Token — see Customer Endpoints (customer or buyer role)
The orderId must belong to the customer that the session token was minted for. Tokens minted for one buyer cannot cancel another buyer’s subscription.

Cancellation Behavior

Current StatusActionResult Status
pendingImmediate cancelcanceled
activeCancel at period end (via PSP)cancelingcanceled at period end

Request Body

FieldTypeRequiredDescription
orderIdstringYesSubscription order ID (Short ID format ORD_xxx)

Example Request

import { WaffoPancake } from "@waffo/pancake-ts";

const client = new WaffoPancake({
  sessionToken: window.WAFFO_SESSION_TOKEN, // injected by the merchant's portal
  environment: "prod",
});

const result = await client.orders.cancelSubscription({
  orderId: "ORD_2aUyqjCzEIiEcYMKj7TZtw",
});

console.log(result.orderId); // "ORD_2aUyqjCzEIiEcYMKj7TZtw"
console.log(result.status);  // "canceling" or "canceled"

Success Response (200)

{
  "data": {
    "orderId": "ORD_2aUyqjCzEIiEcYMKj7TZtw",
    "status": "canceling"
  }
}

Response Fields

FieldTypeDescription
orderIdstringOrder ID (Short ID)
statusstringNew order status (canceling or canceled)

Errors

Retry policy: Never retry 4xx — fix the request and resubmit. Retry 5xx with exponential backoff (start 5s, max 3 attempts).
Statuserrors[0].messageWhat it meansRecommended handling
400Missing required field: orderIdorderId was not provided in the bodyFix the body, resubmit
400Expected format: ORD_xxx, got "..."orderId Short ID could not be decodedFix the orderId format, resubmit
400Subscription cannot be canceled, current status: XOrder status is not pending or active (e.g. already canceled, canceling, expired)The subscription is no longer cancellable
401Authentication failedSession token invalid, expired, or malformedRe-mint the session token via Issue Session Token
403Order does not belong to userThe token’s buyer is not the order ownerMint a token for the correct buyer
404Order not foundOrder does not existVerify the order ID
500Internal server errorUnexpected server-side failureRetry with exponential backoff (start 5s, max 3 attempts)
502Failed to cancel subscriptionLocal update or PSP cancellation failedRetry with exponential backoff (start 5s, max 3 attempts)