Disputes acceptance test criteria

DocsCurrent

Last updated: Nov 20th, 10:51am

Learn about the acceptance test criteria to test your Disputes API integration. For concepts, see Disputes Overview.

Terminology used:

  • SNAD: Significantly Not As Described
  • INR: Item Not Received

To perform various actions as a buyer to test the updated webhooks, wait a few minutes after creation for the action to be available.

Dispute created webhook

Inquiry Stage

PayPal SNAD case

The customer chooses a completed transaction to open an SNAD case.

Test steps PayPal actions Client actions
  1. Merchant opted in the dispute phase.
  2. Log in to the PayPal resolution center using buyer credentials.
  3. Open a SNAD case.

The action succeeds and the dispute created webhook is sent.

  1. The client receives the CUSTOMER.DISPUTE.CREATED webhook.
  2. The show dispute details call returns the dispute details with the MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED reason.
  3. The dispute lifecycle stage is INQUIRY.

PayPal INR case

The customer chooses a completed transaction to open an INR case.

Test steps PayPal actions Client actions
  1. Merchant opted in the dispute phase.
  2.  Log in to the PayPal resolution center using buyer credentials.
  3. Open an INR case.

The action succeeds and the dispute created webhook is sent.

  1. The client receives the CUSTOMER.DISPUTE.CREATED webhook.
  2. The show dispute details call returns dispute details with the MERCHANDISE_OR_SERVICE_NOT_RECEIVED reason.
  3. The dispute lifecycle stage is INQUIRY.

Claim stage

PayPal SNAD case

The customer chooses a completed transaction to open an SNAD case.

Test steps PayPal actions Client actions
  1. Merchant opts out of dispute phase.
  2. Log in to the PayPal resolution center.
  3. Open an SNAD case.

The action succeeds and the dispute created webhook is sent.

  1. The client receives the CUSTOMER.DISPUTE.CREATED webhook.
  2. The show dispute details call returns dispute details with MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED reason.
  3. Dispute lifecycle stage is CHARGEBACK.

PayPal INR case

The customer chooses a completed transaction to open an INR case.

Test steps PayPal actions Client actions
  1. Merchant opts out of dispute phase.
  2. Log in to the PayPal resolution center.
  3. Open an INR case.

The action succeeds and the dispute created webhook is sent.

  1. The client receives the CUSTOMER.DISPUTE.CREATED webhook.
  2. The show dispute details call returns dispute details with the MERCHANDISE_OR_SERVICE_NOT_RECEIVED reason.
  3. Dispute lifecycle stage is CHARGEBACK.

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
  1. Log in to the PayPal resolution center.
  2. Open an unauthorized case.

The action succeeds and the dispute created webhook is sent.

  1. The client receives the CUSTOMER.DISPUTE.CREATED webhook.
  2. The show dispute details call returns dispute details with the UNAUTHORISED reason.

PayPal transaction error dispute case

Six different reason codes are applicable for transaction error disputes.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center.
  2. Open a case with the CREDIT_NOT_PROCESSED, DUPLICATE_TRANSACTION, INCORRECT_AMOUNT, PAYMENT_BY_OTHER_MEANS, CANCELED_RECURRING_BILLING, or OTHER reason code on the completed transaction.

The action succeeds and the dispute created webhook is sent.

  1. The client receives the CUSTOMER.DISPUTE.CREATED webhook.
  2. The show dispute details call returns dispute details with CREDIT_NOT_PROCESSED, DUPLICATE_TRANSACTION, INCORRECT_AMOUNT, PAYMENT_BY_OTHER_MEANS, CANCELED_RECURRING_BILLING, or OTHER reason code.

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
  1. Log in to the PayPal resolution center.
  2. using buyer credentials.
  3. Duplicate dispute creation for a transaction is blocked, set adjudication_outcome to BUYER_FAVOR.
  4. Check whether the buyer can open a dispute for the transaction.

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

Customer sends a message to the merchant

The customer sends message to the merchant for INR or SNAD dispute in the INQUIRY phase.

Test steps PayPal actions Client actions
  1. Merchant opts into the dispute phase.
  2. Log in to the PayPal resolution center using buyer credentials.
  3. Open an INR or SNAD case.
  4. Send a message through the resolution center.

PayPal sends dispute updated webhook with the message details

The client receives the CUSTOMER.DISPUTE.UPDATED webhook and updates its internal system accordingly.

Claim stage

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
  1. Merchant opts out of the dispute phase.
  2. Log in to the PayPal resolution center using buyer credentials.
  3. Open a SNAD dispute on the PayPal side.
  4. Client calls accept claim with return shipping address.
  5. The customer provides the tracking number through the PayPal Resolution Center.
  6. The dispute updated webhook is triggered.

