Looking for ePay classic docs? Go to docs.epay.dk
ePay documentationDocsePay documentation
Transactions

Void Payment

OpenAPI Spec

Test this endpoint live

Open the same request directly in API Explorer.

Open in API Explorer

Server URL

POST
/public/api/v1/transactions/{transactionId}/void

Void a payment by releasing an already authorized amount, before it is captured, so no funds is transferred from the cardholder to you.

This releases the held funds on the customer’s card instead of completing the charge.

This cannot be used to "cancel" a pending payment, that has not yet been authorized.

We recommend a minimum timeout of 60 seconds.

Operations are processed synchronously

All operations such as CAPTURE, VOID and REFUND are processed synchronously and the outcome is returned directly in the response, meaning webhooks are not required.

We strongly recommend using the Idempotency-Key header, to ensure safe retries in case of network failure.

Authorization

BearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

transactionIdstring
Required

The id of the transaction to void.

Header Parameters

Idempotency-Keystring

Ensures that a request can be safely retried without causing duplicate operations. Typically used for actions like payment creation and operations such as refund and void to prevent accidental double processing.

  • If a response is replayed due to using the same key, the response will include the header Idempotent-Replayed: true.
  • Idempotency keys are scoped by [Key, Endpoint, HTTP Verb]; the same key on a different endpoint or method will not replay the original response.
  • Responses are cached for 24 hours. After that, the cache is cleared, so idempotency is only guaranteed within 24 hours of the initial request.

Request Body

application/json

Void request payload.

TypeScript Definitions

Use the request body type in TypeScript.

amountinteger
Required

Amount in minor units to void (e.g., 1095 = 10.95 DKK).
ePay supports both full and partial voids. It is not possible to void more than was authorized.

Special value: -1 means 'void remaining amount'. Sending 0 is not allowed.

Possible values:
-1
Range:
1 <= value

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/public/api/v1/transactions/string/void" \  -H "Idempotency-Key: c4f5e8d2-1234-5678-90ab-cdef12345678" \  -H "Content-Type: application/json" \  -d '{    "amount": 1095  }'
{  "operationId": "019248e0-0ff4-7c1e-9438-f7648c9ff0fe",  "success": false,  "errorCode": {    "code": "DECLINED_BY_ISSUER_OR_SCHEME",    "message": "The operation was rejected by either the issuer or schemes."  }}
{  "errorCode": "SERVER_ERROR",  "message": "An unexpected system error"}
{  "errorCode": "VALIDATION_ERROR",  "message": "Input validation errors",  "errors": {    "amount": [      "[required]: Is a required non-nullable field",      "[int]: Must be an integer",      "[min:0]: Must be greater than 0",      "[max:999999999]: Must be less than 999999999"    ]  }}
{  "errorCode": "SERVER_ERROR",  "message": "An unexpected system error"}

Refund Payment

Refund a payment by returning money to the customer after it has already been captured. You can refund the full amount or only part of it (partial refund), depending on how much you want to return. The endpoint typically only returns a single refund operation. But if multiple partial captures have been requested, the endpoint might return multiple refund operations as each capture is refunded in isolation. All operations are returned in the same response. If you do not use partial captures, then you will only ever receive a single refund operation. We recommend a minimum timeout of 60 seconds. Operations are processed synchronously All operations such as CAPTURE, VOID and REFUND are processed synchronously and the outcome is returned directly in the response, meaning webhooks are not required. We strongly recommend using the Idempotency-Key header, to ensure safe retries in case of network failure.

Renew Payment

Renew a previously authorized payment to extend the remaining uncaptured authorization period for supported payment methods. This operation is only supported for transactions using the KLARNA and VIABILL payment methods. The transaction must currently have remaining uncaptured authorized balance to renew. We recommend a minimum timeout of 60 seconds. - SUCCESS: the renew operation completed immediately. - PROCESSING: the renew operation is pending and will be finalized later. We strongly recommend using the Idempotency-Key header, to ensure safe retries in case of network failure.