# Disputes testing You can simulate disputes (also called chargebacks) in the Checkout.com testing environment. You can test [how a dispute goes through a production lifecycle](https://www.checkout.com/docs/business-operations/manage-disputes/how-disputes-work.md) using: - The [Disputes API](https://www.checkout.com/docs/payments/process-disputes/disputes-api.md) - The [Dashboard](https://www.checkout.com/docs/business-operations/use-the-dashboard/disputes.md) --- ## How it works 1. Request a payment using information from a [test dispute scenario](#Dispute_test_scenarios). 2. Checkout.com [authorizes](https://www.checkout.com/docs/payments/accept-payments/request-a-payment.md#Response_example) and then [captures](https://www.checkout.com/docs/payments/manage-payments/capture-a-payment.md) the test payment within five minutes. By default, payments are auto-captured, but if this fails, you can manually capture the payment. 3. Checkout.com creates a test dispute based on the specified scenario. > **Note** > > If you do not use a test scenario, the test dispute is not created. --- ## Create a test dispute You can create a test dispute using the API or the Dashboard. ### Create a test dispute in the Dashboard 1. Sign in to the sandbox [Dashboard](https://dashboard.sandbox.checkout.com). 2. Go to _Payments_ > _Processing_ > _Virtual terminal_. 3. If prompted, select a [processing channel](https://www.checkout.com/docs/business-operations/use-the-dashboard/manage-processing-channels.md). 4. Create a payment by entering a valid [test card number](https://www.checkout.com/docs/testing/test-cards.md), with the amount and card expiry date from a test scenario. 5. Select _Confirm payment_. 6. Go to _Payments_ > _Processing_ > _All Payments_.
When the payment has been captured after approximately one minute, it is displayed on this page. 7. Go to _Payments_ > _Processing_ > _Disputes_ to view the generated test dispute. ### Create a test dispute using the API 1. Call the [Request a payment or payout](https://api-reference.checkout.com/tag/Payments/#operation/requestAPaymentOrPayout) endpoint using the details of a test scenario. > **Note** > > Provide the `amount` in the [major currency unit](https://www.checkout.com/docs/payments/accept-payments/format-the-amount-value.md). > You cannot test disputes with currencies that use the [full amount](https://www.checkout.com/docs/payments/accept-payments/format-the-amount-value.md#The_full_amount). **Sandbox** `POST` `https://{prefix}.api.sandbox.checkout.com/payments` ### Request examples **GBP** ```json { "source": { "type": "card", "number": "4242424242424242", "expiry_month": 1, "expiry_year": 2099, "name": "John Smith", "cvv": "100" }, "amount": 1040, "currency": "GBP", "reference": "Testing disputes for Visa" } ``` **BHD** ```json { "source": { "type": "card", "number": "4242424242424242", "expiry_month": 1, "expiry_year": 2099, "name": "John Smith", "cvv": "100" }, "amount": 10400, "currency": "BHD", "reference": "Testing disputes for Visa" } ``` 2. Wait a few minutes, and then call the [Get disputes](https://api-reference.checkout.com/tag/Issuing-disputes/#operation/getDisputes) endpoint to retrieve a list of disputes. **Sandbox** `POST` `https://{prefix}.api.sandbox.checkout.com/disputes` ### Response example ```json { "limit": 10, "skip": 10, "from": "2018-08-12T01:15:56Z", "to": "2018-08-13T11:09:01Z", "id": "dsp_rbhwd2qrg13uhrp2newfcd", "entity_ids": "ent_wxglze3wwywujg4nna5fb7ldli,ent_vkb5zcy64zoe3cwfmaqvqyqyku", "sub_entity_ids": "ent_uzm3uxtssvmuxnyrfdffcyjxeu,ent_hy5wtzwzeuwefmsnjtdhw4scfi", "processing_channel_ids": "pc_uzm3uxtssvmuxnyrfdffcyjxeu,pc_hy5wtzwzeuwefmsnjtdhw4scfi", "segment_ids": "string", "statuses": "evidence_required,evidence_under_review", "payment_id": "pay_lzmo6p0i3612judj754w1ngtil", "payment_reference": "th7zxa1kcnqmes8", "payment_arn": "74548998294293193445538", "payment_mcc": "5021", "this_channel_only": true, "total_count": 1, "data": [ { "id": "dsp_rbhwd2qrg13uhrp2newfafreds", "entity_id": "ent_wxglze3wwywujg4nna5fb7ldli", "sub_entity_id": "ent_uzm3uxtssvmuxnyrfdffcyjxeu", "processing_channel": "pc_uzm3uxtssvmuxnyrfdffcyjxeu", "segment_id": "string", "category": "fraudulent", "status": "evidence_required", "amount": 999, "currency": "GBP", "reason_code": "10.4", "payment_id": "pay_88cb4e671m1da22e9bbbyx", "payment_action_id": "act_mbabizu24mvu3mela5njyhpit4", "payment_reference": "th7zxa1kcnqmes8", "payment_arn": "74548998294293193445538", "payment_mcc": "5021", "payment_method": "VISA", "evidence_required_by": "2018-08-22T00:00:00Z", "received_on": "2018-08-01T01:15:56Z", "last_update": "2018-08-12T04:15:56Z", "resolved_reason": "already_refunded", "is_ce_candidate": true, "_links": { "self": { "href": "https://{prefix}.api.checkout.com/disputes/dsp_rbhwd2qrg13uhrp2newf" } } } ] } ``` --- ## Dispute test scenarios Use one of the following scenarios to create a test dispute. Each scenario triggers a specific dispute status and chargeback code. > **Note** > > The payment amount differs depending on whether you test using the Dashboard or the API. ### Resolved – Refund already processed You have already refunded the customer. Checkout.com automatically submitted evidence on your behalf and the dispute is resolved. - Dispute status – `resolved` - Chargeback code – `AUTO` | Payment method | Payment amount | Dispute reason code triggered | Dispute code category | Card expiry date | | --- | --- | --- | --- | --- | | Visa | - Dashboard – 10.42, 1.042, 1042
- API – 1042 | 10.4 | Fraudulent | 01/2099 | | Visa | - Dashboard – 13.12, 1.312, 1312
- API – 1312 | 13.1 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.57, 4.857, 4857
- API – 4857 | 4855 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.61, 4.861, 4861
- API – 4861 | 4860 | Credit not issued | 01/2099 | | Amex | - Dashboard – 45.18, 4.518, 4518
- API – 4518 | 4517 | Unrecognized | 01/2099 | | Amex | - Dashboard – 45.42, 4.542, 4542
- API – 4542 | 4540 | Fraudulent | 01/2099 | ### Resolved – Outside of dispute process The dispute is resolved by the merchant or scheme outside of the formal dispute process. - Dispute status – `resolved` - Chargeback code – `ARWS` | Payment method | Payment amount | Dispute reason code triggered | Dispute code category | Card expiry date | | --- | --- | --- | --- | --- | | Visa | - Dashboard – 10.5, 0.105, 105
- API – 1050 | 10.5 | Fraudulent | 01/2099 | | Visa | - Dashboard – 13.11, 1.311, 1311
- API – 1311 | 13.1 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.37, 4.837, 4837
- API – 4837 | 4835 | Fraudulent | 01/2099 | | Mastercard | - Dashboard – 48.56, 4.856, 4856
- API – 4856 | 4855 | Product/service not received | 01/2099 | | Amex | - Dashboard – 45.17, 4.517, 4517
- API – 4517 | 4517 | Unrecognized | 01/2099 | | Amex | - Dashboard – 45.41, 4.541, 4541
- API – 4541 | 4540 | Fraudulent | 01/2099 | ### Evidence required You must submit evidence to defend against the dispute. - Dispute status – `evidence_required` - Chargeback code – `ADJM` | Payment method | Payment amount | Dispute reason code triggered | Dispute code category | Card expiry date | | --- | --- | --- | --- | --- | | Visa | - Dashboard – 10.4, 0.104, 104
- API – 1040 | 10.4 | Fraudulent | 01/2099 | | Visa | - Dashboard – 13.1, 0.131, 131
- API – 1310 | 13.1 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.55, 4.855, 4855
- API – 4855 | 4855 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.6, 0.486, 486
- API – 4860 | 4860 | Credit not issued | 01/2099 | | Amex | - Dashboard – 45.16, 4.516, 4516
- API – 4516 | 4516 | Unrecognized | 01/2099 | | Amex | - Dashboard – 45.4, 0.454, 454
- API – 45.40 | 4540 | Fraudulent | 01/2099 | ### Canceled The issuer canceled the dispute. - Dispute status – `canceled` - Chargeback code – `CBRV` | Payment method | Payment amount | Dispute reason code triggered | Dispute code category | Card expiry date | | --- | --- | --- | --- | --- | | Visa | - Dashboard – 10.43, 1.043, 1043
- API – 1043 | 10.4 | Fraudulent | 01/2099 | | Visa | - Dashboard – 13.13, 1.313, 1313
- API – 1313 | 13.1 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.58, 4.858, 4858
- API – 4858 | 4855 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.62, 4.862, 4862
- API – 4862 | 4860 | Credit not issued | 01/2099 | | Amex | - Dashboard – 45.19, 4.519, 4519
- API – 4519 | 4517 | Unrecognized | 01/2099 | | Amex | - Dashboard – 45.43, 4.543, 4543
- API – 45.43 | 4540 | Fraudulent | 01/2099 | ### Evidence under review You submitted evidence and the issuer is reviewing it. - Dispute status – `evidence_under_review` - Chargeback code – `RPDR` | Payment method | Payment amount | Dispute reason code triggered | Dispute code category | Card expiry date | | --- | --- | --- | --- | --- | | Visa | - Dashboard – 13.14, 1.314, 1314
- API – 1314 | 13.1 | Product/service not received | 01/2099 | | Visa | - Dashboard – 10.44, 1.044, 1044
- API – 1044 | 10.4 | Fraudulent | 01/2099 | | Mastercard | - Dashboard – 48.59, 4.859, 4859
- API – 4859 | 4855 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.63, 4.863, 4863
- API – 4863 | 4860 | Credit not issued | 01/2099 | | Amex | - Dashboard – 45.1, 0.451, 451
- API – 4510 | 4517 | Unrecognized | 01/2099 | | Amex | - Dashboard – 45.44, 4.544, 4544
- API – 4544 | 4540 | Fraudulent | 01/2099 | ### Won The issuer accepted your evidence and you won the dispute. - Dispute status – `won` - Chargeback code – `RPDW` | Payment method | Payment amount | Dispute reason code triggered | Dispute code category | Card expiry date | | --- | --- | --- | --- | --- | | Visa | - Dashboard – 10.45, 1.045, 1045
- API – 1045 | 10.4 | Fraudulent | 01/2099 | | Visa | - Dashboard – 13.15, 1.315, 1315
- API – 1315 | 13.1 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.5, 0.485, 485
- API – 4850 | 4855 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.64, 4.864, 4864
- API – 4864 | 4860 | Credit not issued | 01/2099 | | Amex | - Dashboard – 45.11, 4.511, 4511
- API – 4511 | 4517 | Unrecognized | 01/2099 | | Amex | - Dashboard – 45.45, 4.545, 4545
- API – 4545 | 4540 | Fraudulent | 01/2099 | ### Lost The issuer was not satisfied with your evidence and you lost the dispute. - Dispute status – `lost` - Chargeback code – `RPDL` | Payment method | Payment amount | Dispute reason code triggered | Dispute code category | Card expiry date | | --- | --- | --- | --- | --- | | Visa | - Dashboard – 10.46, 1.046, 1046
- API – 1046 | 10.4 | Fraudulent | 01/2099 | | Visa | - Dashboard – 13.16, 1.316, 1316
- API – 1316 | 13.1 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.51, 4.851, 4851
- API – 4851 | 4855 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.65, 4.865, 4865
- API – 4865 | 4860 | Credit not issued | 01/2099 | | Amex | - Dashboard – 45.12, 4.512, 4512
- API – 4512 | 4517 | Unrecognized | 01/2099 | | Amex | - Dashboard – 45.46, 4.546, 4546
- API – 4546 | 4540 | Fraudulent | 01/2099 | ### Arbitration under review You escalated the dispute to arbitration. - Dispute status – `arbitration_under_review` - Chargeback code – `ARBR` | Payment method | Payment amount | Dispute reason code triggered | Dispute code category | Card expiry date | | --- | --- | --- | --- | --- | | Visa | - Dashboard – 10.47, 1.047, 1047
- API – 1047 | 10.4 | Fraudulent | 01/2099 | | Visa | - Dashboard – 13.17, 1.317, 1317
- API – 1317 | 13.1 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.52, 4.852, 4852
- API – 4852 | 4855 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.66, 4.866, 4866
- API – 4866 | 4860 | Credit not issued | 01/2099 | | Amex | - Dashboard – 45.13, 4.513, 4513
- API – 4513 | 4517 | Unrecognized | 01/2099 | | Amex | - Dashboard – 45.47, 4.547, 4547
- API – 4547 | 4540 | Fraudulent | 01/2099 | ### Arbitration won You won the arbitration case. - Dispute status – `arbitration_won` - Chargeback code – `ARBW` | Payment method | Payment amount | Dispute reason code triggered | Dispute code category | Card expiry date | | --- | --- | --- | --- | --- | | Visa | - Dashboard – 10.49, 1.049, 1049
- API – 1049 | 10.4 | Fraudulent | 01/2099 | | Visa | - Dashboard – 13.19, 1.319, 1319
- API – 1319 | 13.1 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.54, 4.854, 4854
- API – 4854 | 4855 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.68, 4.868, 4868
- API – 4868 | 4860 | Credit not issued | 01/2099 | | Amex | - Dashboard – 45.15, 4.515, 4515
- API – 4515 | 4517 | Unrecognized | 01/2099 | | Amex | - Dashboard – 45.49, 4.549, 4549
- API – 4549 | 4540 | Fraudulent | 01/2099 | ### Arbitration lost You lost the arbitration case. - Dispute status – `arbitration_lost` - Chargeback code – `ARBL` | Payment method | Payment amount | Dispute reason code triggered | Dispute code category | Card expiry date | | --- | --- | --- | --- | --- | | Visa | - Dashboard – 10.48, 1.048, 1048
- API – 1048 | 10.4 | Fraudulent | 01/2099 | | Visa | - Dashboard – 13.18, 1.318, 1318
- API – 1318 | 13.1 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.53, 4.853, 4853
- API – 4853 | 4855 | Product/service not received | 01/2099 | | Mastercard | - Dashboard – 48.67, 4.867, 4867
- API – 4867 | 4860 | Credit not issued | 01/2099 | | Amex | - Dashboard – 45.14, 4.514, 4514
- API – 4514 | 4517 | Unrecognized | 01/2099 | | Amex | - Dashboard – 45.48, 4.548, 4548
- API – 4548 | 4540 | Fraudulent | 01/2099 |