PayPal sends the dispute updated webhook.

  1. The client receives the CUSTOMER.DISPUTE.UPDATED webhook.
  2. The return tracking information is available in the Show dispute details API response.

Change reason

The customer updates the INR reason code to SNAD or Unauthorized.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a dispute INR case on the PayPal side.
  3. Click on Change case type and update the reason to SNAD/UNAUTHORISED.

PayPal sends the dispute updated webhook with new reason code.

The client receives the CUSTOMER.DISPUTE.UPDATED webhook from PayPal and updates the reason code accordingly.

Dispute resolved webhook

Customer cancels dispute

The customer cancels a dispute in resolution center.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a dispute.
  3. Click on Close this case and cancel the dispute.

The action succeeds and PayPal sends the dispute resolved webhook.

The client receives the CUSTOMER.DISPUTE.RESOLVED webhook.

Dispute case close (customer wins)

The PayPal agent settles the case in the customer's favor.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials
  2. Open a dispute.
  3. Call settle dispute in the sandbox. To settle the case in the customer's favour, set adjudication_outcome to BUYER_FAVOR.

The action succeeds and PayPal sends the dispute resolved webhook.

The client receives the CUSTOMER.DISPUTE.RESOLVED webhook.

Dispute case close (merchant wins)

The PayPal agent settles the case in the merchant's favor.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a dispute.
  3. Call settle dispute in the sandbox. To settle the case in the customer's favour, set adjudication_outcome to SELLER_FAVOR.

The action succeeds and PayPal sends the dispute resolved webhook.

The client receives the CUSTOMER.DISPUTE.RESOLVED webhook.

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
  1. Open a dispute through PayPal resolution center.
  2. Listen to the dispute webhooks - CUSTOMER.DISPUTE.CREATED, CUSTOMER.DISPUTE.RESOLVED, CUSTOMER.DISPUTE.UPDATE.

The unique ID is available in the webhook payload. The client can identify the webhook uniquely through the webhook ID.

Merchant response – Inquiry Stage

The merchant can send a message to the buyer, provide evidence, make an offer, or accept the claim on a dispute in the inquiry phase.

Prerequisite: The merchant should have opted in for the dispute phase.

Send Message

PayPal SNAD case

The customer chooses a completed transaction to open a SNAD case. The merchant can reply to the customer through the "send message" option for that dispute.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a SNAD case.
  3. The client calls Show dispute details.
  4. Check if send message action is allowed in HATEOAS links.
  5. The client calls Send message.

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 customer chooses a completed transaction to open an INR case. Merchants can reply to the customer through the "send message" option for that dispute.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a INR case.
  3. The client calls Show dispute details.
  4. Check if send message action is allowed in HATEOAS links.
  5. The client calls Send message.

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

Each API call succeeds and the merchant message is visible in Show dispute details.

To determine whether to call provide evidence, accept claim, make offer, acknowledge item return or appeal API, the client must check whether the corresponding HATEOAS link is available in the links section of the Show dispute details response. The client can check the seller_response_due_date to determine the deadline by which the merchant must respond to the dispute.

Refund with return – SNAD case

The customer chooses a completed transaction to open a SNAD case. The merchant can make an offer to the customer to return the item for a refund.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a SNAD case.
  3. The client calls Show dispute details.
  4. Verify that make offer action is allowed in HATEOAS links.
  5. The client calls Make offer and shares the amount the merchant is willing to refund to the customer as seller_offered_amount and offer type as REFUND_WITH_RETURN together with the the shipping address.

Each API call succeeds and seller_offered_amount and offer type is visible in Show dispute details.

Each API call succeeds and seller_offered_amount is visible in Show dispute details.

Refund with replacement – SNAD case

The customer selects a completed transaction to open a SNAD case. The merchant can offer the customer a replacement item along with a refund.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a SNAD case.
  3. The client calls Show dispute details.
  4. Verify that make offer action is allowed in HATEOAS links.
  5. The client calls make-offer and shares the amount the merchant is willing to refund to the customer as seller_offered_amount and offer type as REFUND_WITH_REPLACEMENT.

Each API call succeeds and seller_offered_amount and offer type is visible in Show dispute details.

Each API call succeeds and seller_offered_amount is visible in Show dispute details.

Replacement without refund – SNAD case

IThe customer chooses a completed transaction to open a SNAD case. The merchant can make an offer to the customer to replace the item to amicably resolve the case.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a SNAD case.
  3. The client calls Show dispute details.
  4. Verify that make offer action is allowed in HATEOAS links.
  5. The client calls make-offer and shares the amount the merchant is willing to refund to the customer as seller_offered_amount and offer type as REPLACEMENT_WITHOUT_REFUND.

Each API call succeeds and returns expected response.

Each API call succeeds and seller_offered_amount is visible in Show dispute details.

PayPal INR case

