# 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 |