{"title":"Refund","category":"default","creationDate":1680536820,"content":"<div class=\"additional-info-block output-inline\">\n<h5 class=\"article__heading additional-info-block__title\">Refund in Customer Area <\/h5><div class=\"additional-info-block__body\"><p>You can also refund payments in your Customer Area. For more information, refer to <a href=\"\/pt\/account\/manage-payments#refund-a-payment\">Manage payments<\/a>.<\/p><\/div><\/div>\n\n<p>To return funds to your shopper, you can refund the shopper's payment after it has been <a href=\"\/pt\/get-started-with-adyen\/adyen-glossary#capture-or-clearing-and-settlement\">captured<\/a>. For example: if a shopper returns an item they purchased, you refund their payment.<\/p>\n<p>When you make a refund request, Adyen attempts to <a href=\"#refund-authorization\">authorize the refund<\/a> and transfers the funds to the shopper's account. It can take up to 40 business days before the funds are returned to the shopper's account, depending on the payment method.<\/p>\n<h2>Requirements<\/h2>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Requirement<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong>Integration type<\/strong><\/td>\n<td style=\"text-align: left;\">An <a href=\"\/pt\/online-payments\/build-your-integration\/\">online payments integration<\/a>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/pt\/development-resources\/webhooks\">Webhooks<\/a><\/strong><\/td>\n<td style=\"text-align: left;\">Subscribe to <strong>Standard webhooks<\/strong> and listen for webhook messages with the following <code>eventCode<\/code> values: <ul><li markdown=\"1\"><a href=\"\/pt\/development-resources\/webhooks\/webhook-types\/#transaction-events\">\n  <strong>REFUND<\/strong>\n<\/a><\/li><li markdown=\"1\"><a href=\"\/pt\/development-resources\/webhooks\/webhook-types\/#transaction-events\">\n  <strong>REFUND_FAILED<\/strong>\n<\/a><\/li><li markdown=\"1\"><a href=\"\/pt\/development-resources\/webhooks\/webhook-types\/#transaction-events\">\n  <strong>REFUNDED_REVERSED<\/strong>\n<\/a><\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/pt\/account\/user-roles\">Customer Area roles<\/a><\/strong><\/td>\n<td style=\"text-align: left;\">To edit capture settings, make sure that you have the following roles: <ul><li markdown=\"1\"><strong>Merchant admin<\/strong><\/li><li markdown=\"1\"><strong>View Payments<\/strong><\/li> <li markdown=\"1\"><strong>Merchant manage payments<\/strong><\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/pt\/development-resources\/webhooks\">Webhooks<\/a><\/strong><\/td>\n<td style=\"text-align: left;\">Subscribe to Standard webhooks.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Setup steps<\/strong><\/td>\n<td style=\"text-align: left;\">Before you begin: <ul><li markdown=\"1\">To get approval to make unreferenced refunds, you must reach out to our <a href=\"https:\/\/ca-test.adyen.com\/ca\/ca\/contactUs\/support.shtml?form=other\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Support Team<\/a> or your Adyen contact.<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Limitations<\/strong><\/td>\n<td style=\"text-align: left;\">You can only refund a payment after it has been captured. If a payment has not been captured, you can <a href=\"\/pt\/online-payments\/cancel\">cancel<\/a> it. If you do not know if a payment has been captured, you can instead <a href=\"\/pt\/online-payments\/reversal\">reverse<\/a> the payment.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Types of refunds<\/h2>\n<table>\n<thead>\n<tr>\n<th>Type<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Full refund<\/td>\n<td>You refund the full amount of the payment.<\/td>\n<\/tr>\n<tr>\n<td>Partial refund<\/td>\n<td>Supported for some payment methods. You refund a partial amount of the payment. If you make multiple partial refunds, the sum of the refund amounts cannot be more than the captured amount.<br> Check which <a href=\"\/pt\/payment-methods\/\">payment methods support partial refunds and multiple partial refunds<\/a>.<\/td>\n<\/tr>\n<tr>\n<td><a href=\"#unreferenced-refund\">Unreferenced refund<\/a><\/td>\n<td>When you make a refund without a reference (for example, the PSP reference or your order reference) for the payment.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"refund-a-payment\">Make a refund<\/h2>\n<p>To return funds to the shopper:<\/p>\n<ol>\n<li>\n<p>From the  information of the payment you want to refund, get the PSP reference.<\/p>\n<\/li>\n<li>\n<p>Make a  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\/(paymentPspReference)\/refunds\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments\/{paymentPspReference}\/refunds<\/a> request, including the following:<\/p>\n<p>In your request, include:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: center;\">Required<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>paymentPspReference<\/code><br> Path parameter<\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">The PSP reference of the payment. You can find this in the following: <ul><li markdown=\"1\">The webhook message with <code>eventCode<\/code>: <strong>AUTHORISATION<\/strong> for the payment.<\/li><li markdown=\"1\">In your <a href=\"https:\/\/ca-test.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Customer Area<\/a>, in the list of payments (<strong>Transactions<\/strong> &gt; <strong>Payments<\/strong>).<\/li><li markdown=\"1\">If you made a  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments<\/a> request for the payment, the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments<\/a> response.<\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>merchantAccount<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">The name of your merchant account that is used to process the payment.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>amount<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">The <a href=\"https:\/\/docs.adyen.com\/api-explorer\/#\/CheckoutService\/latest\/post\/payments\/{paymentPspReference}\/refunds__reqParam_amount\" class=\"codeLabel external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">amount<\/a> that you want to refund. <ul><li markdown=\"1\">The <code>value<\/code> must be the same or, in case of a partial refund, less than the captured <code>amount<\/code>.<\/li> <li markdown=\"1\">The <code>currency<\/code> must match the currency used in the authorization.<\/li><ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>reference<\/code><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">Your reference for the refund, for example to tag a partial refund for future reconciliation. The <code>reference<\/code> parameter is required for <a href=\"\/pt\/payment-methods\/grabpay\">GrabPay<\/a> refunds.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>merchantRefundReason<\/code><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">The reason for the refund request. Possible values: <ul><li markdown=\"1\"><strong>FRAUD<\/strong><\/li><li markdown=\"1\"><strong>CUSTOMER REQUEST<\/strong><\/li><li markdown=\"1\"><strong>RETURN<\/strong><\/li><li markdown=\"1\"><strong>DUPLICATE<\/strong><\/li><li markdown=\"1\"><strong>OTHER<\/strong><\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Example of a refund request for EUR 25'\" :id=\"'refunds-request'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;curl&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/checkout-test.adyen.com\\\/v72\\\/payments\\\/XB7XNCQ8HXSKGK82\\\/refunds \\\\\\n-H 'x-api-key: ADYEN_API_KEY' \\\\\\n-H 'Content-Type: application\\\/json' \\\\\\n-d '{\\n    \\&quot;merchantAccount\\&quot;: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n    \\&quot;amount\\&quot;: {\\n        \\&quot;value\\&quot;: 2500,\\n        \\&quot;currency\\&quot;: \\&quot;EUR\\&quot;\\n    },\\n    \\&quot;reference\\&quot;: \\&quot;YOUR_UNIQUE_REFERENCE\\&quot;\\n}'&quot;},{&quot;language&quot;:&quot;java&quot;,&quot;tabTitle&quot;:&quot;Java&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Java API Library v39.3.0\\nimport com.adyen.Client;\\nimport com.adyen.enums.Environment;\\nimport com.adyen.model.checkout.*;\\nimport java.time.OffsetDateTime;\\nimport java.util.*;\\nimport com.adyen.model.RequestOptions;\\nimport com.adyen.service.checkout.*;\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nClient client = new Client(\\&quot;ADYEN_API_KEY\\&quot;, Environment.TEST);\\n\\n\\\/\\\/ Create the request object(s)\\n\\\/\\\/ Send the request\\nModificationsApi service = new ModificationsApi(client);\\nPaymentRefundResponse response = service.refundCapturedPayment(\\&quot;paymentPspReference\\&quot;, paymentRefundRequest, new RequestOptions().idempotencyKey(\\&quot;UUID\\&quot;));&quot;},{&quot;language&quot;:&quot;php&quot;,&quot;tabTitle&quot;:&quot;PHP&quot;,&quot;content&quot;:&quot;&lt;?php\\n\\\/\\\/ Adyen PHP API Library v28.2.0\\nuse Adyen\\\\Client;\\nuse Adyen\\\\Environment;\\nuse Adyen\\\\Service\\\\Checkout\\\\ModificationsApi;\\n\\n$client = new Client();\\n$client-&gt;setXApiKey(\\&quot;ADYEN_API_KEY\\&quot;);\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\n$client-&gt;setEnvironment(Environment::TEST);\\n\\n\\n\\\/\\\/ Create the request object(s)\\n$requestOptions['idempotencyKey'] = 'UUID';\\n\\n\\\/\\\/ Send the request\\n$service = new ModificationsApi($client);\\n$response = $service-&gt;refundCapturedPayment('paymentPspReference', $paymentRefundRequest, $requestOptions);&quot;},{&quot;language&quot;:&quot;cs&quot;,&quot;tabTitle&quot;:&quot;C#&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen .net API Library v32.1.1\\nusing Adyen;\\nusing Environment = Adyen.Model.Environment;\\nusing Adyen.Model;\\nusing Adyen.Model.Checkout;\\nusing Adyen.Service.Checkout;\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nvar config = new Config()\\n{\\n    XApiKey = \\&quot;ADYEN_API_KEY\\&quot;,\\n    Environment = Environment.Test\\n};\\nvar client = new Client(config);\\n\\n\\\/\\\/ Create the request object(s)\\n\\\/\\\/ Send the request\\nvar service = new ModificationsService(client);\\nvar response = service.RefundCapturedPayment(\\&quot;paymentPspReference\\&quot;, paymentRefundRequest, requestOptions: new RequestOptions { IdempotencyKey = \\&quot;UUID\\&quot;});&quot;},{&quot;language&quot;:&quot;js&quot;,&quot;tabTitle&quot;:&quot;NodeJS (JavaScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v29.0.0\\nconst { Client, CheckoutAPI } = require('@adyen\\\/api-library');\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nconst config = new Config({\\n  apiKey: \\&quot;ADYEN_API_KEY\\&quot;,\\n  environment: EnvironmentEnum.TEST\\n});\\n\\nconst client = new Client(config);\\n\\n\\\/\\\/ Create the request object(s)\\nconst paymentRefundRequest = {\\n  merchantAccount: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n  amount: {\\n    value: 2500,\\n    currency: \\&quot;EUR\\&quot;\\n  },\\n  reference: \\&quot;YOUR_UNIQUE_REFERENCE\\&quot;\\n}\\n\\n\\\/\\\/ Send the request\\nconst checkoutAPI = new CheckoutAPI(client);\\nconst response = checkoutAPI.ModificationsApi.refundCapturedPayment(\\&quot;paymentPspReference\\&quot;, paymentRefundRequest, { idempotencyKey: \\&quot;UUID\\&quot; });&quot;},{&quot;language&quot;:&quot;go&quot;,&quot;tabTitle&quot;:&quot;Go&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Go API Library v21.0.0\\nimport (\\n  \\&quot;context\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v21\\\/src\\\/common\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v21\\\/src\\\/adyen\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v21\\\/src\\\/checkout\\&quot;\\n)\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nclient := adyen.NewClient(&amp;common.Config{\\n  ApiKey:      \\&quot;ADYEN_API_KEY\\&quot;,\\n  Environment: common.TestEnv,\\n})\\n\\n\\\/\\\/ Create the request object(s)\\n\\\/\\\/ Send the request\\nservice := client.Checkout()\\nreq := service.ModificationsApi.RefundCapturedPaymentInput(\\&quot;paymentPspReference\\&quot;).IdempotencyKey(\\&quot;UUID\\&quot;).PaymentRefundRequest(paymentRefundRequest)\\nres, httpRes, err := service.ModificationsApi.RefundCapturedPayment(context.Background(), req)&quot;},{&quot;language&quot;:&quot;py&quot;,&quot;tabTitle&quot;:&quot;Python&quot;,&quot;content&quot;:&quot;# Adyen Python API Library v13.6.0\\nimport Adyen\\n\\nadyen = Adyen.Adyen()\\nadyen.client.xapikey = \\&quot;ADYEN_API_KEY\\&quot;\\n# For the LIVE environment, also include your liveEndpointUrlPrefix.\\nadyen.client.platform = \\&quot;test\\&quot; # The environment to use library in.\\n\\n# Create the request object(s)\\njson_request = {\\n  \\&quot;merchantAccount\\&quot;: \\&quot;ADYEN_MERCHANT_ACCOUNT\\&quot;,\\n  \\&quot;amount\\&quot;: {\\n    \\&quot;value\\&quot;: 2500,\\n    \\&quot;currency\\&quot;: \\&quot;EUR\\&quot;\\n  },\\n  \\&quot;reference\\&quot;: \\&quot;YOUR_UNIQUE_REFERENCE\\&quot;\\n}\\n\\n# Send the request\\nresult = adyen.checkout.modifications_api.refund_captured_payment(request=json_request, paymentPspReference=\\&quot;paymentPspReference\\&quot;, idempotency_key=\\&quot;UUID\\&quot;)&quot;},{&quot;language&quot;:&quot;rb&quot;,&quot;tabTitle&quot;:&quot;Ruby&quot;,&quot;content&quot;:&quot;# Adyen Ruby API Library v10.4.0\\nrequire \\&quot;adyen-ruby-api-library\\&quot;\\n\\nadyen = Adyen::Client.new\\nadyen.api_key = 'ADYEN_API_KEY'\\n# For the LIVE environment, also include your liveEndpointUrlPrefix.\\nadyen.env = :test # Set to \\&quot;live\\&quot; for live environment\\n\\n# Create the request object(s)\\nrequest_body = {\\n  :merchantAccount =&gt; 'ADYEN_MERCHANT_ACCOUNT',\\n  :amount =&gt; {\\n    :value =&gt; 2500,\\n    :currency =&gt; 'EUR'\\n  },\\n  :reference =&gt; 'YOUR_UNIQUE_REFERENCE'\\n}\\n\\n# Send the request\\nresult = adyen.checkout.modifications_api.refund_captured_payment(request_body, 'paymentPspReference', headers: { 'Idempotency-Key' =&gt; 'UUID' })&quot;},{&quot;language&quot;:&quot;ts&quot;,&quot;tabTitle&quot;:&quot;NodeJS (TypeScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v29.0.0\\nimport { Client, CheckoutAPI, Types } from \\&quot;@adyen\\\/api-library\\&quot;;\\n\\n\\\/\\\/ For the LIVE environment, also include your liveEndpointUrlPrefix.\\nconst config = new Config({\\n  apiKey: \\&quot;ADYEN_API_KEY\\&quot;,\\n  environment: EnvironmentEnum.TEST\\n});\\n\\nconst client = new Client(config);\\n\\n\\\/\\\/ Create the request object(s)\\n\\\/\\\/ Send the request\\nconst checkoutAPI = new CheckoutAPI(client);\\nconst response = checkoutAPI.ModificationsApi.refundCapturedPayment(\\&quot;paymentPspReference\\&quot;, paymentRefundRequest, { idempotencyKey: \\&quot;UUID\\&quot; });&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>When you receive the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\/(paymentPspReference)\/refunds\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments\/{paymentPspReference}\/refunds<\/a> response, note:<\/p>\n<ul>\n<li><code>paymentPspReference<\/code>: the PSP reference of the authorization you want to refund.<\/li>\n<li><code>pspReference<\/code>: Adyen's unique reference associated with this refund request.<\/li>\n<\/ul>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Example response for a refund request'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n    \\\"merchantAccount\\\": \\\"ADYEN_MERCHANT_ACCOUNT\\\",\\n    \\\"paymentPspReference\\\": \\\"XB7XNCQ8HXSKGK82\\\",\\n    \\\"pspReference\\\" : \\\"JDD6LKT8MBLZNN84\\\",\\n    \\\"reference\\\": \\\"YOUR_UNIQUE_REFERENCE\\\",\\n    \\\"status\\\" : \\\"received\\\"\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<li>\n<p>Wait for the <a href=\"#refund-webhook\">REFUND webhook<\/a> to learn the outcome of the refund request.<\/p>\n<\/li>\n<\/ol>\n<h2 id=\"unreferenced-refund\">Make an unreferenced refund<\/h2>\n<div class=\"notices green\">\n<p>To get approval to make unreferenced refunds, reach out to our <a href=\"https:\/\/ca-test.adyen.com\/ca\/ca\/contactUs\/support.shtml?form=other\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Support Team<\/a> or your Adyen contact.<\/p>\n<\/div>\n<p>To refund the shopper without the reference for the payment, make a <code>\/refunds<\/code> request and include the following:<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Parameter<\/th>\n<th style=\"text-align: center;\">Required<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>paymentMethod<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">The object with payment method information.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>merchantAccount<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">The name of your merchant account.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>amount<\/code><\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td style=\"text-align: left;\">The amount that you want to refund.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>shopperReference<\/code><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">Your unique reference for the shopper.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>reference<\/code><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">Your reference for the refund, for example, to tag a partial refund for future reconciliation.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>shopperStatement<\/code><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">Text that appears on the shopper's bank statement.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>shopperIP<\/code><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">The shopper's IP address.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>shopperEmail<\/code><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">The shopper's email address.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>billingAddress<\/code><\/td>\n<td style=\"text-align: center;\"><\/td>\n<td style=\"text-align: left;\">The shopper's billing address.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>You can make unreferenced refunds for card payments and bank transfer (with IBAN) payments.<\/p>\n\n<div id=\"tabKHnXt\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Unreferenced refund for card payment&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;When you make an unreferenced refund for a card payment, include the card details in the &lt;code&gt;paymentMethod&lt;\\\/code&gt; object.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n    &lt;code-sample :title=\\&quot;&#039;Example unreferenced refund request for a payment with unencrypted card details&#039;\\&quot; :id=\\&quot;&#039;unreferenced-refund-request&#039;\\&quot; :code-data=\\&quot;[{&amp;quot;language&amp;quot;:&amp;quot;bash&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;curl https:\\\\\\\/\\\\\\\/checkout-test.adyen.com\\\\\\\/v71\\\\\\\/refunds \\\\\\\\\\\\n-H &#039;x-api-key: ADYEN_API_KEY&#039; \\\\\\\\\\\\n-H &#039;content-type: application\\\\\\\/json&#039; \\\\\\\\\\\\n-d &#039;{\\\\n   \\\\&amp;quot;amount\\\\&amp;quot;: {\\\\n      \\\\&amp;quot;value\\\\&amp;quot;: 1500,\\\\n      \\\\&amp;quot;currency\\\\&amp;quot;: \\\\&amp;quot;EUR\\\\&amp;quot;\\\\n   },\\\\n   \\\\&amp;quot;paymentMethod\\\\&amp;quot;: {\\\\n      \\\\&amp;quot;type\\\\&amp;quot; : \\\\&amp;quot;scheme\\\\&amp;quot;\\\\n      \\\\&amp;quot;number\\\\&amp;quot;: \\\\&amp;quot;4111111111111111\\\\&amp;quot;,\\\\n      \\\\&amp;quot;expiryMonth\\\\&amp;quot;: \\\\&amp;quot;03\\\\&amp;quot;,\\\\n      \\\\&amp;quot;expiryYear\\\\&amp;quot;: \\\\&amp;quot;2030\\\\&amp;quot;,\\\\n      \\\\&amp;quot;holderName\\\\&amp;quot;: \\\\&amp;quot;Simon Hopper\\\\&amp;quot;\\\\n   },\\\\n   \\\\&amp;quot;reference\\\\&amp;quot;: \\\\&amp;quot;YOUR_REFUND_REFERENCE\\\\&amp;quot;,\\\\n   \\\\&amp;quot;merchantAccount\\\\&amp;quot;: \\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;\\\\n}&#039;&amp;quot;}]\\&quot; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:&quot;unreferenced_refund_for_card_payment_0_1&quot;,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;Unreferenced refund for bank transfer payment&quot;,&quot;content&quot;:&quot;\\n&lt;dl&gt;\\n&lt;dt&gt;&lt;\\\/dd&gt;\\n&lt;\\\/dl&gt;\\n&lt;p&gt;When you make an unreferenced refund for a bank transfer payment with an IBAN, include the following:&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Parameter&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: center;\\&quot;&gt;Required&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Description&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;paymentMethod.type&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;bankTransfer_IBAN&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;paymentMethod.iban&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;The IBAN.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;code&gt;paymentMethod.ownerName&lt;\\\/code&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: center;\\&quot;&gt;&lt;img title=\\&quot;-white_check_mark-\\&quot; alt=\\&quot;-white_check_mark-\\&quot; class=\\&quot;smileys\\&quot; src=\\&quot;\\\/user\\\/data\\\/smileys\\\/emoji\\\/white_check_mark.png\\&quot; \\\/&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;The name of the bank account owner.&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n    &lt;code-sample :title=\\&quot;&#039;Example unreferenced refund request for a payment with the IBAN&#039;\\&quot; :id=\\&quot;&#039;unreferenced-refund-request-iban&#039;\\&quot; :code-data=\\&quot;[{&amp;quot;language&amp;quot;:&amp;quot;bash&amp;quot;,&amp;quot;tabTitle&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;content&amp;quot;:&amp;quot;curl https:\\\\\\\/\\\\\\\/checkout-test.adyen.com\\\\\\\/v71\\\\\\\/refunds \\\\\\\\\\\\n-H &#039;x-api-key: ADYEN_API_KEY&#039; \\\\\\\\\\\\n-H &#039;content-type: application\\\\\\\/json&#039; \\\\\\\\\\\\n-d &#039;{\\\\n  \\\\&amp;quot;amount\\\\&amp;quot;: {\\\\n    \\\\&amp;quot;value\\\\&amp;quot;: 1500,\\\\n    \\\\&amp;quot;currency\\\\&amp;quot;: \\\\&amp;quot;EUR\\\\&amp;quot;\\\\n  },\\\\n  \\\\&amp;quot;paymentMethod\\\\&amp;quot;: {\\\\n    \\\\&amp;quot;type\\\\&amp;quot;: \\\\&amp;quot;bankTransfer_IBAN\\\\&amp;quot;,\\\\n    \\\\&amp;quot;iban\\\\&amp;quot;: \\\\&amp;quot;NL00BANK0123456789\\\\&amp;quot;,\\\\n    \\\\&amp;quot;ownerName\\\\&amp;quot;: \\\\&amp;quot;S. Hopper\\\\&amp;quot;\\\\n  },\\\\n  \\\\&amp;quot;reference\\\\&amp;quot;: \\\\&amp;quot;YOUR_MODIFICATION_REFERENCE\\\\&amp;quot;,\\\\n  \\\\&amp;quot;merchantAccount\\\\&amp;quot;: \\\\&amp;quot;ADYEN_MERCHANT_ACCOUNT\\\\&amp;quot;\\\\n}&#039;&amp;quot;}]\\&quot; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:&quot;unreferenced_refund_for_bank_transfer_payment_1_2&quot;,&quot;relation&quot;:&quot;&quot;}]\"\n            :should-update-when-url-changes='false'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<h2>Test failed refunds<\/h2>\n<p>In our test environment, you can check how your integration handles failed refunds:<\/p>\n<ol>\n<li>\n<p>Make a test <a href=\"\/pt\/payment-methods\/cards\">card payment<\/a>, specifying:<\/p>\n<ul>\n<li><code>holderName<\/code>: <strong>refund failed<\/strong><\/li>\n<\/ul>\n<pre><code class=\"language-json\">{\n \"amount\": {\n   \"currency\": \"EUR\",\n   \"value\": 500\n },\n \"reference\": \"Refund failed test\",\n \"paymentMethod\": {\n   \"type\": \"scheme\",\n   \"encryptedCardNumber\": \"test_4111111111111111\",\n   \"encryptedExpiryMonth\": \"test_03\",\n   \"encryptedExpiryYear\": \"test_2030\",\n   \"encryptedSecurityCode\": \"test_737\",\n   \"holderName\": \"refund failed\"\n },\n \"returnUrl\": \"https:\/\/your-company.example.com\/...\",\n \"merchantAccount\": \"YOUR_MERCHANT_ACCOUNT\"\n}<\/code><\/pre>\n<\/li>\n<li>\n<p>Refund this payment, either <a href=\"\/pt\/account\/manage-payments#refund-a-payment\">in your Customer Area<\/a>, or by <a href=\"#refund-a-payment\">making an API request<\/a>.<br \/>\nIt can take several hours to process your refund request.<\/p>\n<\/li>\n<li>\n<p>Check that you receive a webhook with <code>eventCode<\/code>: <strong>REFUND_FAILED<\/strong> for your test payment.<\/p>\n<\/li>\n<\/ol>\n<h2>Webhooks for refunds<\/h2>\n<p>The refund process is asynchronous. To keep you informed, we send webhook event messages.<\/p>\n<h3 id=\"refund-webhook\">REFUND webhook<\/h3>\n<p>Before we send a refund request to be processed, we perform various validations. If these validations succeed, usually the refund itself also succeeds. You receive the outcome of the validations asynchronously, in a <a href=\"\/pt\/development-resources\/webhooks\">webhook<\/a> that includes:<\/p>\n<ul>\n<li><code>eventCode<\/code>: <strong>REFUND<\/strong>.<\/li>\n<li><code>pspReference<\/code>: the <code>pspReference<\/code> from the response for your refund request.<\/li>\n<li>\n<p><code>success<\/code>: indicates the outcome of the refund validations. Possible values:<\/p>\n<ul>\n<li>\n<p><strong>true<\/strong>: Adyen's validations were successful and we sent the refund request to the card scheme. This usually means that the refund will be processed successfully. However, in rare cases the refund can be rejected by the card scheme, or reversed. For information about these exceptions, see <a href=\"\/pt\/online-payments\/refund#refund-failed\"><strong>REFUND_FAILED<\/strong> webhook<\/a>, and <a href=\"\/pt\/online-payments\/refund#refunded-reversed\"><strong>REFUNDED_REVERSED<\/strong> webhook<\/a>.<\/p>\n<\/li>\n<li>\n<p><strong>false<\/strong>: the refund validations failed. The webhook includes a <code>reason<\/code> field with a short description of the problem. <a href=\"#failed-refund-request\">Review the reason<\/a>, fix the issue if possible, and resubmit the refund request.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n<div id=\"tabr9Pom\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;success: true&quot;,&quot;content&quot;:&quot;\\n&lt;pre&gt;&lt;code class=\\&quot;language-json\\&quot;&gt;{\\n   \\&quot;live\\&quot;:\\&quot;false\\&quot;,\\n   \\&quot;notificationItems\\&quot;:[\\n      {\\n         \\&quot;NotificationRequestItem\\&quot;:{\\n            \\&quot;amount\\&quot;:{\\n               \\&quot;currency\\&quot;:\\&quot;EUR\\&quot;,\\n               \\&quot;value\\&quot;:2500\\n            },\\n            \\&quot;eventCode\\&quot;:\\&quot;REFUND\\&quot;,\\n            \\&quot;eventDate\\&quot;:\\&quot;2021-11-01T00:19:34+01:00\\&quot;,\\n            \\&quot;merchantAccountCode\\&quot;:\\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;,\\n            \\&quot;merchantReference\\&quot;: \\&quot;YOUR_UNIQUE_REFERENCE\\&quot;,\\n            \\&quot;originalReference\\&quot;:\\&quot;XB7XNCQ8HXSKGK82\\&quot;,\\n            \\&quot;paymentMethod\\&quot;:\\&quot;visa\\&quot;,\\n            \\&quot;pspReference\\&quot;:\\&quot;JDD6LKT8MBLZNN84\\&quot;,\\n            \\&quot;reason\\&quot;:\\&quot;\\&quot;,\\n            \\&quot;success\\&quot;:\\&quot;true\\&quot;\\n         }\\n      }\\n   ]\\n}&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:&quot;success:_true_0_1&quot;,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;success: false&quot;,&quot;content&quot;:&quot;\\n&lt;pre&gt;&lt;code class=\\&quot;language-json\\&quot;&gt;{\\n   \\&quot;live\\&quot;:\\&quot;false\\&quot;,\\n   \\&quot;notificationItems\\&quot;:[\\n      {\\n         \\&quot;NotificationRequestItem\\&quot;:{\\n            \\&quot;amount\\&quot;:{\\n               \\&quot;currency\\&quot;:\\&quot;EUR\\&quot;,\\n               \\&quot;value\\&quot;:2500\\n            },\\n            \\&quot;eventCode\\&quot;:\\&quot;REFUND\\&quot;,\\n            \\&quot;eventDate\\&quot;:\\&quot;2021-11-01T00:19:34+01:00\\&quot;,\\n            \\&quot;merchantAccountCode\\&quot;:\\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;,\\n            \\&quot;merchantReference\\&quot;: \\&quot;YOUR_UNIQUE_REFERENCE\\&quot;,\\n            \\&quot;originalReference\\&quot;:\\&quot;XB7XNCQ8HXSKGK82\\&quot;,\\n            \\&quot;paymentMethod\\&quot;:\\&quot;visa\\&quot;,\\n            \\&quot;pspReference\\&quot;:\\&quot;JDD6LKT8MBLZNN84\\&quot;,\\n            \\&quot;reason\\&quot;:\\&quot;Transaction hasn&#039;t been captured, refund not possible\\&quot;,\\n            \\&quot;success\\&quot;:\\&quot;false\\&quot;\\n         }\\n      }\\n   ]\\n}&lt;\\\/code&gt;&lt;\\\/pre&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:&quot;success:_false_1_2&quot;,&quot;relation&quot;:&quot;&quot;}]\"\n            :should-update-when-url-changes='false'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<p>For more information about the included fields, see the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Webhooks\/latest\/post\/REFUND\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">REFUND<\/a> webhook reference.<\/p>\n<h4 id=\"failed-refund-request\">Reasons for failed refund validation<\/h4>\n<p>When our validations of a refund fail, you receive a webhook for the refund with <code>success<\/code>: <strong>false<\/strong> and the reason of the failure. The next table shows the most common reasons.<br \/>\n<a id=\"payment-balance\"><\/a><br \/>\nWhere the table mentions the <em>balance on the payment<\/em>, this refers to the amount that remains from the original payment. For example, if a transaction has a total of EUR&nbsp;10 and no refund or chargeback is processed, then the balance on the payment is EUR&nbsp;10. After a refund or chargeback of EUR&nbsp;3 is processed, the remaining balance on the payment is EUR&nbsp;7.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\"><code>reason<\/code><\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><code>Requested refund amount too high<\/code><\/td>\n<td style=\"text-align: left;\">No chargeback or refund has been processed, and the requested refund amount is more than the balance on the payment.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>Already partially refunded, new requested refund amount too high<\/code><\/td>\n<td style=\"text-align: left;\">Partial refund(s) has(\/have) been processed, and the requested refund amount is more than the balance on the payment.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>Already partially disputed, new requested refund amount too high<\/code><\/td>\n<td style=\"text-align: left;\">Partial chargeback(s) has(\/have) been processed, and the requested refund amount is more than the balance on the payment.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>Already fully refunded, no balance available for new requested refund<\/code><\/td>\n<td style=\"text-align: left;\">Full refund has been processed, and the remaining balance on the payment is 0.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>Partially refunded and partially disputed, no balance available for new requested refund<\/code><\/td>\n<td style=\"text-align: left;\">Partial refund(s) and chargeback(s) have been processed, and the requested refund amount is more than the balance on the payment. <br> Partial refund(s) and chargeback(s) have been processed, and the balance on the payment is a negative amount.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>Already fully disputed, no balance available for new requested refund<\/code><\/td>\n<td style=\"text-align: left;\">Full chargeback has been processed, and the balance on the payment is 0. <br> A full chargeback and partial refund(s) have been processed, and the balance on the payment is a negative amount.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>Insufficient in-process funds on account<\/code><\/td>\n<td style=\"text-align: left;\">There is not enough <a href=\"\/pt\/account\/balances\">balance<\/a> on your merchant account to process the refund.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>Transaction hasn't been captured, refund not possible<\/code><\/td>\n<td style=\"text-align: left;\">The refund was requested before the transaction was captured. You need to <a href=\"\/pt\/online-payments\/cancel\">cancel<\/a> the transaction instead or wait until the transaction is settled.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>The maximum period for this operation has expired<\/code><\/td>\n<td style=\"text-align: left;\">The refund was requested past the expiration date permitted by the payment method to process the request.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>Amount too low to be accepted by Card Network<\/code><\/td>\n<td style=\"text-align: left;\">The refund amount was too low. The amount must be greater than 0.01 in any currency.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><code>Modification in different currency than authorisation<\/code><\/td>\n<td style=\"text-align: left;\">The refund was requested in a currency different from the currency in which the authorization was made.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 id=\"refunded-reversed\">REFUNDED_REVERSED webhook<\/h3>\nFor some payment methods, for example bank transfers, iDEAL, or Bancontact,  the status of the payment can change from **Refunded** to **RefundedReversed**. This means that the funds have been returned to Adyen, and are back in your account. This can happen, for example, if the shopper's bank account is no longer valid. Before you retry the refund, contact the shopper about the status of their bank account.\n<p><\/p>\n<p>When a refund is reversed, we inform you of this with a <a href=\"\/pt\/development-resources\/webhooks\">webhook<\/a> containing:<\/p>\n<ul>\n<li><code>eventCode<\/code>: <strong>REFUNDED_REVERSED<\/strong><\/li>\n<li><code>success<\/code>: <strong>true<\/strong><\/li>\n<\/ul>\n<p>For more information about the included fields, see the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Webhooks\/latest\/post\/REFUNDED_REVERSED\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">REFUNDED_REVERSED<\/a> webhook reference.<\/p>\n<p>An overview of reversed refunds is available in your <a href=\"\/pt\/reporting\/invoice-reconciliation\/payment-accounting-report\">Payment accounting report<\/a>.<\/p>\n<h3 id=\"refund-failed\">REFUND_FAILED webhook<\/h3>\n<p>Although rare, a refund can fail after you received a <strong>REFUND<\/strong> webhook with <code>success<\/code>: <strong>true<\/strong>. A successful <strong>REFUND<\/strong> webhook means that our validations were successful and we sent the refund request to the card scheme. However, the card scheme can still reject the refund. This can happen even a few days after you submitted the refund request. This also applies to installment-based transactions. If a refund fails for an installment payment, you receive the same <strong>REFUND_FAILED<\/strong> webhook.<\/p>\n<p><\/p>\n<p>Most of the time Adyen can fix the issue, so that the shopper will eventually receive the funds. Sometimes, however, you need to take action yourself. To learn why a refund can fail and what, if anything, you need to do in each case, refer to <a href=\"\/pt\/online-payments\/capture\/failure-reasons\">Failed refunds<\/a>.<\/p>\n<p><\/p>\n<p>When a refund fails after you received <code>success<\/code>: <strong>true<\/strong> in the <strong>REFUND<\/strong> webhook, we inform you of this with another <a href=\"\/pt\/development-resources\/webhooks\">webhook<\/a> containing:<\/p>\n<ul>\n<li><code>eventCode<\/code>: <strong>REFUND_FAILED<\/strong><\/li>\n<li><code>pspReference<\/code>: the <code>pspReference<\/code> of the refund request.<\/li>\n<\/ul>\n<p>For more information about the included fields, see the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Webhooks\/latest\/post\/REFUND_FAILED\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">REFUND_FAILED<\/a> webhook reference.<\/p>\n<p>An overview of failed refunds is available in your <a href=\"\/pt\/reporting\/invoice-reconciliation\/payment-accounting-report\">Payment accounting report<\/a>.<\/p>\n<h2 id=\"refund-authorization\">Refund authorization<\/h2>\n<p>Refund authorization means that before processing a refund, Adyen checks with the issuer if the shopper's card or account is valid. This happens automatically; you do not have to ask for this in your refund request.<\/p>\n<p>Adyen supports this for:<\/p>\n<ul>\n<li>American Express<\/li>\n<li>Discover<\/li>\n<li>Mastercard<\/li>\n<li>Visa<\/li>\n<\/ul>\n<p>As soon as the issuer authorizes the refund, the refund is visible on the shopper's account. This improves customer satisfaction and reduces the number of questions from shoppers about their refund. Also, there are less refund-related chargebacks because issuers usually return the funds to the shopper sooner.<\/p>\n<p>Issuers can decline a refund authorization for reasons like:<\/p>\n<ul>\n<li>Lost or expired card<\/li>\n<li>Invalid card number<\/li>\n<li>Closed account<\/li>\n<li>Suspected fraud<\/li>\n<\/ul>\n<p>When a refund authorization is declined, we still try to process the refund.<\/p>\n<h3>Pilot to prepare for 2026 changes<\/h3>\n<p>Adyen is currently running a pilot where declined refund authorizations are handled differently:<\/p>\n<ul>\n<li>We do not proceed with the refund. In your Customer Area, the transaction status remains <strong>Settled<\/strong>.<\/li>\n<li>\n<p>We inform you of the reason for the declined refund authorization in the <strong>REFUND<\/strong>, <strong>CANCEL_OR_REFUND<\/strong>, and <strong>REFUND_WITH_DATA<\/strong> webhooks. The <code>reason<\/code> parameter in the webhook will a have a value of <em>Authorisation for refund failed with response code<\/em> followed by the <a href=\"\/pt\/development-resources\/raw-acquirer-responses\/\">raw response<\/a> we received.<\/p>\n<div data-component-wrapper=\"code-sample\">\n<code-sample :title=\"'Reason for failed refund authorization in REFUND webhook'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n  ...\\n    {\\n      \\\"NotificationRequestItem\\\": {\\n        ...\\n        \\\"eventCode\\\": \\\"REFUND\\\",\\n        \\\"reason\\\": \\\"Authorisation for refund failed with response code 46 : Closed account\\\",\\n        \\\"success\\\": \\\"false\\\"\\n      }\\n    }\\n  ]\\n}\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<\/li>\n<\/ul>\n<p>This improved transparency about the status of a refund enables you to take action sooner, so you can return the funds to the shopper in some other way.<\/p>\n<p>The behavior described above will become the default in 2026. If you want to prepare for that and participate in this pilot, reach out to your Adyen contact or to our <a href=\"https:\/\/ca-test.adyen.com\/ca\/ca\/contactUs\/support.shtml?form=other\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Support Team<\/a>. Note that some card networks charge a refund authorization fee.<\/p>\n<h2 id=\"see-also\">See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"https:\/\/help.adyen.com\/knowledge\/payments\/refunds\/\"\n                        target=\"_blank\"\n                         class=\"external\">\n                    FAQs: Refunds\n                <\/a><\/li><li><a href=\"https:\/\/docs.adyen.com\/api-explorer\/#\/Webhooks\/latest\/overview\"\n                        target=\"_blank\"\n                         class=\"external\">\n                    Online payments webhook reference\n                <\/a><\/li><li><a href=\"\/online-payments\/cancel\"\n                        target=\"_self\"\n                        >\n                    Cancel\n                <\/a><\/li><li><a href=\"\/online-payments\/reversal\"\n                        target=\"_self\"\n                        >\n                    Reversal\n                <\/a><\/li><li><a href=\"\/account\/payments-lifecycle\"\n                        target=\"_self\"\n                        >\n                    Payments lifecycle\n                <\/a><\/li><li><a href=\"\/payment-methods\"\n                        target=\"_self\"\n                        >\n                    Payment methods\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/pt\/online-payments\/refund","articleFields":{"description":"Refund a payment back to the shopper.","feedback_component":true,"id":"31493917","type":"page","_expandable":{"operations":""},"status":"current","last_edit_on":"03-04-2023 17:47","filters_component":false},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/online-payments\/refund","title":"Refund","content":"\nRefund in Customer Area You can also refund payments in your Customer Area. For more information, refer to Manage payments.\n\nTo return funds to your shopper, you can refund the shopper's payment after it has been captured. For example: if a shopper returns an item they purchased, you refund their payment.\nWhen you make a refund request, Adyen attempts to authorize the refund and transfers the funds to the shopper's account. It can take up to 40 business days before the funds are returned to the shopper's account, depending on the payment method.\nRequirements\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nAn online payments integration.\n\n\nWebhooks\nSubscribe to Standard webhooks and listen for webhook messages with the following eventCode values: \n  REFUND\n\n  REFUND_FAILED\n\n  REFUNDED_REVERSED\n\n\n\nCustomer Area roles\nTo edit capture settings, make sure that you have the following roles: Merchant adminView Payments Merchant manage payments\n\n\nWebhooks\nSubscribe to Standard webhooks.\n\n\nSetup steps\nBefore you begin: To get approval to make unreferenced refunds, you must reach out to our Support Team or your Adyen contact.\n\n\nLimitations\nYou can only refund a payment after it has been captured. If a payment has not been captured, you can cancel it. If you do not know if a payment has been captured, you can instead reverse the payment.\n\n\n\nTypes of refunds\n\n\n\nType\nDescription\n\n\n\n\nFull refund\nYou refund the full amount of the payment.\n\n\nPartial refund\nSupported for some payment methods. You refund a partial amount of the payment. If you make multiple partial refunds, the sum of the refund amounts cannot be more than the captured amount. Check which payment methods support partial refunds and multiple partial refunds.\n\n\nUnreferenced refund\nWhen you make a refund without a reference (for example, the PSP reference or your order reference) for the payment.\n\n\n\nMake a refund\nTo return funds to the shopper:\n\n\nFrom the  information of the payment you want to refund, get the PSP reference.\n\n\nMake a  \/payments\/{paymentPspReference}\/refunds request, including the following:\nIn your request, include:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\npaymentPspReference Path parameter\n\nThe PSP reference of the payment. You can find this in the following: The webhook message with eventCode: AUTHORISATION for the payment.In your Customer Area, in the list of payments (Transactions &gt; Payments).If you made a  \/payments request for the payment, the  \/payments response.\n\n\nmerchantAccount\n\nThe name of your merchant account that is used to process the payment.\n\n\namount\n\nThe amount that you want to refund. The value must be the same or, in case of a partial refund, less than the captured amount. The currency must match the currency used in the authorization.\n\n\nreference\n\nYour reference for the refund, for example to tag a partial refund for future reconciliation. The reference parameter is required for GrabPay refunds.\n\n\nmerchantRefundReason\n\nThe reason for the refund request. Possible values: FRAUDCUSTOMER REQUESTRETURNDUPLICATEOTHER\n\n\n\n\n\n\n\n\nWhen you receive the  \/payments\/{paymentPspReference}\/refunds response, note:\n\npaymentPspReference: the PSP reference of the authorization you want to refund.\npspReference: Adyen's unique reference associated with this refund request.\n\n\n\n\n\n\nWait for the REFUND webhook to learn the outcome of the refund request.\n\n\nMake an unreferenced refund\n\nTo get approval to make unreferenced refunds, reach out to our Support Team or your Adyen contact.\n\nTo refund the shopper without the reference for the payment, make a \/refunds request and include the following:\n\n\n\nParameter\nRequired\nDescription\n\n\n\n\npaymentMethod\n\nThe object with payment method information.\n\n\nmerchantAccount\n\nThe name of your merchant account.\n\n\namount\n\nThe amount that you want to refund.\n\n\nshopperReference\n\nYour unique reference for the shopper.\n\n\nreference\n\nYour reference for the refund, for example, to tag a partial refund for future reconciliation.\n\n\nshopperStatement\n\nText that appears on the shopper's bank statement.\n\n\nshopperIP\n\nThe shopper's IP address.\n\n\nshopperEmail\n\nThe shopper's email address.\n\n\nbillingAddress\n\nThe shopper's billing address.\n\n\n\nYou can make unreferenced refunds for card payments and bank transfer (with IBAN) payments.\n\n\n    \n        \n        \n    \n\n\nTest failed refunds\nIn our test environment, you can check how your integration handles failed refunds:\n\n\nMake a test card payment, specifying:\n\nholderName: refund failed\n\n{\n \"amount\": {\n   \"currency\": \"EUR\",\n   \"value\": 500\n },\n \"reference\": \"Refund failed test\",\n \"paymentMethod\": {\n   \"type\": \"scheme\",\n   \"encryptedCardNumber\": \"test_4111111111111111\",\n   \"encryptedExpiryMonth\": \"test_03\",\n   \"encryptedExpiryYear\": \"test_2030\",\n   \"encryptedSecurityCode\": \"test_737\",\n   \"holderName\": \"refund failed\"\n },\n \"returnUrl\": \"https:\/\/your-company.example.com\/...\",\n \"merchantAccount\": \"YOUR_MERCHANT_ACCOUNT\"\n}\n\n\nRefund this payment, either in your Customer Area, or by making an API request.\nIt can take several hours to process your refund request.\n\n\nCheck that you receive a webhook with eventCode: REFUND_FAILED for your test payment.\n\n\nWebhooks for refunds\nThe refund process is asynchronous. To keep you informed, we send webhook event messages.\nREFUND webhook\nBefore we send a refund request to be processed, we perform various validations. If these validations succeed, usually the refund itself also succeeds. You receive the outcome of the validations asynchronously, in a webhook that includes:\n\neventCode: REFUND.\npspReference: the pspReference from the response for your refund request.\n\nsuccess: indicates the outcome of the refund validations. Possible values:\n\n\ntrue: Adyen's validations were successful and we sent the refund request to the card scheme. This usually means that the refund will be processed successfully. However, in rare cases the refund can be rejected by the card scheme, or reversed. For information about these exceptions, see REFUND_FAILED webhook, and REFUNDED_REVERSED webhook.\n\n\nfalse: the refund validations failed. The webhook includes a reason field with a short description of the problem. Review the reason, fix the issue if possible, and resubmit the refund request.\n\n\n\n\n\n\n    \n        \n        \n    \n\n\nFor more information about the included fields, see the  REFUND webhook reference.\nReasons for failed refund validation\nWhen our validations of a refund fail, you receive a webhook for the refund with success: false and the reason of the failure. The next table shows the most common reasons.\n\nWhere the table mentions the balance on the payment, this refers to the amount that remains from the original payment. For example, if a transaction has a total of EUR&nbsp;10 and no refund or chargeback is processed, then the balance on the payment is EUR&nbsp;10. After a refund or chargeback of EUR&nbsp;3 is processed, the remaining balance on the payment is EUR&nbsp;7.\n\n\n\nreason\nDescription\n\n\n\n\nRequested refund amount too high\nNo chargeback or refund has been processed, and the requested refund amount is more than the balance on the payment.\n\n\nAlready partially refunded, new requested refund amount too high\nPartial refund(s) has(\/have) been processed, and the requested refund amount is more than the balance on the payment.\n\n\nAlready partially disputed, new requested refund amount too high\nPartial chargeback(s) has(\/have) been processed, and the requested refund amount is more than the balance on the payment.\n\n\nAlready fully refunded, no balance available for new requested refund\nFull refund has been processed, and the remaining balance on the payment is 0.\n\n\nPartially refunded and partially disputed, no balance available for new requested refund\nPartial refund(s) and chargeback(s) have been processed, and the requested refund amount is more than the balance on the payment.  Partial refund(s) and chargeback(s) have been processed, and the balance on the payment is a negative amount.\n\n\nAlready fully disputed, no balance available for new requested refund\nFull chargeback has been processed, and the balance on the payment is 0.  A full chargeback and partial refund(s) have been processed, and the balance on the payment is a negative amount.\n\n\nInsufficient in-process funds on account\nThere is not enough balance on your merchant account to process the refund.\n\n\nTransaction hasn't been captured, refund not possible\nThe refund was requested before the transaction was captured. You need to cancel the transaction instead or wait until the transaction is settled.\n\n\nThe maximum period for this operation has expired\nThe refund was requested past the expiration date permitted by the payment method to process the request.\n\n\nAmount too low to be accepted by Card Network\nThe refund amount was too low. The amount must be greater than 0.01 in any currency.\n\n\nModification in different currency than authorisation\nThe refund was requested in a currency different from the currency in which the authorization was made.\n\n\n\nREFUNDED_REVERSED webhook\nFor some payment methods, for example bank transfers, iDEAL, or Bancontact,  the status of the payment can change from **Refunded** to **RefundedReversed**. This means that the funds have been returned to Adyen, and are back in your account. This can happen, for example, if the shopper's bank account is no longer valid. Before you retry the refund, contact the shopper about the status of their bank account.\n\nWhen a refund is reversed, we inform you of this with a webhook containing:\n\neventCode: REFUNDED_REVERSED\nsuccess: true\n\nFor more information about the included fields, see the  REFUNDED_REVERSED webhook reference.\nAn overview of reversed refunds is available in your Payment accounting report.\nREFUND_FAILED webhook\nAlthough rare, a refund can fail after you received a REFUND webhook with success: true. A successful REFUND webhook means that our validations were successful and we sent the refund request to the card scheme. However, the card scheme can still reject the refund. This can happen even a few days after you submitted the refund request. This also applies to installment-based transactions. If a refund fails for an installment payment, you receive the same REFUND_FAILED webhook.\n\nMost of the time Adyen can fix the issue, so that the shopper will eventually receive the funds. Sometimes, however, you need to take action yourself. To learn why a refund can fail and what, if anything, you need to do in each case, refer to Failed refunds.\n\nWhen a refund fails after you received success: true in the REFUND webhook, we inform you of this with another webhook containing:\n\neventCode: REFUND_FAILED\npspReference: the pspReference of the refund request.\n\nFor more information about the included fields, see the  REFUND_FAILED webhook reference.\nAn overview of failed refunds is available in your Payment accounting report.\nRefund authorization\nRefund authorization means that before processing a refund, Adyen checks with the issuer if the shopper's card or account is valid. This happens automatically; you do not have to ask for this in your refund request.\nAdyen supports this for:\n\nAmerican Express\nDiscover\nMastercard\nVisa\n\nAs soon as the issuer authorizes the refund, the refund is visible on the shopper's account. This improves customer satisfaction and reduces the number of questions from shoppers about their refund. Also, there are less refund-related chargebacks because issuers usually return the funds to the shopper sooner.\nIssuers can decline a refund authorization for reasons like:\n\nLost or expired card\nInvalid card number\nClosed account\nSuspected fraud\n\nWhen a refund authorization is declined, we still try to process the refund.\nPilot to prepare for 2026 changes\nAdyen is currently running a pilot where declined refund authorizations are handled differently:\n\nWe do not proceed with the refund. In your Customer Area, the transaction status remains Settled.\n\nWe inform you of the reason for the declined refund authorization in the REFUND, CANCEL_OR_REFUND, and REFUND_WITH_DATA webhooks. The reason parameter in the webhook will a have a value of Authorisation for refund failed with response code followed by the raw response we received.\n\n\n\n\n\nThis improved transparency about the status of a refund enables you to take action sooner, so you can return the funds to the shopper in some other way.\nThe behavior described above will become the default in 2026. If you want to prepare for that and participate in this pilot, reach out to your Adyen contact or to our Support Team. Note that some card networks charge a refund authorization fee.\nSee also\n\n\n                    FAQs: Refunds\n                \n                    Online payments webhook reference\n                \n                    Cancel\n                \n                    Reversal\n                \n                    Payments lifecycle\n                \n                    Payment methods\n                \n","type":"page","locale":"pt","boost":18,"hierarchy":{"lvl0":"Home","lvl1":"Online payments","lvl2":"Refund"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/pt","lvl1":"https:\/\/docs.adyen.com\/pt\/online-payments","lvl2":"\/pt\/online-payments\/refund"},"levels":3,"category":"Online Payments","category_color":"green","tags":["Refund"]}}