The customer chooses a completed transaction to open an INR case. Merchants can make an offer to the customer to amicably resolve the dispute

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open an INR case.
  3. The client calls Show dispute details.
  4. Verify that make offer action is allowed in HATEOAS links.
  5. The client calls make-offer and shares the amount the merchant is willing to refund to the customer as seller_offered_amount and offer type as REFUND.

Each API call succeeds and seller_offered_amount and offer type is visible in the Show dispute details.

Each API call succeeds and seller_offered_amount is visible in Show dispute details.

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
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a SNAD case.
  3. The client calls Show dispute details.
  4. Verify that make offer action is allowed in HATEOAS links.
  5. The client calls make-offer and shares the amount the merchant is willing to refund to the customer as seller_offered_amount and offer type as REFUND_WITH_RETURN along with the return shipping address.
  6. Log in to the PayPal resolution center using buyer credentials.
  7. Accept the merchant's offer.
  8. Add the return tracking information.
  9. The client calls Show dispute details.
  10. Verify that acknowledge item return action is allowed in HATEOAS links.
  11. The client calls Acknowledge returned item API.

Each API call succeeds.

Each API call succeeds.

Provide Evidence

PROOF_OF_FULFILLMENT evidence

PayPal enables client to provide tracking information for INR cases.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open an INR case.
  3. The client calls Show dispute details.
  4. Verify whether provide evidence link is available and if the evidences section contains evidence type PROOF_OF_FULFILLMENT with source as REQUESTED_FROM_SELLER.
  5. Call the provide evidence api with evidence type as PROOF_OF_FULFILLMENT along with the tracking information.

Each API call succeeds.

Each API call succeeds.

PROOF_OF_REFUND evidence

PayPal helps the client to provide refund information for the dispute cases.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open the dispute on the PayPal side.
  3. The client calls Show dispute details.
  4. Verify whether provide evidence link is available and if the evidences section contains evidence type PROOF_OF_REFUND with source as REQUESTED_FROM_SELLER.
  5. Call the provide evidence api with evidence type as PROOF_OF_REFUND along with the refund ids.

Each API call succeeds.

Each API call succeeds.

OTHER evidence

PayPal helps the client to provide multiple photos, materials, and files as evidence for the cases.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open the dispute on the PayPal side.
  3. The client calls Show dispute details.
  4. Verify whether provide evidence link is available and if the evidences section contains evidence type OTHER with source as REQUESTED_FROM_SELLER.
  5. Call the provide evidence API with evidence type as OTHER along with the notes or documents.

Each API call succeeds.

Each API call succeeds.

Accept claim

Client accepts to refund the requested dispute amount to customer

If the client decides not to dispute the case, they can accept the claim to refund the customer.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open the dispute on the PayPal side.
  3. The client calls Show dispute details.
  4. Verify whether accept claim action is allowed.
  5. Call the accept claim API.

Each API call succeeds and returns the expected response.

Each API call succeeds and returns the expected response. The client receives the CUSTOMER.DISPUTE.RESOLVED webhook. A refund amount is available in the outcome.

Escalate

PayPal SNAD case

The customer chooses a completed transaction to open a SNAD case. The merchant escalates the case because they cannot reach an amicable resolution with the customer.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a SNAD case.
  3. The client calls Show dispute details.
  4. Verify that escalate action is allowed in HATEOAS links.
  5. The client calls escalates and shares the merchant's notes with PayPal for further action.

Each API call succeeds, and the dispute lifecycle stage is updated from INQUIRY to CHARGEBACK and is visible in show dispute details. The system also triggers CUSTOMER.DISPUTE.UPDATED.

Each API call succeeds, and the dispute lifecycle stage is updated from INQUIRY to CHARGEBACK and is visible in show dispute details. The client receives the CUSTOMER.DISPUTE.UPDATED webhook.

PayPal INR case

The customer chooses a completed transaction to open an INR case. The merchant escalates the case as they cannot reach an amicable resolution with the customer.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open an INR case.
  3. The client calls Show dispute details.
  4. Verify that escalate action is allowed in HATEOAS links.
  5. The client calls escalates and shares the merchant's notes with PayPal for further action.

Each API call succeeds, and the dispute lifecycle stage is updated from INQUIRY to CHARGEBACK and is visible in show dispute details. The system also triggers CUSTOMER.DISPUTE.UPDATED.

Each API call succeeds, and the dispute lifecycle stage is updated from INQUIRY to CHARGEBACK and is visible in show dispute details. The client receives the CUSTOMER.DISPUTE.UPDATED webhook.

Merchant response - Claim stage

The merchant can provide evidence or accept a claim on a dispute in the Claim phase.

Prerequisite: The merchant should have opted out of the dispute phase.

Provide evidence

PROOF_OF_FULFILLMENT evidence

