Skip to main content
Request a refund for a payment. The refund goes through a review workflow before processing.
POST /v1/actions/refund-ticket/create-ticket
Authentication: API Key

Request Body

FieldTypeRequiredDescription
paymentIdstringYesPayment ID (Short ID format PAY_xxx)
reasonstringYesReason for the refund request
amountintegerNoPartial refund amount in smallest currency unit. Omit for full refund

Example Request

// Full refund
const { ticket } = await client.orders.createRefundTicket({
  paymentId: "PAY_6eYCunG3IMmIgcQOnaXdoA",
  reason: "Product did not meet expectations",
});

// Partial refund
const { ticket } = await client.orders.createRefundTicket({
  paymentId: "PAY_6eYCunG3IMmIgcQOnaXdoA",
  reason: "Partial service used",
  amount: 1500,
});

Success Response (200)

{
  "data": {
    "ticketId": "TKT_8gAEwpI5KOoKieSQL1ZfqC",
    "status": "pending",
    "requestedAmount": 2900
  }
}

Response Fields

FieldTypeDescription
ticketIdstringRefund ticket ID (Short ID format TKT_xxx)
statusstringTicket status (initially pending)
requestedAmountintegerRefund amount in smallest currency unit

Error Responses

StatusDescription
400Missing paymentId or reason
400Refund window expired (7 days for one-time products)
400Partial refund amount exceeds original payment
401Authentication failed
404Payment not found
500Internal server error