POST /api/actions/refund-ticket/resubmit-ticket
Authentication: Merchant API Key (server-to-server).
Resubmit reuses the request shape of Create Refund Ticket, plus a ticketId to identify the ticket being revised. The originating paymentId is bound to the existing ticket and cannot be changed.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
ticketId | string | Yes | Short ID of the refund ticket being revised, e.g. TKT_3bVzrkD0FJjFdZNLk8Ualx |
reason | string | Yes | Free-text reason for the revised request |
requestedAmount.amount | string | Yes | Revised refund amount (display format, must be > 0 and ≤ payment.amount) |
requestedAmount.currency | string | Yes | ISO 4217 code, must match the payment currency |
refundTicketMerchantExternalId written at create time is immutable across resubmits — it cannot be changed once the ticket exists.
Success response (200)
versionNumber increments. The ticket re-enters the review queue (pending for buyer-initiated, processing for merchant-initiated).
Errors
Retry policy: Never retry 4xx — fix the request and resubmit. Retry 5xx with exponential backoff (start 5s, max 3 attempts).
| Status | errors[0].message | What it means | Recommended handling |
|---|---|---|---|
| 400 | Missing required field: ticketId | ticketId not provided | Add ticketId, resubmit |
| 400 | Expected format: TKT_xxx, got "..." | ticketId Short ID could not be decoded | Fix ticketId format, resubmit |
| 400 | Invalid requestedAmount.amount format | Amount string could not be parsed | Use a display string like "10.50" |
| 401 | Unauthorized | Invalid API Key signature | Verify auth headers |
| 403 | Submitter is not the original ticket owner | The caller didn’t create this ticket | Only the original submitter can resubmit |
| 404 | Ticket not found | Ticket doesn’t exist or doesn’t belong to the caller | Verify ticketId |
| 409 | Ticket status is X, only rejected/failed can be resubmitted | Ticket is not in a resubmittable state | Wait for rejected / failed, or open a new ticket |
| 409 | Requested amount exceeds payment amount | Revised amount > payment.amount | Fix the amount |
| 500 | Internal server error | Unexpected server-side failure | Retry with exponential backoff (start 5s, max 3 attempts) |