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

Refund 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}/refund

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.

Authorization

BearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

transactionIdstring
Required

The id of the transaction to refund.

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

Refund request payload.

TypeScript Definitions

Use the request body type in TypeScript.

amountinteger
Required

Amount in minor units to refund (e.g., 1095 = 10.95 DKK)

Range:
1 <= value

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/public/api/v1/transactions/string/refund" \  -H "Idempotency-Key: c4f5e8d2-1234-5678-90ab-cdef12345678" \  -H "Content-Type: application/json" \  -d '{    "amount": 1095  }'
{  "success": false,  "operations": [    {      "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"}