Refund Payment
Use this endpoint to refund funds from a previously captured payment.
You can refund payment methods that allow post-capture reimbursement — for example, Card and selected alternative payment methods such as Vipps or Wallet Service Providers. Availability and behavior depend on the configured acquirer and product setup.
Refund behavior is aligned with product guidelines and the capabilities of the underlying acquirer.
When to Refund
Use the Refund endpoint to return funds to a shopper after you have already captured a payment. Common scenarios include order cancellations, returned goods, pricing adjustments, or duplicate charges.
Refund applies when:
- You have captured the payment (fully or partially)
- The acquirer has collected the funds
- You need to return part or all of those funds to the shopper
You cannot refund a payment before capture. To release funds before capture, use the Cancel endpoint instead.
Refundable Amount
The available refundable amount is calculated as:
Captured amount − Refunded amount
The requested refund amount must not exceed the available refundable amount.
Endpoint
POST /v1/{pspReference}/refund{pspReference}is the unique identifier returned when the payment session was created.- The
idempotency-keyheader is mandatory.
Full Refund
To refund the full available refundable amount, send the request without a body.
Example
POST /v1/{pspReference}/refundIf you omit the body, the system refunds the entire available refundable amount.
Partial Refund
To refund a partial amount, include an amountDetails object in the request body.
The requested amount must not exceed the available refundable amount.
Example
{
"amountDetails": {
"amount": 3000,
"currency": "NOK"
},
"reference": "Customer returned one item"
}Multiple Refunds
You can issue multiple partial refunds until the total refunded amount equals the captured amount.
Once the total refunded amount equals the captured amount, the payment status transitions to refunded.
Field Reference
Path Parameter
| Field | Type | Required | Description |
|---|---|---|---|
pspReference | string (UUID v7) | Yes | Unique payment identifier returned during session creation. |
Request Headers
| Field | Type | Required | Description |
|---|---|---|---|
x-api-key | string | Yes | API key assigned by Aera. |
merchant-id | string | Yes | Merchant ID assigned by Aera. |
idempotency-key | string (UUID v7) | Yes | Unique identifier for this refund request. Required for safe retries. |
Authorization | string | Yes | Bearer <access token> |
Accept | string | Yes | application/vnd.payments.v1+json |
Content-Type | string | Yes | application/vnd.payments.v1+json |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
amountDetails | object | No | Required for partial refund. If omitted, the full refundable amount is refunded. |
reference | string | No | Optional free-text reference for reconciliation or audit purposes (e.g., return reason). |
amountDetails
| Field | Type | Required | Description |
|---|---|---|---|
amount | integer | Yes (for partial refund) | Amount to refund in minor units. |
currency | string (ISO 4217) | Yes (for partial refund) | Currency code (for example, NOK). |
Refund Response
A successful refund returns confirmation of the operation and updated payment status.
{
"responseInfo": {
"responseCode": "000",
"responseText": "Refund successful"
},
"operationInfo": {
"type": "REFUND",
"status": "SUCCESS",
"refundedAmount": {
"amount": 3000,
"currency": "NOK"
}
}
}Important Notes
- Refund is only possible after capture.
- The refund amount must not exceed the available refundable amount.
- Some payment methods may process refunds asynchronously.
- Refund requests must include a valid
idempotency-key. - Settlement timelines depend on the acquirer and card scheme rules.
Updated 13 days ago