Live API
Refunds
Process live full or partial refunds for successful transactions. Use your live API key with /api/live/refund.
Note
Refunds can only be processed for transactions with status
SUCCESS. Partial refunds are allowed, but the total refunded amount cannot exceed the original transaction amount.Process Refund
POST
/api/live/refundEncryptedAPI Key
Payload encryption required. Encrypt the request JSON and send { "payload": "<iv>:<ciphertext>" }. Decrypt the response payload field. Encryption guide →. Do not share your API key or Encryption Key with anyone.
Processes a refund for a successful transaction. If amount is not provided, a full refund is processed.
Important
All payment API requests must be encrypted on your server before sending. Build the JSON below, encrypt it with your Encryption Key, and POST
{"payload": "<iv_hex>:<ciphertext_hex>"}. Do not share your API key or Encryption Key with anyone — use them only on your backend. See the Encryption guide for code examples.Request structure (encrypt this JSON)
{
"transactionId": "TXN-20240101-ABC123",
"refund": {
"amount": 50.00,
"reason": "Customer requested refund"
}
}Wire format (send this to the API)
Encrypted request body
{
"payload": "3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a:8e4f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0"
}Request Parameters
Single reference table grouped by JSON object. Nested fields use dot notation (e.g. payment.amount).
| Field | Type | Required | Description |
|---|---|---|---|
| Transaction | |||
| transactionId | string | Required | PayoFlux transaction ID to refund |
| Refundrefund | |||
| refund.amount | number | Optional | Partial refund amount. Omit for a full refund |
| refund.reason | string | Optional | Reason for the refund |
Important
All payment API responses — including success, declined, failed, and validation errors — are returned encrypted when you are authenticated. The wire body is
{"success": true|false, "payload": "<iv_hex>:<ciphertext_hex>"}. Decrypt payload with your Encryption Key to read the standard JSON documented below. Outer success mirrors the decrypted outcome (false for declines and errors). Do not share your Encryption Key or API key — keep both on your server only.Wire format (from API)
{
"success": true,
"payload": "7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7:4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8"
}After decryption
Success Response
200{
"success": true,
"data": {
"refundId": "REF-20240101-XYZ789",
"transactionId": "TXN-20240101-ABC123",
"amount": 50,
"status": "PENDING",
"reason": "Customer requested refund",
"createdAt": "2024-01-01T12:00:00Z"
}
}