Refund a terminal payment
Initiate a refund for a completed terminal payment. The refund is sent to the same terminal that processed the original sale.
amount_minor is optional — omit for a full refund. For partial refunds, specify the amount in minor units.
The refund command is dispatched asynchronously. Subscribe to billing.terminal_refund.succeeded webhooks for the outcome.
Related endpoints
POST /terminal-payments— Initiate a terminal paymentGET /terminal-payments— List terminal paymentsGET /terminal-payments/{id}— Retrieve a terminal paymentPOST /terminal-payments/{id}/cancel— Cancel a terminal paymentPOST /terminal-payments/{id}/void— Void a terminal payment
Common errors
404 resource_missing— the referenced resource does not exist or is not visible to your key.422 unprocessable_entity— business-rule failure (for example, refunding more than the original charge).
Idempotency
Pass an Idempotency-Key header (UUID v4 recommended) to make retries safe. Keys are valid for 24 hours; see the idempotency guide.
Your RevKeen API key (powered by Unkey). Get it from Dashboard > Settings > API Keys. Use rk_sandbox_* for test mode and rk_live_* for production.
In: header
Path Parameters
Terminal payment attempt ID of the original sale
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://api.revkeen.com/v2/terminal-payments/00000000-0000-0000-0000-000000000000/refund" \ -H "x-api-key: $REVKEEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "amount_minor": 2500, "reason": "Customer return" }'{
"data": {
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"invoice_id": "f4c4edb8-11e0-4b33-bcc1-482dc59ebb32",
"device_id": "3bafab7b-4400-4bcf-8e6e-09f954699940",
"type": "sale",
"status": "requested",
"amount_minor": 0,
"currency": "string",
"reference": "string",
"terminal_serial": "string",
"uti": "string",
"auth_code": "string",
"response_code": "string",
"rrn": "string",
"card_scheme": "string",
"masked_pan": "string",
"entry_mode": "string",
"error_message": "string",
"created_at": "string",
"completed_at": "string"
}
}{
"error": "string",
"message": "string",
"code": "string"
}{
"error": "string",
"message": "string",
"code": "string"
}