---
updatedAt: 2026-08-02T22:20:18.000Z
agentTools:
  projectIndex: https://docs.developer.rabobank.com/smartpay/llms.txt
---

# Refund transactions

Use this endpoint to initiate a refund for a payment transaction.

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "info": {
    "contact": {
      "email": "paysmakers@rabobank.nl",
      "name": "Rabo Smart Pay Support",
      "url": "https://www.rabobank.nl/bedrijven/betalen/klanten-laten-betalen/rabo-smart-pay/support-overzicht"
    },
    "description": "Rabo Smart Pay Merchant Services API allows developers to access functionality of Rabo Smart Pay.\nThis functionality can typically be integrated into backoffice systems of merchants.\n\nAs of October 11th, 2022, Rabo OmniKassa has a new name: Rabo Smart Pay. On a technical level (endpoints, api-calls),\nthis name change has no impact and technical items are not changed.\n\nAs of October 4th, 2022, Payment brand AfterPay has a new name: Riverty. For the time being, the company decided to \nuse both names as a combination: Riverty/AfterPay.  On a technical level (endpoints, api-calls), this name change \nhas no impact and technical items are not changed.\n\nSpecial consideration must be given to so-called 'delayed' transactions. These are pin transactions that arrive at\nRabo Smart Pay (OmniKassa) with a delay of several days. This can occur for example if the terminal was not online \nfor some time. As a consequence these transactions could be missed when querying transactions on a regular basis.\nAn example. Suppose today is September 5th, 2020 and you call the Transaction API to retrieve transactions that\noccurred since yesterday.\n\nFor this call you would typically set the start_datetime parameter to '2020-09-04T00:00:00+02:00'.\nNow if there was a PIN transaction on the 4th which has not arrived at Smart Pay (OmniKassa) yet then clearly this \ntransaction would not be included in the response of the API call. Now suppose that this transaction arrives on \nSeptember 5th in Smart Pay (OmniKassa) after this API call was done. Then the next day, September 6th, a call to \nretrieve the transactions that occurred the day before (September 5th) would still not include this delayed \ntransaction, because the date and time of any pin transaction is set to the moment when it was registered by the \nterminal. For this specific delayed transaction that that would be September 4th. So using this approach the delayed\ntransaction would never be returned in any API call.\n\nThe way to solve this problem is by also including the created_or_updated_at parameter in the call.\nThis parameter denotes the timestamp at which the transaction was stored in Smart Pay (OmniKassa) or last modified. \nAssuming that 7 days is a reasonable upperbound at which delayed transactions arrive at Smart Pay (OmniKassa) then \nany new or updated transaction (delayed or not) can be retrieved by setting the start_datetime parameter to the \ncurrent date and time minus 7 days and the created_or_updated_at to the date and time of the previous API call.\nOf course, this is assuming that the API is called at least once each week. If the API is called less frequently\nthen the value of the start_datetime parameter needs to be updated accordingly.\n\n**Sandbox transaction data**\n\nOn the sandbox environment we have limited transaction data available for test purposes.\nThere are in total 44 transactions with different type of transactions and statuses spread over February until June 2020.\nThe requests are similar to the production environment except the calls must be sent to the\nSmart Pay Merchant Service API Sandbox endpoint https://api-sandbox.rabobank.nl/openapi/sandbox/omnikassa/merchant\n\n**Sandbox refund transaction**\n\nOn the sandbox environment it is possible to simulate different scenarios based on the refund amount provided when initiating a refund request.\n\nAlthough we try to create the example data of our API specification in such a way that data can be retrieved by using the example data, it is not functionality that should be relied upon.\nYou can use the following request data in order to test requests in the sandbox environment.\n\nThe following are the amounts (in euro) that can be used to simulate the corresponding scenarios when a refund is initiated. Any other amount will trigger a pending refund.\n* 2.00: MAXIMUM_REFUNDABLE_AMOUNT_EXCEEDED\n* 3.00: REFUND_PERIOD_EXPIRED\n* 4.00: UNKNOWN_TRANSACTION_OR_REFUND_NOT_SUPPORTED\n* 5.00: UNKNOWN\n* 10.00: simulates a partial refund transaction for Riverty/Afterpay which requires a description and vat category in the request.\n* 20.00: simulates an iDEAL refund transaction\n\nWhen the request is created successfully, the status will be pending. Use the get api to check the status of the refund.\n\n**Sandbox retrieve refund transaction**\n\nThe following refund IDs can be used to retrieve specific refund transaction, each of which has a specific status:\n* 926a0c88-aa9e-4897-8bc6-0c4f770cc8a5: simulates a successful refund transaction\n* 96436fe3-caef-4af8-9cb5-dacc0d5e8907: simulates a failed refund transaction\n* cc094aeb-89f7-4123-b60b-ccf83a16320d: simulates a pending refund transaction\n* a3e5c64d-6f0d-45fd-b0f6-0b6bc1124a44: simulates a pending partial transaction for Riverty/Afterpay\n\nWhich transaction ID is used is not relevant, as far as it is a valid UUID. Any other refund id in the request will return a NOT_FOUND\n\n**Sandbox retrieve refundable details**\n\nThe following transaction IDs can be used to retrieve refundable details responses:\n* 22b36073-57a3-4c3d-9585-87f2e55275a5: simulates a successful refundable details response\n* 172f0295-daca-4783-971b-34f89847e69e: simulates an UNKNOWN error response\n\nAny other transaction id in the request will return a NOT_FOUND\n\n**Sandbox retrieve Payouts**\n\nOn the sandbox environment we have limited payout data available for test purposes.\nThe payout sandbox data available is spread over February until June 2020 so please consider that when using date time filters.\n",
    "termsOfService": "https://media.rabobank.com/m/76c8550a1467d125/original/Algemene-Voorwaarden-Rabo-Smart-Pay.pdf",
    "title": "Rabo Smart Pay Merchant Services API",
    "version": "3.2.33",
    "x-api-id": "bf379754-e8e9-4d95-85d0-00679d78b991",
    "x-audience": "component-internal",
    "x-ibm-name": "omnikassa-merchant-services-api"
  },
  "servers": [
    {
      "url": "https://api.rabobank.nl/openapi/omnikassa/merchant",
      "description": "Production server"
    },
    {
      "url": "https://api-sandbox.rabobank.nl/openapi/sandbox/omnikassa/merchant",
      "description": "Sandbox server"
    }
  ],
  "paths": {
    "/transactions/{transactionId}/refunds": {
      "post": {
        "parameters": [
          {
            "description": "Unique value to enforce idempotency",
            "example": "a2b36073-57a3-4c3d-9585-87f2e55275aa",
            "in": "header",
            "name": "X-Request-ID",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "description": "Unique value identifying the transaction within Smart Pay.",
            "example": "22b36073-57a3-4c3d-9585-87f2e55275a5",
            "in": "path",
            "name": "transactionId",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateRefundResponse"
                }
              }
            },
            "description": "Created"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrors"
                }
              }
            },
            "description": "Invalid request."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrors"
                }
              }
            },
            "description": "Internal server error."
          },
          "default": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrors"
                }
              }
            },
            "description": "Unexpected error"
          }
        },
        "tags": [
          "Refunds"
        ],
        "description": "Use this endpoint to initiate a refund for a payment transaction.",
        "operationId": "CreateRefund",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RefundRequest"
              }
            }
          },
          "description": "The request body containing the refund details",
          "required": true
        },
        "summary": "Refund transactions"
      }
    }
  },
  "components": {
    "schemas": {
      "ApiError": {
        "description": "Error occurred - see status code and problem object for more information.",
        "properties": {
          "error_code": {
            "description": "A textual value identifying the type of error.",
            "example": "ORG_ID_NOT_FOUND",
            "pattern": "^[A-Z]+(_[A-Z]+)*$",
            "type": "string"
          },
          "error_message": {
            "description": "A textual description of the error.",
            "example": "Invalid request",
            "maxLength": 256,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "error_code",
          "error_message"
        ],
        "type": "object"
      },
      "ApiErrors": {
        "description": "Error occurred - see status code and problem object for more information.",
        "properties": {
          "errors": {
            "items": {
              "$ref": "#/components/schemas/ApiError"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "CreateRefundResponse": {
        "description": "Response for the refund transaction request",
        "properties": {
          "created_at": {
            "description": "The timestamp at which the refund transaction was created within Smart Pay.",
            "example": "2020-01-01T13:00:00+01:00",
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "The reason for refund request",
            "example": "Customer request for refund",
            "maxLength": 45,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9 ]{1,45}$",
            "type": "string"
          },
          "payment_brand": {
            "description": "The Payment brand of the transaction",
            "enum": [
              "IDEAL",
              "IDEAL_QR",
              "AFTERPAY",
              "VISA",
              "MASTERCARD",
              "SOFORT",
              "V_PAY",
              "MAESTRO",
              "PAYPAL",
              "BILLINK",
              "BANCONTACT",
              "VVV",
              "WERO"
            ],
            "example": "IDEAL",
            "type": "string"
          },
          "refund_id": {
            "description": "The refund request unique identifier",
            "example": "cc094aeb-89f7-4123-b60b-ccf83a16320d",
            "format": "uuid",
            "type": "string"
          },
          "refund_money": {
            "$ref": "#/components/schemas/Money"
          },
          "status": {
            "description": "The initial status of the refund request",
            "enum": [
              "PENDING"
            ],
            "example": "PENDING",
            "type": "string"
          },
          "transaction_id": {
            "description": "Unique value identifying the payment transaction within Smart Pay.",
            "example": "22b36073-57a3-4c3d-9585-87f2e55275a5",
            "format": "uuid",
            "type": "string"
          },
          "vat_category": {
            "description": "The VAT category of the product. The values refer to the different rates used in the Netherlands. This field is required for partial refunds of payment transactions with payment brand Afterpay.'",
            "enum": [
              "HIGH",
              "LOW",
              "ZERO"
            ],
            "example": "HIGH",
            "type": "string"
          }
        },
        "required": [
          "created_at",
          "payment_brand",
          "refund_id",
          "refund_money",
          "status",
          "transaction_id"
        ],
        "type": "object"
      },
      "Money": {
        "properties": {
          "amount": {
            "description": "Amount of money in euros.",
            "example": 230.15,
            "format": "decimal",
            "type": "number"
          },
          "currency": {
            "description": "3 letter currency code as defined by ISO-4217",
            "enum": [
              "EUR"
            ],
            "format": "iso-4217",
            "type": "string"
          }
        },
        "required": [
          "amount",
          "currency"
        ],
        "type": "object"
      },
      "RefundRequest": {
        "description": "The refund request body",
        "properties": {
          "description": {
            "description": "Reason for refund request",
            "example": "Customer request for refund",
            "maxLength": 45,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9 ]{1,45}$",
            "type": "string"
          },
          "money": {
            "$ref": "#/components/schemas/Money"
          },
          "vat_category": {
            "description": "The VAT category of the product. The values refer to the different rates used in the Netherlands. This field is required for partial refunds of payment transactions with payment brand Afterpay.'",
            "enum": [
              "HIGH",
              "LOW",
              "ZERO"
            ],
            "example": "LOW",
            "type": "string"
          }
        },
        "required": [
          "money"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "clientId": {
        "description": "ClientId as provided by the Rabobank developer portal.",
        "in": "header",
        "name": "X-IBM-Client-Id",
        "type": "apiKey"
      }
    }
  },
  "security": [
    {
      "clientId": []
    }
  ],
  "externalDocs": {
    "description": "Find out more about Rabo Smart Pay",
    "url": "https://www.rabobank.nl/bedrijven/betalen/klanten-laten-betalen/rabo-smart-pay"
  },
  "x-readme": {
    "explorer-enabled": false,
    "proxy-enabled": false
  }
}
```