PayPal helps the client to provide tracking information for INR cases.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open an INR case.
  3. The client calls Show dispute details.
  4. Verify whether provide evidence link is available and if the evidences section contains evidence type PROOF_OF_FULFILLMENT with source as REQUESTED_FROM_SELLER.
  5. Call the provide evidence API with evidence type as PROOF_OF_FULFILLMENT along with the tracking information.

Each API call succeeds.

Each API call succeeds.

PROOF_OF_REFUND evidence

PayPal helps the client to provide refund information for the cases.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a dispute on the PayPal side.
  3. The client calls Show dispute details.
  4. Verify whether provide evidence link is available and if the evidences section contains evidence type PROOF_OF_REFUND with source as REQUESTED_FROM_SELLER.
  5. Call the provide evidence API with evidence type as PROOF_OF_REFUND along with the refund ids.
  6. .

Each API call succeeds.

Each API call succeeds.

OTHER evidence

PayPal helps the client to provide multiple photos, materials, and files as evidence for the cases.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a dispute on the PayPal side.
  3. The client calls Show dispute details.
  4. Verify whether provide evidence link is available and if the evidences section contains evidence type OTHER with source as REQUESTED_FROM_SELLER.
  5. Call the provide evidence API with evidence type as OTHER along with the notes or documents.

Each API call succeeds.

Each API call succeeds.

Accept claim

Client accepts to refund requested dispute amount to customer

If the client decides not to dispute the case, the client can accept the claim to refund the customer.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a dispute on the PayPal side.
  3. The client calls Show dispute details.
  4. Check whether the accept claim link is available in the links section.
  5. The client calls accept claim.

Each API call succeeds and returns the expected response.

Each API call succeeds and returns the expected response. The client receives the CUSTOMER.DISPUTE.RESOLVED webhook. A refund amount is available in the outcome.

Client accepts claim to refund customer if customer returns item to specified address

If the case is SNAD, the client can refund the customer for returning the item.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a SNAD dispute.
  3. The client calls show dispute details.
  4. Check whether the accept claim link is available in the links section.
  5. The client calls accept claim with return shipping address.
  6. The customer provides the tracking number through the PayPal Resolution Center.
  7. The CUSTOMER.DISPUTE.UPDATED is triggered.
  8. To get tracking information, the client calls show dispute details.

The tracking information is returned in show dispute details.

The client can get tracking information in show dispute details and update the case.

Client agrees to refund customer a different amount from the disputed amount (partial refund)

If the case is SNAD, the client can refund the customer for an amount less than the customer's requested refund for returning the item.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a SNAD dispute.
  3. The client calls Show dispute details.
  4. Check whether the accept claim link is available in the links section.
  5. The client calls accept claim with an explicit refund amount and return shipping address.

Each API call succeeds and returns the expected response.

Each API call succeeds.
If the refund amount is greater than or equal to the customer-requested disputed amount, the case is resolved, and the client receives the CUSTOMER.DISPUTE.RESOLVED webhook.
If the amount is less than the customer-requested dispute amount, it triggers an email to a customer seeking their consent in the resolution center.

Appeal dispute

Appeal with PROOF_OF_FULFILLMENT

If the case is decided against the merchant, the client can appeal the dispute by providing fulfillment information for INR, Unauthorized, or other cases.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a dispute.
  3. Resolve the case against the merchant. Call settle dispute with adjudication_outcome as BUYER_FAVOR.
  4. The client calls Show dispute details.
  5. Check whether appeal dispute is allowed in HATEOAS links.
  6. The client calls the appeal dispute API with evidence type as PROOF_OF_FULFILLMENT along with the tracking information.

Each API call succeeds.

Each API call succeeds.

Appeal with PROOF_OF_REFUND

If the case is decided against the merchant, the client can appeal the dispute by providing refund information for all reason codes.

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a dispute.
  3. Resolve the case against the merchant. Call settle dispute with adjudication_outcome as BUYER_FAVOR.
  4. The client calls Show dispute details.
  5. Check whether appeal dispute is allowed in HATEOAS links.
  6. The client calls the appeal dispute API with evidence type as PROOF_OF_REFUND along with the refund ids.

Each API call succeeds.

Each API call succeeds.

Appeal with OTHER evidence

Test steps PayPal actions Client actions
  1. Log in to the PayPal resolution center using buyer credentials.
  2. Open a dispute.
  3. Resolve the case against the merchant. Call settle dispute with adjudication_outcome as BUYER_FAVOR.
  4. The client calls Show dispute details.
  5. Check whether appeal dispute is allowed in HATEOAS links.
  6. The client calls the appeal dispute API with evidence type as OTHER.

Each API call succeeds.

Each API call succeeds.

We use cookies to improve your experience on our site. May we use marketing cookies to show you personalized ads? Manage all cookies