v1

latestOpenAPI 3.1.0CC-BY-NC-SA-4.02026-07-2413803.8 MB
Refunds API

Create payment refund

Creates a refund for a specific payment. The refunded amount is credited to your customer usually either via a bank transfer or by refunding the amount to your customer's credit card.

🔑 Access with

API key

Advanced access token with refunds.write

OAuth access with refunds.write

post/payments/{paymentId}/refunds

Request body

resourcestring required

Indicates the response contains a refund object. Will always contain the string refund for this endpoint.

idstring required

The identifier uniquely referring to this refund. Mollie assigns this identifier at refund creation time. Mollie will always refer to the refund by this ID. Example: re_4qqhO89gsT.

modestring required

Whether this entity was created in live mode or in test mode.

Possible values: live test

descriptionstring required

The description of the refund that may be shown to your customer, depending on the payment method used.

paymentIdstring required

The unique identifier of the payment this refund was created for. The full payment object can be retrieved via the payment URL in the _links object.

settlementIdstring nullable

The identifier referring to the settlement this refund was settled with. This field is omitted if the refund is not settled (yet).

status'queued' | 'pending' | 'processing' | 'refunded' | 'failed' | 'canceled' required
createdAtstring required

The entity's date and time of creation, in ISO 8601 format.

reverseRoutingboolean nullable

This feature is only available to marketplace operators.

With Mollie Connect you can charge fees on payments that your app is processing on behalf of other Mollie merchants, by providing the routing object during payment creation.

When creating refunds for these routed payments, by default the full amount is deducted from your balance.

If you want to pull back the funds that were routed to the connected merchant(s), you can set this parameter to true when issuing a full refund.

For more fine-grained control and for partial refunds, use the routingReversals parameter instead.

testmodeboolean nullable

Whether to create the entity in test mode or live mode.

Most API credentials are specifically created for either live mode or test mode, in which case this parameter must not be sent. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting testmode to true.

Example request

{
  "resource": "refund",
  "id": "re_5B8cwPMGnU",
  "mode": "live",
  "description": "Refunding a Chess Board",
  "amount": {
    "currency": "EUR",
    "value": "10.00"
  },
  "settlementAmount": {
    "currency": "EUR",
    "value": "10.00"
  },
  "paymentId": "tr_5B8cwPMGnU",
  "settlementId": "stl_5B8cwPMGnU",
  "status": "queued",
  "createdAt": "2024-03-20T09:13:37+00:00",
  "externalReference": {
    "type": "acquirer-reference"
  },
  "routingReversals": [
    {
      "amount": {
        "currency": "EUR",
        "value": "10.00"
      },
      "source": {
        "type": "organization",
        "organizationId": "org_1234567"
      }
    }
  ],
  "_links": {
    "self": {
      "href": "https://...",
      "type": "application/hal+json"
    },
    "payment": {
      "href": "https://...",
      "type": "application/hal+json"
    },
    "settlement": {
      "href": "https://...",
      "type": "application/hal+json"
    },
    "documentation": {
      "href": "https://...",
      "type": "application/hal+json"
    }
  }
}

Response

The newly created refund object.