RevKeen Docs
Api reference

Void a terminal payment

Void a completed terminal payment. Voids are always for the full amount — partial voids are not supported. The void is sent to the same terminal that processed the original sale.

Voids are only possible for unsettled transactions. If the transaction has already settled, use a refund instead.

The void command is dispatched asynchronously. Subscribe to billing.terminal_void.succeeded webhooks for the outcome.


Related endpoints

  • POST /terminal-payments — Initiate a terminal payment
  • GET /terminal-payments — List terminal payments
  • GET /terminal-payments/{id} — Retrieve a terminal payment
  • POST /terminal-payments/{id}/cancel — Cancel a terminal payment
  • POST /terminal-payments/{id}/refund — Refund 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.

POST
/terminal-payments/{id}/void
x-api-key<token>

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

id*string

Terminal payment attempt ID of the original sale

Formatuuid

Request 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/void" \  -H "x-api-key: $REVKEEN_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "reason": "Duplicate charge"  }'
{
  "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"
}