---
title: "Create refund for payment"
method: POST
path: "/v3/payments/{payment-id}/refunds"
---

# Create refund for payment

`POST /v3/payments/{payment-id}/refunds`

## Request

- Base URL: `https://merchant.api.preprod.bancontact.net`
- URL: `https://merchant.api.preprod.bancontact.net/v3/payments/{payment-id}/refunds`
- Auth: API key in header `Signature`
- TypeScript: <https://skmtc.dev/bancontactpro/apis/payment-refund-service-api/docs/v3/payments/:payment-id/refunds/post.ts> (a function with typed inputs; its response is checked against the schema)

Endpoint to initiate refund of Bancontact Company payment to the debtor.
This endpoint is idempotent based on 'Idempotency-Key' header. So the same request can be safely retried in case of timeout/network issue.

## Path parameters

- `payment-id` string, required

## Headers

- `Idempotency-Key` string, required

## Request body

- CreateRefundRequest: request with refund details to create
  - `amount` integer, required: Amount in cents
  - `currency` 'EUR', required: currency code. Only EUR is supported [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217)
  - `description` string: refund description

## Response `201`

Refund successfully created

- RefundCreationResponse: refund creation response object
  - `refundId` string, required: refund identifier
  - `paymentId` string, required: payment identifier
  - `status` 'PENDING', required: Refund status after creation. Always has value 'PENDING', because refund processing is asynchronous. Current status can be checked using GET '/v3/payments/{payment-id}/refunds/{refund-id}' endpoint.
  - `amount` integer, required: Amount in cents
  - `currency` 'EUR', required: currency code. Only EUR is supported [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217)
  - `description` string: refund description
  - `creationDate` string, date-time, required: timestamp, when refund was created

## Other responses

- `400`: Error codes: * _VALIDATION_ERROR_ - request validation failed
- `401`: If JWS signature is not valid. Error codes: * _UNAUTHORIZED_ - caller doesn't have valid authentication credentials
- `403`: Error codes: * _ACCESS_DENIED_ - operation not allowed, caller doesn't have required authorities
- `422`: Refund creation failed for business reasons. Error codes: * _PAYMENT_FOR_REFUND_NOT_FOUND_ - payment not found * _INVALID_REFUND_AMOUNT_ - refund amount is too high * _REFUND_NOT_ALLOWED_ - refund is not allowed for the merchant * _REFUND_NOT_POSSIBLE_ - refund is not possible for this payment at the moment * _REFUND_REQUEST_CONFLICT_ - request id is already used by refund with different parameters
- `500`: Error codes: * _TECHNICAL_ERROR_ - technical error
- `503`: Service is unavailable

---

[API](https://skmtc.dev/bancontactpro/apis/payment-refund-service-api.md) - [All operations](https://skmtc.dev/bancontactpro/apis/payment-refund-service-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bancontactpro/apis/payment-refund-service-api/revisions/7a8f360b4e8a?raw)
