メインコンテンツへスキップ
有効または保留中のサブスクリプションをキャンセルします。動作は現在のサブスクリプションステータスによって異なります。
POST /v1/actions/subscription-order/cancel-order
認証: API Key(merchant、owner ロール)
このエンドポイントには customer 側の session-token フローもあります:サブスクリプションのキャンセル(Customer) を参照。

キャンセル動作

現在のステータスアクション結果ステータス
pending即時キャンセルcanceled
active期間終了時にキャンセル(PSP 経由)canceling -> 期間終了時に canceled
  • pending: 直接キャンセルされ、ステータスは canceled になります
  • active: PSP キャンセルがトリガーされます(請求期間の終了時に有効)。ローカルステータスは canceling になり、期間終了時に Webhook 経由で canceled に更新されます

リクエストボディ

フィールド必須説明
orderIdstringYesサブスクリプション注文 ID(Short ID フォーマット ORD_xxx

リクエスト例

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

const client = new WaffoPancake({
  merchantId: process.env.WAFFO_MERCHANT_ID!,
  privateKey: process.env.WAFFO_PRIVATE_KEY!,
});

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

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

成功レスポンス (200) — 有効なサブスクリプション

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

成功レスポンス (200) — 保留中のサブスクリプション

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

レスポンスフィールド

フィールド説明
orderIdstring注文 ID(Short ID)
statusstring新しい注文ステータス(canceling または canceled

エラー

リトライポリシー:4xx は一切リトライしない — リクエストを修正してから再送信。5xx は指数バックオフでリトライ(5s 開始、最大 3 回)。
ステータスerrors[0].message意味推奨処理
400Missing X-Context-Merchant-Id headerAPI Key 認証下で merchant コンテキストが欠落認証パイプラインを確認
400Missing required field: orderIdリクエストボディに orderId が含まれていないリクエストボディを修正してから再送信
400Expected format: ORD_xxx, got "..."orderId Short ID のデコード失敗orderId のフォーマットを修正してから再送信
400Subscription cannot be canceled, current status: X注文ステータスが pending または active ではない(canceledcancelingexpired など)サブスクリプションはキャンセル不可
401Authentication failedAPI Key 署名が無効認証ヘッダーを確認
403Order does not belong to user所有権チェック失敗呼び出し元が注文を所有しているか確認
404Order not found注文が存在しないorder ID を確認
500Internal server errorサーバ側の予期しない障害指数バックオフでリトライ(5s 開始、最大 3 回)
502Failed to cancel subscriptionローカル更新または PSP キャンセル失敗指数バックオフでリトライ(5s 開始、最大 3 回)