> ## Documentation Index
> Fetch the complete documentation index at: https://docs.waffo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 返金チケットの再送信

> 拒否または失敗した返金チケットを修正して再送信

`POST /api/actions/refund-ticket/resubmit-ticket`

**認証：** マーチャント API Key（サーバー間）。

Resubmit は [返金チケットの作成](/ja/api-reference/endpoints/refunds/create-refund-ticket) のリクエスト構造を再利用し、修正対象のチケットを識別する `ticketId` を追加します。元の `paymentId` は既存のチケットにバインドされており、変更できません。

## リクエストボディ

| フィールド                      | 型      | 必須 | 説明                                                   |
| -------------------------- | ------ | -- | ---------------------------------------------------- |
| `ticketId`                 | string | 必須 | 修正対象の返金チケット Short ID（例：`TKT_3bVzrkD0FJjFdZNLk8Ualx`） |
| `reason`                   | string | 必須 | 修正後の理由                                               |
| `requestedAmount.amount`   | string | 必須 | 修正後の返金額（表示形式、`> 0` かつ `≤ payment.amount`）            |
| `requestedAmount.currency` | string | 必須 | ISO 4217 コード、支払い通貨と一致する必要あり                          |

create 時に書き込まれた `refundTicketMerchantExternalId` は resubmit 全体で **変更不可** — チケット作成後は変更できません。

## 成功レスポンス (200)

```json theme={"system"}
{
  "data": {
    "ticket": {
      "id": "TKT_3bVzrkD0FJjFdZNLk8Ualx",
      "status": "pending",
      "subjectId": "PAY_6eYCunG3IMmIgcQOnaXdoA",
      "versionNumber": 2,
      "refundTicketMerchantExternalId": "REF-2026-00891"
    }
  }
}
```

新しいチケットバージョンが追加され、`versionNumber` がインクリメントします。チケットはレビュー待ちに再投入されます（customer 発起は `pending`、merchant 発起は `processing`）。

## エラーレスポンス

> **リトライポリシー**：4xx は一切リトライしない — リクエストを修正してから再送信。5xx は指数バックオフでリトライ（5s 開始、最大 3 回）。

| ステータス | `errors[0].message`                                           | 意味                          | 推奨処理                                |
| ----- | ------------------------------------------------------------- | --------------------------- | ----------------------------------- |
| 400   | `Missing required field: ticketId`                            | `ticketId` が指定されていない        | `ticketId` を追加して再送信                 |
| 400   | `Expected format: TKT_xxx, got "..."`                         | `ticketId` Short ID のデコード失敗 | `ticketId` フォーマットを修正して再送信           |
| 400   | `Invalid requestedAmount.amount format`                       | 金額文字列が解析できない                | 表示形式（`"10.50"` など）を使用               |
| 401   | `Unauthorized`                                                | API Key 署名が無効               | 認証ヘッダーを確認                           |
| 403   | `Submitter is not the original ticket owner`                  | 呼び出し元がチケット作成者ではない           | 元の提出者のみが resubmit 可能                |
| 404   | `Ticket not found`                                            | チケットが存在しないか、呼び出し元に属していない    | `ticketId` を確認                      |
| 409   | `Ticket status is X, only rejected/failed can be resubmitted` | チケットが resubmit 可能な状態ではない    | `rejected` / `failed` を待つか、新規チケット作成 |
| 409   | `Requested amount exceeds payment amount`                     | 修正後金額が `payment.amount` を超過 | 金額を修正                               |
| 500   | `Internal server error`                                       | サーバ側の予期しない障害                | 指数バックオフでリトライ（5s 開始、最大 3 回）          |
