{"title":"Test a chargeback scenario","category":"default","creationDate":1779620072,"content":"<div class=\"additional-info-block output-inline\">\n<h5 class=\"article__heading additional-info-block__title\">Testing specific payment methods<\/h5><div class=\"additional-info-block__body\"><p>See the dedicated instructions to test chargeback scenarios for <a href=\"\/risk-management\/chargeback-guidelines\/ach-chargebacks#test-a-chargeback-scenario\">ACH Direct Debit<\/a>.<\/p><\/div><\/div>\n\n<p>To test the dispute flow, you can simulate different chargeback scenarios.<\/p>\n<p>You can then follow a simulated dispute through the process, and test how to defend or accept disputes using the Disputes API or the Customer Area.<\/p>\n<h2>Requirements<\/h2>\n<p>Before you begin, take into account the following requirements and limitations.<\/p>\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;\">Make sure that you have built an <a href=\"\/online-payments\/build-your-integration\/\">online payments integration<\/a>.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/development-resources\/api-credentials\/\">API credentials<\/a><\/strong><\/td>\n<td style=\"text-align: left;\">To manage disputes using the Disputes API, make sure that you have an API credential with an API key and the <strong>API dispute management<\/strong> role.<\/td>\n<\/tr>\n<tr>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/account\/user-roles\/#risk\">Customer Area roles<\/a><\/strong><\/td>\n<td style=\"text-align: left;\">To manage disputes using the Customer Area, make sure that you have one of the following role(s): <ul><li><strong>Merchant dispute management<\/strong><\/li><li><strong>Risk admin<\/strong><\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/development-resources\/webhooks\">Webhooks<\/a><\/strong><\/td>\n<td style=\"text-align: left;\">Subscribe to the <strong>Standard webhook<\/strong> and <a href=\"\/risk-management\/disputes-api\/dispute-notifications#dispute-webhooks-enable\">enable<\/a> dispute events.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Limitations<\/strong><\/td>\n<td style=\"text-align: left;\">Not all dispute types can be simulated.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>Setup steps<\/strong><\/td>\n<td style=\"text-align: left;\">Decide if you want to test managing disputes with the <a href=\"\/risk-management\/disputes-api\/\">Disputes API<\/a> or with the <a href=\"\/risk-management\/manage-disputes\/\">Customer Area<\/a>. For either flow, we recommend that you: <ul><li><a href=\"\/risk-management\/configure-risk-settings\/\">Enable risk<\/a> and set up <a href=\"\/risk-management\/\">risk management<\/a>.<\/li><li>If you are using RevenueProtect, our classic risk engine, temporarily disable or lower the risk score for the <a href=\"\/risk-management\/configure-manual-risk\/standard-risk-rules#consistency-rules\">Card\/bank account holder name contains a non-alphabetic character<\/a> risk check.<\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>How it works<\/h2>\n<p>The overall chargeback simulation and testing process is as follows:<\/p>\n<ol>\n<li>Choose one of the <a href=\"#dispute-test-scenarios\">test scenarios<\/a>.<\/li>\n<li><a href=\"#dispute-test-payment\">Make a test payment<\/a> with a <code>holderName<\/code> value that triggers the scenario that you want to simulate.<\/li>\n<li><a href=\"#dispute-test-capture\">Capture<\/a> the test payment.<\/li>\n<li>Listen for the <a href=\"#dispute-test-webhook\">webhook<\/a> that indicates the simulated chargeback is created.<\/li>\n<li>Use the information from your test environment to test <a href=\"#dispute-test-handling\">handling the chargeback<\/a> using the Disputes API or your test Customer Area.<\/li>\n<\/ol>\n<h2 id=\"dispute-test-scenarios\">Test scenarios<\/h2>\n<p>You can test the following chargeback scenarios:<\/p>\n<ul>\n<li>A chargeback with a specific <a href=\"\/risk-management\/understanding-disputes\/dispute-reason-codes?tab=chargeback_1\">chargeback reason code<\/a>.<\/li>\n<li>A chargeback without an explicit reason code.<\/li>\n<li>A chargeback that is reversed without an explicit reason code.<\/li>\n<li>A second chargeback without an explicit reason code.<\/li>\n<\/ul>\n<p>In your test payment request, you enter a value for the <code>holderName<\/code> that corresponds with the scenario that you want to test. You can test a chargeback scenario with the <a href=\"#test-same\">same<\/a> or with a <a href=\"#test-custom\">custom<\/a> value and or currency.<\/p>\n<h3 id=\"test-same\">Test a chargeback with the same value and currency<\/h3>\n<p>To test a chargeback with the same value and currency as the payment request, use the following pattern for the <code>holderName<\/code>:<\/p>\n<ul>\n<li><strong>Chargeback:{<em>reason_code<\/em>}<\/strong><\/li>\n<li><strong>Chargeback<\/strong><\/li>\n<li><strong>Chargeback Reversed<\/strong><\/li>\n<li><strong>Second Chargeback<\/strong><\/li>\n<\/ul>\n<p>For example test payment values, see the table with <a href=\"#test-example-values\">example values<\/a>.<\/p>\n<h3 id=\"test-custom\">Test a chargeback with a custom value and\/or currency<\/h3>\n<p>To test a custom value for full or partial chargebacks, or chargebacks for an amount that is greater than payment amount, in the same or in a different currency as the payment request, use the following pattern for the <code>holderName<\/code>:<\/p>\n<ul>\n<li><strong>{chargeback scenario}<\/strong> <strong>{quantity in minor units}<\/strong> <strong>{currency code}<\/strong><\/li>\n<\/ul>\n<p>When you use this format, take into account the following limitations:<\/p>\n<ul>\n<li>For partial chargebacks, the maximum difference between the chargeback and the test payment amount is 50 percent.<\/li>\n<li>For chargebacks greater than payment amount, the maximum difference between the chargeback and the test payment amount is 20 percent.<\/li>\n<\/ul>\n<p>For example test payment values, see the table with <a href=\"#test-example-values\">example test values<\/a>.<\/p>\n<h2 id=\"test-example-values\">Example test values<\/h2>\n<p>The table shows example values that you can use in the test payment for the cardholder name and the amount in minor units, and which chargeback scenario it tests.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\"><div style=\"width:200px\">Test scenario<\/div><\/th>\n<th style=\"text-align: left;\"><div style=\"width:250px\">Example value<br> <code>holderName<\/code><\/div><\/th>\n<th style=\"text-align: left;\"><div style=\"width:100px\">Example value<br><code>amount<\/code><\/div><\/th>\n<th><div style=\"width:50px\">Chargeback<\/div><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\">Test a chargeback with a specific <a href=\"\/risk-management\/understanding-disputes\/dispute-reason-codes?tab=chargeback_1\">reason code<\/a>.<\/td>\n<td style=\"text-align: left;\"><strong>Chargeback:10.4<\/strong><\/td>\n<td style=\"text-align: left;\">Any<\/td>\n<td>Full<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a chargeback with a specific <a href=\"\/risk-management\/understanding-disputes\/dispute-reason-codes?tab=chargeback_1\">reason code<\/a> that has the same value and currency as the test payment.<\/td>\n<td style=\"text-align: left;\"><strong>Chargeback:10.4 10000 EUR<\/strong><\/td>\n<td style=\"text-align: left;\">10000 EUR<\/td>\n<td>Full<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a partial chargeback with a specific <a href=\"\/risk-management\/understanding-disputes\/dispute-reason-codes?tab=chargeback_1\">reason code<\/a> that has a lower value but the same currency as the test payment.<\/td>\n<td style=\"text-align: left;\"><strong>Chargeback:10.4 9000 EUR<\/strong><\/td>\n<td style=\"text-align: left;\">10000 EUR<\/td>\n<td>Partial<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a chargeback with a specific <a href=\"\/risk-management\/understanding-disputes\/dispute-reason-codes?tab=chargeback_1\">reason code<\/a> that has higher value but the same currency as the test payment.<\/td>\n<td style=\"text-align: left;\"><strong>Chargeback:10.4 11000 EUR<\/strong><\/td>\n<td style=\"text-align: left;\">10000 EUR<\/td>\n<td>Greater than the payment amount<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a chargeback with a specific <a href=\"\/risk-management\/understanding-disputes\/dispute-reason-codes?tab=chargeback_1\">reason code<\/a> in a currency that differs from the test payment.<\/td>\n<td style=\"text-align: left;\"><strong>Chargeback:10.4 10000 USD<\/strong><\/td>\n<td style=\"text-align: left;\">10000 EUR<\/td>\n<td>Different currency<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a chargeback without an explicit reason code.<\/td>\n<td style=\"text-align: left;\"><strong>Chargeback<\/strong><\/td>\n<td style=\"text-align: left;\">Any<\/td>\n<td>Full<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a chargeback without an explicit reason code that has the same value and currency as the test payment.<\/td>\n<td style=\"text-align: left;\"><strong>Chargeback 10000 EUR<\/strong><\/td>\n<td style=\"text-align: left;\">10000 EUR<\/td>\n<td>Full<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a partial chargeback without an explicit reason code that has a lower value but the same currency as the test payment.<\/td>\n<td style=\"text-align: left;\"><strong>Chargeback 9000 EUR<\/strong><\/td>\n<td style=\"text-align: left;\">10000 EUR<\/td>\n<td>Partial<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a chargeback without an explicit reason code that has higher value but the same currency as the test payment.<\/td>\n<td style=\"text-align: left;\"><strong>Chargeback 11000 EUR<\/strong><\/td>\n<td style=\"text-align: left;\">10000 EUR<\/td>\n<td>Greater than the payment amount<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a chargeback without an explicit reason code in a currency that differs from the test payment.<\/td>\n<td style=\"text-align: left;\"><strong>Chargeback 10000 USD<\/strong><\/td>\n<td style=\"text-align: left;\">10000 EUR<\/td>\n<td>Different currency<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a chargeback with a <strong>ChargebackReversed<\/strong> status without an explicit reason code.<\/td>\n<td style=\"text-align: left;\"><strong>Chargeback Reversed<\/strong><\/td>\n<td style=\"text-align: left;\">Any<\/td>\n<td>Full<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a chargeback with a <strong>ChargebackReversed<\/strong> status without an explicit reason code that has the same value and currency as the test payment.<\/td>\n<td style=\"text-align: left;\"><strong>Chargeback Reversed 10000 EUR<\/strong><\/td>\n<td style=\"text-align: left;\">10000 EUR<\/td>\n<td>Full<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a partial chargeback with a <strong>ChargebackReversed<\/strong> status without an explicit reason code that has a lower value but the same currency as the test payment.<\/td>\n<td style=\"text-align: left;\"><strong>Chargeback Reversed 9000 EUR<\/strong><\/td>\n<td style=\"text-align: left;\">10000 EUR<\/td>\n<td>Partial<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a chargeback with a <strong>ChargebackReversed<\/strong> status without an explicit reason code that has higher value but the same currency as the test payment.<\/td>\n<td style=\"text-align: left;\"><strong>Chargeback Reversed 11000 EUR<\/strong><\/td>\n<td style=\"text-align: left;\">10000 EUR<\/td>\n<td>Greater than the payment amount<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a chargeback with a <strong>ChargebackReversed<\/strong> status without an explicit reason code in a currency that differs from the test payment.<\/td>\n<td style=\"text-align: left;\"><strong>Chargeback Reversed 10000 USD<\/strong><\/td>\n<td style=\"text-align: left;\">10000 EUR<\/td>\n<td>Different currency<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a chargeback with a <strong>SecondChargeback<\/strong> status without an explicit reason code.<\/td>\n<td style=\"text-align: left;\"><strong>Second Chargeback<\/strong><\/td>\n<td style=\"text-align: left;\">Any<\/td>\n<td>Full<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a chargeback with a <strong>SecondChargeback<\/strong> status without an explicit reason code that has the same value and currency as the test payment.<\/td>\n<td style=\"text-align: left;\"><strong>Second Chargeback 10000 EUR<\/strong><\/td>\n<td style=\"text-align: left;\">10000 EUR<\/td>\n<td>Full<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a partial chargeback with a <strong>SecondChargeback<\/strong> status without an explicit reason code that has a lower value but the same currency as the test payment.<\/td>\n<td style=\"text-align: left;\"><strong>Second Chargeback 9000 EUR<\/strong><\/td>\n<td style=\"text-align: left;\">10000 EUR<\/td>\n<td>Partial<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a chargeback with a <strong>SecondChargeback<\/strong> status without an explicit reason code that has higher value but the same currency as the test payment.<\/td>\n<td style=\"text-align: left;\"><strong>Second Chargeback 11000 EUR<\/strong><\/td>\n<td style=\"text-align: left;\">10000 EUR<\/td>\n<td>Greater than the payment amount<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">Test a chargeback with a <strong>SecondChargeback<\/strong> status without an explicit reason code in a currency that differs from the test payment.<\/td>\n<td style=\"text-align: left;\"><strong>Second Chargeback 10000 USD<\/strong><\/td>\n<td style=\"text-align: left;\">10000 EUR<\/td>\n<td>Different currency<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"dispute-test-payment\">Make a test payment<\/h2>\n<p>In your test environment, submit a payment request with the <code>holderName<\/code> set to any of the values from the <a href=\"#test-example-values\">table<\/a>.<\/p>\n<p>The following example shows 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 to simulate a full chargeback with reason code 10.4.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Payment request to simulate a chargeback with reason code 10.4'\" :id=\"''\" :code-data=\"[{&quot;language&quot;:&quot;sh&quot;,&quot;tabTitle&quot;:&quot;&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/checkout-test.adyen.com\\\/v72\\\/payments\\n  -H 'x-api-key: ADYEN_API_KEY' \\\\\\n  -H 'content-type: application\\\/json' \\\\\\n  -d '{\\n    \\&quot;amount\\&quot;: {\\n      \\&quot;currency\\&quot;: \\&quot;EUR\\&quot;,\\n      \\&quot;value\\&quot;: 10000\\n    },\\n    \\&quot;reference\\&quot;: \\&quot;YOUR_ORDER_NUMBER\\&quot;,\\n    \\&quot;{hint:If you are using the \\\/authorise endpoint, change the object to card}paymentMethod{\\\/hint}\\&quot;: {\\n      \\&quot;type\\&quot;: \\&quot;scheme\\&quot;,\\n      \\&quot;encryptedCardNumber\\&quot;: \\&quot;test_4111111111111111\\&quot;,\\n      \\&quot;encryptedExpiryMonth\\&quot;: \\&quot;test_03\\&quot;,\\n      \\&quot;encryptedExpiryYear\\&quot;: \\&quot;test_2030\\&quot;,\\n      \\&quot;encryptedSecurityCode\\&quot;: \\&quot;test_737\\&quot;,\\n      \\&quot;holderName\\&quot;: \\&quot;Chargeback:10.4\\&quot;\\n    },\\n    \\&quot;returnUrl\\&quot;: \\&quot;https:\\\/\\\/your-company.example.com\\\/...\\&quot;,\\n    \\&quot;merchantAccount\\&quot;: \\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;\\n   }'&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>You receive a response containing a <code>pspReference<\/code>, our unique identifier for the payment. You need this <code>pspReference<\/code> to capture the payment in the next step.<\/p>\n<h2 id=\"dispute-test-capture\">Capture the payment<\/h2>\n<p>To capture the test payment, make a  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Checkout\/latest\/post\/payments\/(paymentPspReference)\/captures\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/payments\/{paymentPspReference}\/captures<\/a> request, where <code>{paymentPspReference}<\/code> is the <code>pspReference<\/code> you received in the payment response. In the <code>amount<\/code> object, specify the <code>value<\/code> and <code>currency<\/code> that you used in the test payment request.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Capture request'\" :id=\"''\" :code-data=\"[{&quot;language&quot;:&quot;sh&quot;,&quot;tabTitle&quot;:&quot;&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/checkout-test.adyen.com\\\/v72\\\/payments\\\/{paymentPspReference}\\\/captures \\\\\\n-H 'x-api-key: ADYEN_API_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-d '{\\n      \\&quot;merchantAccount\\&quot;: \\&quot;YOUR_MERCHANT_ACCOUNT\\&quot;,\\n      \\&quot;amount\\&quot;: {\\n          \\&quot;currency\\&quot;: \\&quot;EUR\\&quot;,\\n          \\&quot;value\\&quot;: 10000\\n      },\\n        \\&quot;reference\\&quot;: \\&quot;YOUR_UNIQUE_REFERENCE\\&quot;\\n}'&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>You receive a response containing:<\/p>\n<ul>\n<li><code>pspReference<\/code>: the PSP reference associated with this capture request. Note that this is different from the PSP reference associated with the original payment request.<\/li>\n<\/ul>\n<h2 id=\"dispute-test-webhook\">Monitor webhooks<\/h2>\n<p>After you capture the test payment, you receive a  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/Webhooks\/latest\/post\/CAPTURE\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">CAPTURE<\/a> webhook message. The test payment then goes through <strong>SentforSettle<\/strong>, <strong>Settled<\/strong>, and finally the <strong>Chargeback<\/strong> status. This process can take up to 24 hours to complete.<\/p>\n<p>Listen for the webhook message related to the chargeback scenario that you are testing. For example, if you are testing a chargeback flow, you will receive a <a href=\"\/risk-management\/disputes-api\/dispute-notifications#notification_of_chargeback\">NOTIFICATION_OF_CHARGEBACK<\/a>. This webhook message contains a <code>pspReference<\/code>, which is the unique identifier for the dispute. For example:<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'NOTIFICATION_OF_CHARGEBACK webhook'\" :id=\"''\" :code-data='[{\"language\":\"json\",\"tabTitle\":\"\",\"content\":\"{\\n\\\"live\\\":\\\"false\\\",\\n\\\"notificationItems\\\":[\\n   {\\n      \\\"NotificationRequestItem\\\":{\\n         \\\"additionalData\\\":{\\n            \\\"chargebackReasonCode\\\":\\\"10.4\\\",\\n            \\\"modificationMerchantReferences\\\":\\\"\\\",\\n            \\\"chargebackSchemeCode\\\":\\\"visa\\\",\\n            \\\"defensePeriodEndsAt\\\":\\\"2021-11-29T01:30:57+01:00\\\",\\n            \\\"autoDefended\\\":\\\"false\\\",\\n            \\\"defendable\\\" : \\\"true\\\",\\n            \\\"disputeStatus\\\":\\\"Undefended\\\"\\n         },\\n         \\\"amount\\\":{\\n            \\\"currency\\\":\\\"EUR\\\",\\n            \\\"value\\\":10000\\n         },\\n         \\\"eventCode\\\":\\\"NOTIFICATION_OF_CHARGEBACK\\\",\\n         \\\"eventDate\\\":\\\"2021-11-11T01:30:57+01:00\\\",\\n         \\\"merchantAccountCode\\\":\\\"YOUR_MERCHANT_ACCOUNT\\\",\\n         \\\"merchantReference\\\":\\\"YOUR_REFERENCE\\\",\\n         \\\"originalReference\\\":\\\"8515785619639602\\\",\\n         \\\"paymentMethod\\\":\\\"visa\\\",\\n         \\\"pspReference\\\":\\\"9915555555555555\\\",\\n         \\\"reason\\\":\\\"Other Fraud-Card Absent Environment\\\",\\n         \\\"success\\\":\\\"true\\\"\\n       }\\n     }\\n   ]\\n }\"}]' :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<h2 id=\"dispute-test-handling\">Accept or defend the dispute<\/h2>\n<p>If you are simulating a chargeback, you can use the <a href=\"\/risk-management\/disputes-api\">Disputes API<\/a> to accept or defend the simulated chargeback, or use your <a href=\"\/risk-management\/manage-disputes\">Customer Area<\/a>.<\/p>\n<p>To defend the dispute using the Disputes API:<\/p>\n<ol>\n<li><a href=\"\/risk-management\/disputes-api#retrieve-dispute-information\">Retrieve defense reasons<\/a><\/li>\n<li><a href=\"\/risk-management\/disputes-api#supply-dispute-defense-documents\">Upload dispute defense documents<\/a><\/li>\n<li><a href=\"\/risk-management\/disputes-api#defend-dispute\">Defend the dispute<\/a><\/li>\n<\/ol>\n<p>Or, you can <a href=\"\/risk-management\/disputes-api\/#accept-dispute\">accept the dispute<\/a> using the Disputes API.<\/p>\n<p>To accept or defend the dispute using the Customer Area:<\/p>\n<ol>\n<li>Go to <strong>Revenue &amp; risk<\/strong> &gt; <strong>Disputes<\/strong><\/li>\n<li>Select the simulated dispute and either accept or defend the dispute.<\/li>\n<\/ol>\n<h2>See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/risk-management\/understanding-disputes\/\"\n                        target=\"_self\"\n                        >\n                    Understanding and defending disputes\n                <\/a><\/li><li><a href=\"\/risk-management\/understanding-disputes\/dispute-reason-codes\/\"\n                        target=\"_self\"\n                        >\n                    Dispute reason codes and defense requirements\n                <\/a><\/li><li><a href=\"\/risk-management\/manage-disputes\/\"\n                        target=\"_self\"\n                        >\n                    Manage disputes\n                <\/a><\/li><li><a href=\"\/risk-management\/disputes-api\/dispute-notifications\/\"\n                        target=\"_self\"\n                        >\n                    Dispute webhooks\n                <\/a><\/li><li><a href=\"\/risk-management\/disputes-api\/\"\n                        target=\"_self\"\n                        >\n                    Disputes API\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/risk-management\/disputes-api\/test-applicable-dispute-reasons","articleFields":{"description":"Simulate chargebacks by submitting dispute reason codes in your payment request.","id":"24217635","type":"page","_expandable":{"operations":""},"status":"current","last_edit_on":"08-10-2019 13:17"},"algolia":{"url":"https:\/\/docs.adyen.com\/risk-management\/disputes-api\/test-applicable-dispute-reasons","title":"Test a chargeback scenario","content":"\nTesting specific payment methodsSee the dedicated instructions to test chargeback scenarios for ACH Direct Debit.\n\nTo test the dispute flow, you can simulate different chargeback scenarios.\nYou can then follow a simulated dispute through the process, and test how to defend or accept disputes using the Disputes API or the Customer Area.\nRequirements\nBefore you begin, take into account the following requirements and limitations.\n\n\n\nRequirement\nDescription\n\n\n\n\nIntegration type\nMake sure that you have built an online payments integration.\n\n\nAPI credentials\nTo manage disputes using the Disputes API, make sure that you have an API credential with an API key and the API dispute management role.\n\n\n\n\nCustomer Area roles\nTo manage disputes using the Customer Area, make sure that you have one of the following role(s): Merchant dispute managementRisk admin\n\n\nWebhooks\nSubscribe to the Standard webhook and enable dispute events.\n\n\nLimitations\nNot all dispute types can be simulated.\n\n\nSetup steps\nDecide if you want to test managing disputes with the Disputes API or with the Customer Area. For either flow, we recommend that you: Enable risk and set up risk management.If you are using RevenueProtect, our classic risk engine, temporarily disable or lower the risk score for the Card\/bank account holder name contains a non-alphabetic character risk check.\n\n\n\nHow it works\nThe overall chargeback simulation and testing process is as follows:\n\nChoose one of the test scenarios.\nMake a test payment with a holderName value that triggers the scenario that you want to simulate.\nCapture the test payment.\nListen for the webhook that indicates the simulated chargeback is created.\nUse the information from your test environment to test handling the chargeback using the Disputes API or your test Customer Area.\n\nTest scenarios\nYou can test the following chargeback scenarios:\n\nA chargeback with a specific chargeback reason code.\nA chargeback without an explicit reason code.\nA chargeback that is reversed without an explicit reason code.\nA second chargeback without an explicit reason code.\n\nIn your test payment request, you enter a value for the holderName that corresponds with the scenario that you want to test. You can test a chargeback scenario with the same or with a custom value and or currency.\nTest a chargeback with the same value and currency\nTo test a chargeback with the same value and currency as the payment request, use the following pattern for the holderName:\n\nChargeback:{reason_code}\nChargeback\nChargeback Reversed\nSecond Chargeback\n\nFor example test payment values, see the table with example values.\nTest a chargeback with a custom value and\/or currency\nTo test a custom value for full or partial chargebacks, or chargebacks for an amount that is greater than payment amount, in the same or in a different currency as the payment request, use the following pattern for the holderName:\n\n{chargeback scenario} {quantity in minor units} {currency code}\n\nWhen you use this format, take into account the following limitations:\n\nFor partial chargebacks, the maximum difference between the chargeback and the test payment amount is 50 percent.\nFor chargebacks greater than payment amount, the maximum difference between the chargeback and the test payment amount is 20 percent.\n\nFor example test payment values, see the table with example test values.\nExample test values\nThe table shows example values that you can use in the test payment for the cardholder name and the amount in minor units, and which chargeback scenario it tests.\n\n\n\nTest scenario\nExample value holderName\nExample valueamount\nChargeback\n\n\n\n\nTest a chargeback with a specific reason code.\nChargeback:10.4\nAny\nFull\n\n\nTest a chargeback with a specific reason code that has the same value and currency as the test payment.\nChargeback:10.4 10000 EUR\n10000 EUR\nFull\n\n\nTest a partial chargeback with a specific reason code that has a lower value but the same currency as the test payment.\nChargeback:10.4 9000 EUR\n10000 EUR\nPartial\n\n\nTest a chargeback with a specific reason code that has higher value but the same currency as the test payment.\nChargeback:10.4 11000 EUR\n10000 EUR\nGreater than the payment amount\n\n\nTest a chargeback with a specific reason code in a currency that differs from the test payment.\nChargeback:10.4 10000 USD\n10000 EUR\nDifferent currency\n\n\nTest a chargeback without an explicit reason code.\nChargeback\nAny\nFull\n\n\nTest a chargeback without an explicit reason code that has the same value and currency as the test payment.\nChargeback 10000 EUR\n10000 EUR\nFull\n\n\nTest a partial chargeback without an explicit reason code that has a lower value but the same currency as the test payment.\nChargeback 9000 EUR\n10000 EUR\nPartial\n\n\nTest a chargeback without an explicit reason code that has higher value but the same currency as the test payment.\nChargeback 11000 EUR\n10000 EUR\nGreater than the payment amount\n\n\nTest a chargeback without an explicit reason code in a currency that differs from the test payment.\nChargeback 10000 USD\n10000 EUR\nDifferent currency\n\n\nTest a chargeback with a ChargebackReversed status without an explicit reason code.\nChargeback Reversed\nAny\nFull\n\n\nTest a chargeback with a ChargebackReversed status without an explicit reason code that has the same value and currency as the test payment.\nChargeback Reversed 10000 EUR\n10000 EUR\nFull\n\n\nTest a partial chargeback with a ChargebackReversed status without an explicit reason code that has a lower value but the same currency as the test payment.\nChargeback Reversed 9000 EUR\n10000 EUR\nPartial\n\n\nTest a chargeback with a ChargebackReversed status without an explicit reason code that has higher value but the same currency as the test payment.\nChargeback Reversed 11000 EUR\n10000 EUR\nGreater than the payment amount\n\n\nTest a chargeback with a ChargebackReversed status without an explicit reason code in a currency that differs from the test payment.\nChargeback Reversed 10000 USD\n10000 EUR\nDifferent currency\n\n\nTest a chargeback with a SecondChargeback status without an explicit reason code.\nSecond Chargeback\nAny\nFull\n\n\nTest a chargeback with a SecondChargeback status without an explicit reason code that has the same value and currency as the test payment.\nSecond Chargeback 10000 EUR\n10000 EUR\nFull\n\n\nTest a partial chargeback with a SecondChargeback status without an explicit reason code that has a lower value but the same currency as the test payment.\nSecond Chargeback 9000 EUR\n10000 EUR\nPartial\n\n\nTest a chargeback with a SecondChargeback status without an explicit reason code that has higher value but the same currency as the test payment.\nSecond Chargeback 11000 EUR\n10000 EUR\nGreater than the payment amount\n\n\nTest a chargeback with a SecondChargeback status without an explicit reason code in a currency that differs from the test payment.\nSecond Chargeback 10000 USD\n10000 EUR\nDifferent currency\n\n\n\nMake a test payment\nIn your test environment, submit a payment request with the holderName set to any of the values from the table.\nThe following example shows a  \/payments request to simulate a full chargeback with reason code 10.4.\n\n    \n\nYou receive a response containing a pspReference, our unique identifier for the payment. You need this pspReference to capture the payment in the next step.\nCapture the payment\nTo capture the test payment, make a  \/payments\/{paymentPspReference}\/captures request, where {paymentPspReference} is the pspReference you received in the payment response. In the amount object, specify the value and currency that you used in the test payment request.\n\n    \n\nYou receive a response containing:\n\npspReference: the PSP reference associated with this capture request. Note that this is different from the PSP reference associated with the original payment request.\n\nMonitor webhooks\nAfter you capture the test payment, you receive a  CAPTURE webhook message. The test payment then goes through SentforSettle, Settled, and finally the Chargeback status. This process can take up to 24 hours to complete.\nListen for the webhook message related to the chargeback scenario that you are testing. For example, if you are testing a chargeback flow, you will receive a NOTIFICATION_OF_CHARGEBACK. This webhook message contains a pspReference, which is the unique identifier for the dispute. For example:\n\n    \n\nAccept or defend the dispute\nIf you are simulating a chargeback, you can use the Disputes API to accept or defend the simulated chargeback, or use your Customer Area.\nTo defend the dispute using the Disputes API:\n\nRetrieve defense reasons\nUpload dispute defense documents\nDefend the dispute\n\nOr, you can accept the dispute using the Disputes API.\nTo accept or defend the dispute using the Customer Area:\n\nGo to Revenue &amp; risk &gt; Disputes\nSelect the simulated dispute and either accept or defend the dispute.\n\nSee also\n\n\n                    Understanding and defending disputes\n                \n                    Dispute reason codes and defense requirements\n                \n                    Manage disputes\n                \n                    Dispute webhooks\n                \n                    Disputes API\n                \n","type":"page","locale":"en","boost":17,"hierarchy":{"lvl0":"Home","lvl1":"Risk management","lvl2":"Manage disputes with the Disputes API","lvl3":"Test a chargeback scenario"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/","lvl1":"https:\/\/docs.adyen.com\/risk-management","lvl2":"https:\/\/docs.adyen.com\/risk-management\/disputes-api","lvl3":"\/risk-management\/disputes-api\/test-applicable-dispute-reasons"},"levels":4,"category":"Risk Management","category_color":"green","tags":["chargeback","scenario"]}}
