Simulate test scenarios
Last updated: Jul 31st, 8:01pm
Simulate common test scenarios to check if your Disputes API integration correctly handles internal disputes, chargebacks, bank transfers, merchant responses, appeals, and related webhooks.
Internal disputes
The buyer disputes the transaction with PayPal. Transaction can be done through card, bank, digital wallets, and other supported payment methods.
Test data conditions (applies to all tests):
- Use
OTHER
as evidence type when calling Provide evidence API.
Test name | Description | Expected input | Dispute APIs to use | Expected outcome |
---|---|---|---|---|
Dispute NO HOLD, MERCHANT WINS CASE | Open the dispute. PayPal does not hold the money in the merchant's account. The merchant provides evidence. The case resolves in the merchant's favor. |
The buyer opens a dispute in the PayPal wallet. The merchant provides the requested evidence. |
Create: POST v1/customer/disputes/ Provide evidence: POST v1/customer/disputes/{id}/provide-evidence |
Partner receives the webhooks for:
The merchant receives emails for case creation, response request, and resolution. The merchant's account balance remains unchanged. |
Dispute WITH HOLD, MERCHANT WINS CASE | Open the dispute. PayPal holds the money in the merchant account. The merchant provides evidence. The case resolves in the merchant's favor and the hold releases. |
The buyer opens a dispute in the PayPal wallet. The merchant provides the requested evidence. |
Create: POST v1/customer/disputes/ Provide evidence: POST v1/customer/disputes/{id}/provide-evidence |
Partner receives the webhooks for:
The merchant receives emails for case creation, response request, and resolution. PayPal releases the hold on merchant account. |
Dispute NO HOLD, MERCHANT LOSES CASE (no data), NO SELLER PROTECTION, DISPUTE FEE is charged | Open the dispute. PayPal does not hold the money in the merchant account. The merchant does not provide evidence. The case resolves in the buyer's favor. |
The buyer opens a dispute in the PayPal wallet. The merchant does not provide the requested evidence. |
Create: POST v1/customer/disputes/ |
Partner receives the webhooks for:
The merchant receives emails for case creation, response request, and resolution. The case resolves in the buyer's favor. The transaction is not eligible for Seller Protection. PayPal debits the merchant account. |
Chargeback
The buyer disputes a card transaction with their card issuer.
Test data conditions (applies to all tests):
- Mastercard: Reason code -
4853
- Visa: Reason code -
C2
- For test conditions where a temporary hold applies, the hold is placed and released when the case is resolved in the merchant's favor.
Test name | Description | Expected input | Dispute APIs to use | Expected outcome |
---|---|---|---|---|
Chargeback WITH PROVISIONAL CREDIT, MERCHANT WINS CASE | Open the chargeback. The merchant provides evidence. The case resolves in the merchant's favor. |
The buyer opens a chargeback with the issuer. The merchant provides the requested evidence. |
Provide evidence: POST v1/customer/disputes/{id}/provide-evidence |
Partner receives the webhooks for:
The merchant receives emails for case creation, response request, and resolution. The merchant's account balance remains unchanged. |
Chargeback WITHOUT PROVISIONAL CREDIT, MERCHANT WINS CASE | Open the chargeback There is no hold on the merchant account. The merchant provides evidence. The case resolves in the merchant's favor. |
The buyer opens a chargeback with the issuer. The merchant provides evidence. |
Provide evidence: POST v1/customer/disputes/{id}/provide-evidence |
Partner receives the webhooks for:
The merchant receives emails for case creation, response request, and resolution. The merchant's account balance remains unchanged. |
Chargeback WITH PROVISIONAL CREDIT, MERCHANT LOSES CASE (no data) | Open the chargeback. There is no hold on the merchant's account. The merchant does not provide evidence. The case resolves in the buyer's favor. |
The buyer opens a chargeback with the issuer. The merchant does not provide the requested evidence. |
none |
Partner receives the webhooks for:
The merchant receives emails for case creation, response request, and resolution. The case resolves in the buyer's favor. PayPal debits the merchant's account. |
Chargeback WITHOUT PROVISIONAL CREDIT, MERCHANT LOSES CASE (no data) | Open the chargeback There is no hold on the merchant account. The merchant does not provide evidence. The case resolves in the buyer's favor. |
The buyer opens the chargeback with the issuer. The merchant does not provide evidence. |
none |
Partner receives the webhooks for:
The merchant receives emails for case creation, response request, and resolution. The case resolves in the buyer's favor. PayPal debits the merchant's account. |
Chargeback WITH PROVISIONAL CREDIT, MERCHANT LOSES CASE (adjudication) | Open the chargeback. There is no hold on the merchant account. The merchant provides evidence. The case resolves in the buyer's favor and the merchant is debited. |
The buyer opens a chargeback with the issuer. The merchant provides evidence. |
Provide evidence: POST v1/customer/disputes/{id}/provide-evidence
|
Partner receives the webhooks for:
The case adjudicates in the buyer's favor after evidence review. PayPal debits the merchant's account. |
Bank transfer (ACH return)
The buyer disputes a bank funded transaction with their bank.
Test data conditions (applies to all tests):
- Use the correct transaction amount to simulate the test transaction.
- Set up configurations to determine partner vs merchant liability for the dispute amount and dispute fee amount.
Test name | Description | Expected input |
Test data conditions | Dispute APIs to use | Expected outcome |
---|---|---|---|---|---|
ACH - SPP Ineligible - Buyer Favor | Create a member bank and capture unauthorized iACH transaction dispute in the sandbox. The case closes automatically in the buyer's favor without asking for merchant response, because the transaction is not SPP eligible. |
none | Use an SPP ineligible transaction for dispute creation. | none |
Partner receives the webhooks for:
The merchant receives emails for case creation and resolution. PayPal debits the merchant or partner for the dispute amount and dispute fee. |
ACH - SPP Eligible - No merchant response - Buyer Favor | Create a member bank and capture unauthorized iACH transaction dispute in the sandbox. The case moves to merchant response phase. The merchant does not respond within the 10-day SLA. The case resolves in the buyer's favor. |
Does not provide a merchant response within the SLA timeframe. | Use an SPP eligible transaction for dispute creation. | none |
Partner receives the webhooks for:
The merchant receives emails for case creation, response request, and resolution. PayPal debits the merchant or partner for the dispute amount and dispute fee. |
ACH - SPP Eligible - merchant responds - Merchant Favor | Create a member bank and capture unauthorized iACH transaction dispute in the sandbox. The case moves to merchant response phase. The merchant responds within the 10-day SLA. The case resolves in the merchant's favor. |
Provides a response with evidence type as OTHER when the case moves to merchant response phase. |
Use an SPP eligible transaction for dispute creation. | Provide evidence: POST v1/customer/disputes/{id}/provide-evidence |
Partner receives the webhooks for:
The merchant receives emails for case creation, response request, and resolution. PayPal holds the transactions during case creation and releases the hold when the case resolves in the merchant's favor. |
Merchant response
Response due date and HATEOAS links
The merchant must check the available HATEOAS links in the links
array of Show dispute details to determine which actions are available:
To determine the response due date, the merchant can check the seller_response_due_date
.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds. |
|
Inquiry stage
In the inquiry phase, the merchant can
Prerequisite : The merchant must have opted in for the dispute phase.
Terminology used:
- SNAD: Significantly Not As Described
- INR: Item Not Received
Send Message
The merchant can send a message in the following scenarios:
PayPal SNAD case
The buyer chooses a completed transaction to open a SNAD case. The merchant can reply to the buyer through the "send message" option for that dispute.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds and the merchant message is visible in show dispute details. |
Each API call succeeds and the merchant message is visible in Show dispute details. |
PayPal INR case
The buyer chooses a completed transaction to open an INR case. Merchants can reply to the buyer through the "send message" option for that dispute.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds and merchant message is visible in show dispute details and message is visible in the Resolution Center. |
Each API call succeeds and the merchant message is visible in Show dispute details. |
Make offer
The merchant can make an offer in the following ways:
- Refund with return – SNAD case
- Refund with replacement – SNAD case
- Replacement without refund – SNAD case
- Refund without replacement - PayPal INR case
The merchant can further acknowledge an item return when the buyer returns the item and uploads the tracking information.
Refund with return – SNAD case
The buyer chooses a completed transaction to open a SNAD case. The merchant can make an offer to the buyer to return the item for a refund.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds and |
Each API call succeeds and |
Refund with replacement – SNAD case
The buyer selects a completed transaction to open a SNAD case. The merchant can offer the buyer a replacement item along with a refund.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds and |
Each API call succeeds and |
Replacement without refund – SNAD case
The buyer chooses a completed transaction to open a SNAD case. The merchant can make an offer to the buyer to replace the item to amicably resolve the case.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds and returns expected response. |
Each API call succeeds and |
Refund without replacement - PayPal INR case
The buyer chooses a completed transaction to open an INR case. Merchants can make an offer to the buyer to amicably resolve the dispute.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds and |
Each API call succeeds and |
Acknowledge item return
If the merchant offers a refund with the return of the item and the buyer accepts it, the buyer can upload the return tracking information. After the buyer completes this step, the merchant has the option to acknowledge receipt of the item.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds. |
Each API call succeeds. |
Provide Evidence
The merchant can provide the following types of evidence:
PROOF_OF_FULFILLMENT
evidence
PayPal enables merchant to provide tracking information for INR cases.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds. |
Each API call succeeds. |
PROOF_OF_REFUND
evidence
PayPal helps the merchant to provide refund information for the dispute cases.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds. |
Each API call succeeds. |
OTHER
evidence
PayPal helps the merchant to provide multiple photos, materials, and files as evidence for the cases.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds. |
Each API call succeeds. |
Accept claim
Refund the dispute amount
If the merchant decides not to dispute the case, they can accept the claim to refund the buyer.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds and returns the expected response. |
Each API call succeeds and returns the expected response. The client receives the |
Escalate
The merchant can escalate the dispute in the following scenarios:
PayPal SNAD case
The buyer chooses a completed transaction to open a SNAD case. The merchant escalates the case because they cannot reach an amicable resolution with the buyer.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds, and the dispute lifecycle stage is updated from |
Each API call succeeds, and the dispute lifecycle stage is updated from |
PayPal INR case
The buyer chooses a completed transaction to open an INR case. The merchant escalates the case as they cannot reach an amicable resolution with the buyer.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds, and the dispute lifecycle stage is updated from |
Each API call succeeds, and the dispute lifecycle stage is updated from |
Claim stage
In the claim phase, the merchant can
Prerequisite: The merchant should have opted out of the dispute phase.
Terminology used:
- SNAD: Significantly Not As Described
- INR: Item Not Received
Provide evidence
The merchant can provide the following types of evidence:
PROOF_OF_FULFILLMENT
evidence
PayPal helps the merchant to provide tracking information for INR cases.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds. |
Each API call succeeds. |
PROOF_OF_REFUND
evidence
PayPal helps the merchant to provide refund information for the cases.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds. |
Each API call succeeds. |
OTHER
evidence
PayPal helps the merchant to provide multiple photos, materials, and files as evidence for the cases.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds. |
Each API call succeeds. |
Accept claim
The merchant can accept a claim in the following ways:
- Refund the dispute amount
- Refund the dispute amount on item return to a specified address
- Partial refund
Refund the dispute amount
If the merchant decides not to dispute the case, the merchant can accept the claim to refund the buyer.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds and returns the expected response. |
Each API call succeeds and returns the expected response. The client receives the |
Refund the dispute amount on item return to a specified address
If the case is SNAD, the merchant can refund the buyer for returning the item.
Test steps | PayPal actions | Client actions |
---|---|---|
|
The tracking information is returned in show dispute details. |
The client can get tracking information in show dispute details and update the case. |
Partial refund
If the case is SNAD, the merchant can refund the buyer for an amount less than the buyer's requested refund for returning the item.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds and returns the expected response. |
Each API call succeeds. |
Appeal dispute
When PayPal adjudicates a case against a party, the buyer or merchant may be eligible to appeal the decision. PayPal uses predefined rules to determine appeal eligibility.
To test appeals:
- Create a buyer account with a primary email address that includes
allowappeal
. Disputes created with this account will trigger:- The seller appeal workflow if the merchant is found liable.
- The buyer appeal workflow if the buyer is found liable.
- Each party can submit only one appeal per case.
To simulate cases where appeals are not allowed, create a buyer account with a primary email address that includes noappeal
.
The merchant can appeal the dispute in the following ways:
PROOF_OF_FULFILLMENT
Appeal with
If the case is decided against the merchant, the merchant can appeal the dispute by providing fulfillment information for INR, Unauthorized, or other cases.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds. |
Each API call succeeds. |
PROOF_OF_REFUND
Appeal with
If the case is decided against the merchant, the merchant can appeal the dispute by providing refund information for all reason codes.
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds. |
Each API call succeeds. |
OTHER
evidence
Appeal with
Test steps | PayPal actions | Client actions |
---|---|---|
|
Each API call succeeds. |
Each API call succeeds. |
Webhook test cases
To test Disputes webhooks, you need to wait a few minutes after creating the dispute for the actions to become available.
You can test for the following webhooks:
You can also test for duplicated webhooks and identify them using the unique ID in the webhook payload.
Terminology used:
- SNAD: Significantly Not As Described
- INR: Item Not Received
Dispute created webhook
Inquiry Stage
The merchant can test the following scenarios:
PayPal SNAD case
The customer chooses a completed transaction to open an SNAD case.
Test steps | PayPal actions | Client actions |
---|---|---|
|
The action succeeds and the dispute created webhook is sent. |
|
PayPal INR case
The customer chooses a completed transaction to open an INR case.
Test steps | PayPal actions | Client actions |
---|---|---|
|
The action succeeds and the dispute created webhook is sent. |
|
Claim stage
The merchant can test the following scenarios:
- PayPal SNAD case
- PayPal INR case
- PayPal unauthorized dispute case
- PayPal transaction error dispute case
- Duplicate dispute creation for a transaction is blocked
PayPal SNAD case
The customer chooses a completed transaction to open an SNAD case.
Test steps | PayPal actions | Client actions |
---|---|---|
|
The action succeeds and the dispute created webhook is sent. |
|
PayPal INR case
The customer chooses a completed transaction to open an INR case.
Test steps | PayPal actions | Client actions |
---|---|---|
|
The action succeeds and the dispute created webhook is sent. |
|
PayPal unauthorized dispute case
The customer chooses a completed transaction to open an unauthorized case.
Note: When testing unauthorized disputes, the buyer and merchant receive different dispute IDs. For merchants, the format and identifiers of the notifications stay the same as those of other dispute types.
Test steps | PayPal actions | Client actions |
---|---|---|
|
The action succeeds and the dispute created webhook is sent. |
|
PayPal transaction error dispute case
Six different reason codes are applicable for transaction error disputes.
Test steps | PayPal actions | Client actions |
---|---|---|
|
The action succeeds and the dispute created webhook is sent. |
|
Duplicate dispute creation for a transaction is blocked
The customer cannot open a duplicate dispute on a transaction that already has an existing dispute. Even after the dispute case is closed, the customer cannot open a dispute on the same transaction again.
Test steps | PayPal actions | Client actions |
---|---|---|
|
The customer cannot open a duplicate dispute on the same transaction. |
The customer cannot open a duplicate dispute on the same transaction. |
Dispute updated webhook
Inquiry stage
Buyer sends a message to the merchant
The buyer sends message to the merchant for INR or SNAD dispute in the INQUIRY phase.
Test steps | PayPal actions | Client actions |
---|---|---|
|
PayPal sends dispute updated webhook with the message details |
The client receives the |
Claim stage
The merchant can test the following scenarios:
Buyer provides return tracking information
The merchant accepts the dispute claim and provides the buyer with the return shipping address. The buyer then returns the item and updates the return tracking number in the Resolution Center.
Test steps | PayPal actions | Client actions |
---|---|---|
|
PayPal sends the dispute updated webhook. |
|
Buyer changes reason
The buyer updates the INR reason code to SNAD or Unauthorized.
Test steps | PayPal actions | Client actions |
---|---|---|
|
PayPal sends the dispute updated webhook with new reason code. |
The client receives the |
Dispute resolved webhook
The merchant can test the following scenarios:
Buyer cancels dispute
The buyer cancels a dispute in resolution center.
Test steps | PayPal actions | Client actions |
---|---|---|
|
The action succeeds and PayPal sends the dispute resolved webhook. |
The client receives the |
Dispute case close (buyer wins)
The PayPal agent settles the case in the buyer's favor.
Test steps | PayPal actions | Client actions |
---|---|---|
|
The action succeeds and PayPal sends the dispute resolved webhook. |
The client receives the |
Dispute case close (merchant wins)
The PayPal agent settles the case in the merchant's favor.
Test steps | PayPal actions | Client actions |
---|---|---|
|
The action succeeds and PayPal sends the dispute resolved webhook. |
The client receives the |
Identify unique webhook through webhook ID
Client can use webhook ID in dispute webhooks to identify a duplicated webhook.
Test steps | PayPal actions | Client actions |
---|---|---|
|
The unique ID is available in the webhook payload. The client can identify the webhook uniquely through the webhook ID. |