Customer Disputes API

Occasionally, something goes wrong with a customer's order. To dispute a charge, a customer can create a dispute with PayPal. PayPal merchants, partners, and external developers can use the PayPal Customer Disputes API to manage customer disputes.
Note: Merchants cannot create disputes but can only respond to customer-created disputes.

A customer can also ask his or her bank or credit card company to dispute and reverse a charge, which is known as a chargeback. For more information, see Disputes, claims, chargebacks, and bank reversals.

When a customer disputes a charge, you can use this API to provide evidence that the charge is legitimate. To provide evidence or appeal a dispute, you submit a proof of delivery or proof of refund document or notes, which can include logs.

Normally, an agent at PayPal updates the status of disputes and settles them, but now you can run test cases in the sandbox that complete these operations.

For details, see Customer Disputes Integration Guide and the Marketplace Disputes Integration Guide.

Disputes (resource group)

Use the /customer/disputes/ resource to list disputes, show dispute details, send a message to the other party, make an offer to resolve a dispute, escalate a dispute to a claim, provide evidence, accept a claim, and appeal a dispute. Normally, an agent at PayPal updates the status of disputes and settles them, but now you can run test cases in the sandbox that update the dispute status and settle disputes.

List disputes

GET /v1/customer/disputes
Lists disputes with a full or summary set of details. Default is a summary set of details, which shows the dispute_id, reason, status, dispute_amount, create_time, and update_time fields.

To filter the disputes in the response, specify one or more optional query parameters. To limit the number of disputes in the response, specify the page_size query parameter.

To list multiple disputes, set these query parameters in the request:
  • page_size=2
  • start_time instead of disputed_transaction_id

If the response contains more than two disputes, it lists two disputes and includes a HATEOAS link to the next page of results.

Query parameters

  • start_time

    string

    Filters the disputes in the response by a creation date and time. The start time must be within the last 180 days. Value is in Internet date and time format. For example, yyyy-MM-ddTHH:mm:ss.SSSZ.

    You can specify either but not both the start_time and disputed_transaction_id query parameter. If you omit the start time, default is the current date and time.
  • disputed_transaction_id

    string

    Filters the disputes in the response by a transaction, by ID.

    You can specify either but not both the start_time and disputed_transaction_id query parameter.
  • page_size

    integer

    Limits the number of disputes in the response to this value.

    Default: 10.

    Minimum value: 1.

    Maximum value: 50.

  • next_page_token

    string

    The token that describes the next page of results to fetch. The list disputes call returns this token in the HATEOAS links in the response. If you omit this parameter, the API returns the first page of data.
  • dispute_state

    enum

    Filters the disputes in the response by a state. The allowed values are:
    • REQUIRED_ACTION: Filters the disputes in the response in REQUIRED_ACTION dispute_state
    • REQUIRED_OTHER_PARTY_ACTION: Filters the disputes in the response in REQUIRED_OTHER_PARTY_ACTION state
    • UNDER_PAYPAL_REVIEW: Filters the disputes in the response in UNDER_PAYPAL_REVIEW state
    • RESOLVED: Filters the disputes in the response in RESOLVED state
    • OPEN_INQUIRIES: Filters the disputes in the response in OPEN_INQUIRIES state

Sample Request

curl -v -X GET https://api.sandbox.paypal.com/v1/customer/disputes?disputed_transaction_id=965038709E474252Y \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token"

Response

A successful request returns the HTTP 200 OK status code and a JSON response body that lists disputes with a full or summary set of details. Default is a summary set of details, which shows the dispute_id, reason, status, dispute_amount, create_time, and update_time fields for each dispute.
  • items

    array (contains the dispute object)

    An array of disputes that match the filter criteria. Sorted from latest to earliest creation time order.
  • links

    array (contains the link_description object)

    An array of request-related HATEOAS links.

    Read only.

Sample Response

{
  "items": [
    {
      "dispute_id": "PP-000-003-648-051",
      "create_time": "2017-01-24T05:54:03.000Z",
      "update_time": "2017-01-26T09:61:11.000Z",
      "disputed_transactions": [
        {
          "buyer_transaction_id": "965038709E474252Y",
          "seller_transaction_id": "3VU62368U29897744",
          "create_time": "2017-01-24T05:52:11.000Z",
          "transaction_status": "COMPLETED",
          "gross_amount": {
            "currency_code": "GBP",
            "value": "10.00"
          },
          "buyer": {
            "email": "buyer@example.com",
            "name": "June Buyer"
          },
          "seller": {
            "email": "merchant@example.com",
            "merchant_id": "MDLV8MPZEEXVJ",
            "name": "Total Attraction"
          }
        }
      ],
      "reason": "MERCHANDISE_OR_SERVICE_NOT_RECEIVED",
      "status": "RESOLVED",
      "dispute_amount": {
        "currency_code": "GBP",
        "value": "10.00"
      },
      "dispute_outcome": {
        "outcome_code": "RESOLVED_SELLER_FAVOUR"
      },
      "links": [
        {
          "href": "https://api.sandbox.paypal.com/v1/customer/disputes/PP-000-003-648-051",
          "rel": "self",
          "method": "GET"
        }
      ]
    }
  ],
  "links": [
    {
      "href": "https://api.sandbox.paypal.com/v1/customer/disputes?disputed_transaction_id=965038709E474252Y",
      "rel": "self",
      "method": "GET"
    },
    {
      "href": "https://api.sandbox.paypal.com/v1/customer/disputes?disputed_transaction_id=965038709E474252Y",
      "rel": "first",
      "method": "GET"
    }
  ]
}

Show dispute details

GET /v1/customer/disputes/{dispute_id}
Shows details for a dispute, by ID.
Note: The fields that appear in the response depend on whether you access this call through first- or third-party access. For example, if the merchant shows dispute details through third-party access, the customer's email ID does not appear.

Path parameters

  • dispute_id

    string

    required

    The ID of the dispute for which to show details.

Sample Request

curl -v -X GET https://api.sandbox.paypal.com/v1/customer/disputes/PP-000-003-648-191 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token"

Response

A successful request returns the HTTP 200 OK status code and a JSON response body with dispute details.
  • dispute_id

    string

    The ID of the dispute.

    Read only.

  • create_time

    string

    The date and time when the dispute was created, in Internet date and time format. For example, yyyy-MM-ddTHH:mm:ss.SSSZ.

    Read only.

    Minimum length: 20.

    Maximum length: 64.

    Pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])[T,t]([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)([.][0-9]+)?([Zz]|[+-][0-9]{2}:[0-9]{2})$.

  • update_time

    string

    The date and time when the dispute was last updated, in Internet date and time format. For example, yyyy-MM-ddTHH:mm:ss.SSSZ.

    Read only.

    Minimum length: 20.

    Maximum length: 64.

    Pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])[T,t]([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)([.][0-9]+)?([Zz]|[+-][0-9]{2}:[0-9]{2})$.

  • disputed_transactions

    array (contains the transaction_info object)

    An array of transactions for which the disputes were created.
  • reason

    enum

    The reason for the item-level dispute. Value is:
    • MERCHANDISE_OR_SERVICE_NOT_RECEIVED. The customer did not receive the merchandise or service.
    • MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED. The customer reports that the merchandise or service is not as described.
    • UNAUTHORISED. The customer did not authorize purchase of the merchandise or service.
    • CREDIT_NOT_PROCESSED. The refund or credit was not processed for the customer.
    • DUPLICATE_TRANSACTION. The transaction was a duplicate.
    • INCORRECT_AMOUNT. The customer was charged an incorrect amount.
    • PAYMENT_BY_OTHER_MEANS. The customer paid for the transaction through other means.
    • CANCELED_RECURRING_BILLING. The customer was being charged for a subscription or a recurring transaction that was canceled.
    • PROBLEM_WITH_REMITTANCE. A problem occurred with the remittance.
    • OTHER. Other.
    For information about the required information for each dispute reason and associated evidence type, see dispute reasons. The possible values are:
    • MERCHANDISE_OR_SERVICE_NOT_RECEIVED: The customer did not receive the merchandise or service
    • MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED: The customer reports that the merchandise or service is not as described
    • UNAUTHORISED: The customer did not authorize purchase of the merchandise or service
    • CREDIT_NOT_PROCESSED: The refund or credit was not processed for the customer
    • DUPLICATE_TRANSACTION: The transaction was a duplicate
    • INCORRECT_AMOUNT: The customer was charged an incorrect amount
    • PAYMENT_BY_OTHER_MEANS: The customer paid for the transaction through other means
    • CANCELED_RECURRING_BILLING: The customer was being charged for a subscription or a recurring transaction that was canceled
    • PROBLEM_WITH_REMITTANCE: A problem occurred with the remittance
    • OTHER: Other
  • status

    enum

    The status of the dispute. Value is:
    • OPEN. Open.
    • WAITING_FOR_BUYER_RESPONSE. The dispute is waiting for a response from the customer.
    • WAITING_FOR_SELLER_RESPONSE. The dispute is waiting for a response from the merchant.
    • UNDER_REVIEW. The dispute is under review with PayPal.
    • RESOLVED. The dispute is resolved.
    • OTHER. This is a default status if the dispute cannot be mapped to one of the other statuses.
    The possible values are:
    • OPEN: The dispute is in OPEN status
    • WAITING_FOR_BUYER_RESPONSE: The dispute is waiting for a response from the customer
    • WAITING_FOR_SELLER_RESPONSE: The dispute is waiting for a response from the merchant
    • UNDER_REVIEW: The dispute is under review with PayPal
    • RESOLVED: The dispute is resolved
    • OTHER: This is a default status if the dispute cannot be mapped to one of the other statuses

    Read only.

  • dispute_amount

    object

    The amount in the transaction that the customer originally disputed. Because customers can sometimes dispute only part of the payment, the disputed amount might be different from the total gross or net amount of the original transaction.
  • dispute_outcome

    object

    The outcome of a dispute.

    Read only.

  • dispute_life_cycle_stage

    enum

    The stage in the dispute lifecycle. Value is:
    • INQUIRY. A customer and merchant interact to resolve a dispute without escalation to PayPal. A dispute occurs when:
      • A customer has not received goods or a service.
      • The received goods or service are not as described.
      • The customer needs more details, such as a copy of the transaction or a receipt.
    • CHARGEBACK. A customer or merchant escalates an inquiry to a claim, which authorizes PayPal to investigate the case and make a determination. Occurs only when the dispute channel is INTERNAL. This stage is a PayPal dispute lifecycle stage and is not a credit card or debit card chargeback. All notes that the customer sends in this stage are visible to PayPal agents only. The customer must wait for PayPal’s response before he or she can take further action. In this stage, PayPal shares dispute details with the merchant, who can complete one of these actions:
      • Accept the claim.
      • Submit evidence to challenge the claim.
      • Make an offer to the customer to resolve the claim.
    • PRE_ARBITRATION. The first appeal stage for merchants. A merchant can appeal a chargeback if PayPal's decision is not in the merchant's favor. If the merchant does not appeal within the appeal period, PayPal considers the case resolved.
    • ARBITRATION. The second appeal stage for merchants. A merchant can appeal a dispute for a second time if PayPal denies the first appeal. If the merchant does not appeal within the appeal period, the case returns to a resolved status in the pre-arbitration stage.
    The possible values are:
    • INQUIRY: A customer and merchant interact in an attempt to resolve a dispute without escalation to PayPal. Occurs when a customer has not received goods or a service, the goods or service are not as described, or the customer needs additional details on a transaction, such as a copy of the transaction or a receipt
    • CHARGEBACK: This stage occurs when a customer or merchant escalates an inquiry to a claim. Claims give PayPal the authority to investigate the case and determine an outcome if the dispute channel is `INTERNAL`. This state is a PayPal dispute lifecycle stage and is not to be interpreted as a credit card or debit card charge back
    • PRE_ARBITRATION: The first appeal stage for merchants. A merchant can appeal a charge back if a decision is not in the merchant's favor. If the merchant does not appeal within the appeal period, the case is considered resolved
    • ARBITRATION: The second appeal stage for merchants. A merchant can appeal a dispute for a second time if the first appeal was denied. If the merchant does not appeal within the appeal period, the case returns to a resolved status in pre-arbitration stage

    Read only.

  • dispute_channel

    enum

    The channel where the dispute was created. Value is:
    • INTERNAL. Dispute was created through PayPal.
    • EXTERNAL. Dispute was created through an external channel, such as the customer's bank.
    The possible values are:
    • INTERNAL: If the buyer contacts the seller directly through PayPal to file a dispute, channel is INTERNAL
    • EXTERNAL: If the buyer contacts their card issuer or bank to request a refund, channel is EXTERNAL

    Read only.

  • messages

    array (contains the message object)

    An array of messages that the customer or merchant posted.
  • seller_response_due_date

    string

    The date and time by when the merchant must respond to the dispute, in Internet date and time format. If the merchant does not respond by this date and time, the dispute is closed in the customer's favor. For example, yyyy-MM-ddTHH:mm:ss.SSSZ.

    Read only.

    Minimum length: 20.

    Maximum length: 64.

    Pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])[T,t]([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)([.][0-9]+)?([Zz]|[+-][0-9]{2}:[0-9]{2})$.

  • offer

    object

    The merchant-proposed offer for a dispute.

    Read only.

  • links

    array (contains the link_description object)

    An array of request-related HATEOAS links.

    Read only.

Sample Response

{
  "dispute_id": "PP-000-003-648-191",
  "create_time": "2017-01-24T10:41:35.000Z",
  "update_time": "2017-01-24T11:40:32.000Z",
  "disputed_transactions": [
    {
      "buyer_transaction_id": "965038709E474252Y",
      "seller_transaction_id": "3VU62368U29897744",
      "create_time": "2017-01-24T05:52:11.000Z",
      "transaction_status": "COMPLETED",
      "gross_amount": {
        "currency_code": "USD",
        "value": "50.00"
      },
      "buyer": {
        "email": "buyer@example.com",
        "name": "June Buyer"
      },
      "seller": {
        "email": "merchant@example.com",
        "merchant_id": "MDLV8MPZEEXVJ",
        "name": "Total Attraction"
      }
    }
  ],
  "reason": "MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED",
  "status": "WAITING_FOR_SELLER_RESPONSE",
  "dispute_amount": {
    "currency_code": "USD",
    "value": "50.00"
  },
  "offer": {
    "buyer_requested_amount": {
      "currency_code": "USD",
      "value": "50.00"
    }
  },
  "links": [
    {
      "href": "https://api.sandbox.paypal.com/v1/customer/disputes/PP-000-003-648-191",
      "rel": "self",
      "method": "GET"
    }
  ]
}

Accept claim

POST /v1/customer/disputes/{dispute_id}/accept-claim
Accepts liability for a claim, by ID, which closes the dispute in the customer’s favor. PayPal automatically refunds money to the customer from the merchant's account.

Path parameters

  • dispute_id

    string

    required

    The ID of the dispute for which to accept a claim.

Request body

  • note

    string

    The merchant's notes about the claim. PayPal can, but the customer cannot, view these notes.

    Minimum length: 1.

    Maximum length: 2000.

  • accept_claim_reason

    enum

    The merchant's reason for acceptance of the customer's claim. The allowed values are:
    • DID_NOT_SHIP_ITEM: Merchant is accepting customer's claim as they could not ship the item back to the customer
    • TOO_TIME_CONSUMING: Merchant is accepting customer's claim as it is taking too long for merchant to fulfil the order
    • LOST_IN_MAIL: Merchant is accepting customer's claim as the item is lost in mail or transit
    • NOT_ABLE_TO_WIN: Merchant is accepting customer's claim as the merchant is not able to find sufficient evidence to win this dispute
    • COMPANY_POLICY: Merchant is accepting customer’s claims to follow their internal company policy
    • REASON_NOT_SET: This is the default value merchant can use if none of the above reasons apply
  • invoice_id

    string

    The merchant-provided ID of the invoice for the refund. This optional value is used to map the refund to an invoice ID in the merchant's system.
  • return_shipping_address

    object

    The return address for the item.

    Required when the customer must return an item to the merchant for the MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED dispute reason, especially if the refund amount is less than the dispute amount.
  • refund_amount

    object

    To accept a customer's claim, the amount that the merchant agrees to refund the customer. The subsequent action depends on the amount:
    • If this amount is less than the customer-requested amount, the dispute updates to require customer acceptance.
    • If this amount is equal to or greater than the customer-requested amount, this amount is automatically refunded to the customer and the dispute closes.

Sample Request

curl -v -X POST https://api.sandbox.paypal.com/v1/customer/disputes/PP-D-27803/accept-claim \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token" \
-d '{
  "note": "Refund to the customer."
}'

Response

A successful request returns the HTTP 200 OK status code and a JSON response body that includes a link to the dispute.

Sample Response

{
  "links": [
    {
      "rel": "self",
      "method": "GET",
      "href": "https://api.sandbox.paypal.com/v1/customer/disputes/PP-D-27803"
    }
  ]
}

Settle dispute

POST /v1/customer/disputes/{dispute_id}/adjudicate
Sandbox only. Settles a dispute in either the customer's or merchant's favor. Merchants can make this call in the sandbox to complete end-to-end dispute resolution testing, which mimics the dispute resolution that PayPal agents normally complete. To make this call, the dispute status must be UNDER_REVIEW.

Path parameters

  • dispute_id

    string

    required

    The ID of the dispute to settle.

Request body

  • adjudication_outcome

    enum

    The outcome of the adjudication. The allowed values are:
    • BUYER_FAVOR: This will resolve the case in buyer favor and outcome will be set as RESOLVED_BUYER_FAVOR
    • SELLER_FAVOR: This will resolve the case in seller favor and outcome will be set as RESOLVED_SELLER_FAVOR

Sample Request

curl -v -X POST https://api.sandbox.paypal.com/v1/customer/disputes/PP-D-27803/adjudicate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token" \
-d '{
  "adjudication_outcome": "BUYER_FAVOR"
}'

Response

A successful request returns the HTTP 200 OK status code and a JSON response body that includes a link to the dispute.

Sample Response

{
  "links": [
    {
      "rel": "self",
      "method": "GET",
      "href": "https://api.sandbox.paypal.com/v1/customer/disputes/PP-D-27803"
    }
  ]
}

Appeal dispute

POST /v1/customer/disputes/{dispute_id}/appeal
Appeals a dispute, by ID. To appeal a dispute, use the appeal link in the HATEOAS links from the show dispute details response. If this link does not appear, you cannot appeal the dispute. Submit new evidence as a document or notes in the JSON request body. For information about dispute reasons, see dispute reasons.

Path parameters

  • dispute_id

    string

    required

    The PayPal dispute ID.

Request body

  • evidences

    array (contains the evidence object)

    An array of evidences for the dispute.

Sample Request

curl -v -X POST https://api.sandbox.paypal.com/v1/customer/disputes/PP-D-27803/appeal \
-H "Content-Type: multipart/related" \
-H "Authorization: Bearer Access-Token" \
-F 'input={
  "evidence_type": "PROOF_OF_FULFILLMENT",
  "evidence_info": {
  "tracking_info": [
    {
    "carrier_name": "FEDEX",
    "tracking_number": "122533485"
    }
  ]
  },
  "notes": "Test"
};type=application/json' \
-F 'file1=@NewDoc.pdf'

Response

A successful request returns the HTTP 200 OK status code and a JSON response body that includes a link to the dispute.

Sample Response

{
  "links": [
    {
      "rel": "self",
      "method": "GET",
      "href": "https://api.sandbox.paypal.com/v1/customer/disputes/PP-D-27803"
    }
  ]
}

Escalate dispute to a claim

POST /v1/customer/disputes/{dispute_id}/escalate
Escalates the dispute, by ID, to a PayPal claim. To make this call, the stage in the dispute lifecycle must be INQUIRY.

Path parameters

  • dispute_id

    string

    required

    The ID of the dispute to escalate to a claim.

Request body

  • note

    string

    required

    The notes about the escalation of the dispute to a claim.

    Minimum length: 1.

    Maximum length: 2000.

Sample Request

curl -v -X POST https://api.sandbox.paypal.com/v1/customer/disputes/PP-000-000-651-454/escalate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token" \
-d '{
  "note": "Escalating to PayPal claim for resolution."
}'

Response

A successful request returns the HTTP 200 OK status code and a JSON response body that includes a link to the dispute.

Sample Response

{
  "links": [
    {
      "rel": "self",
      "method": "GET",
      "href": "https://api.sandbox.paypal.com/v1/customer/disputes/PP-000-000-651-454"
    }
  ]
}

Make offer to resolve dispute

POST /v1/customer/disputes/{dispute_id}/make-offer
Makes an offer to the other party to resolve a dispute, by ID. To make this call, the stage in the dispute lifecycle must be INQUIRY. If the customer accepts the offer, PayPal automatically makes a refund.

Path parameters

  • dispute_id

    string

    required

    The ID of the dispute for which to make an offer.

Request body

  • note

    string

    required

    The merchant's notes about the offer. PayPal can, but the customer cannot, view these notes.

    Minimum length: 1.

    Maximum length: 2000.

  • offer_amount

    object

    required

    The amount proposed to resolve the dispute.
  • return_shipping_address

    object

    The return address for the item. Required when the customer must return an item to the merchant for the MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED dispute reason, especially if the refund amount is less than the dispute amount.
  • invoice_id

    string

    The merchant-provided ID of the invoice for the refund. This optional value maps the refund to an invoice ID in the merchant's system.
  • offer_type

    object

    required

    The type of offer that the merchant proposes for the dispute.

Sample Request

curl -v -X POST https://api.sandbox.paypal.com/v1/customer/disputes/PP-000-000-651-454/make-offer \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token" \
-d '{
  "note": "Offer refund with replacement item.",
  "offer_amount": {
    "currency_code": "USD",
    "value": "23"
  },
  "offer_type": "REFUND_WITH_REPLACEMENT"
}'

Response

A successful request returns the HTTP 200 OK status code and a JSON response body that includes a link to the dispute.

Sample Response

{
  "links": [
    {
      "rel": "self",
      "method": "GET",
      "href": "https://api.sandbox.paypal.com/v1/customer/disputes/PP-000-000-651-454"
    }
  ]
}

Provide evidence

POST /v1/customer/disputes/{dispute_id}/provide-evidence
Provides evidence for a dispute, by ID. A merchant can provide evidence for disputes with the WAITING_FOR_SELLER_RESPONSE status while customers can provide evidence for disputes with the WAITING_FOR_BUYER_RESPONSE status. Evidence can be a proof of delivery or proof of refund document or notes, which can include logs. A proof of delivery document includes a tracking number while a proof of refund document includes a refund ID. The following rules apply to document file types and sizes:
  • The merchant can upload up to 10 MB of files for a case.
  • Individual files must be smaller than 5 MB.
  • The supported file formats are JPG, GIF, PNG, and PDF.

To make this request, specify the dispute ID in the URI and specify the evidence in the JSON request body. For information about dispute reasons, see dispute reasons.

Path parameters

  • dispute_id

    string

    required

    The ID of the dispute for which to submit evidence.

FormData parameters

  • evidence

    file

    required

    A file with evidence.

Request body

  • evidences

    array (contains the evidence object)

    An array of evidences for the dispute.

Sample Request

curl -v -X POST https://api.sandbox.paypal.com/v1/customer/disputes/PP-D-27803/provide-evidence \
-H "Content-Type: multipart/related; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" \
-H "Authorization: Bearer Access-Token" \
-F 'input={
  "evidence_type": "PROOF_OF_FULFILLMENT",
  "evidence_info": {
  "tracking_info": [
    {
    "carrier_name": "FEDEX",
    "tracking_number": "122533485"
    }
  ]
  },
  "notes": "Test"
};type=application/json' \
-F 'file1=@NewDoc.pdf'

Response

A successful request returns the HTTP 200 OK status code and a JSON response body that includes a link to the dispute.

Sample Response

{
  "links": [
    {
      "rel": "self",
      "method": "GET",
      "href": "https://api.sandbox.paypal.com/v1/customer/disputes/PP-D-27803"
    }
  ]
}

Update dispute status

POST /v1/customer/disputes/{dispute_id}/require-evidence
Sandbox only. Updates the status of a dispute, by ID, from UNDER_REVIEW to either:
  • WAITING_FOR_BUYER_RESPONSE
  • WAITING_FOR_SELLER_RESPONSE
This status change enables either the customer or merchant to submit evidence for the dispute. To make this call, the dispute status must be UNDER_REVIEW. Specify an action value in the JSON request body to indicate whether the status change enables the customer or merchant to submit evidence:
If action isThe status updates to
BUYER_EVIDENCE WAITING_FOR_BUYER_RESPONSE
SELLER_EVIDENCE WAITING_FOR_SELLER_RESPONSE

Path parameters

  • dispute_id

    string

    required

    The ID of the dispute that requires evidence.

Request body

  • action

    enum

    The action. Indicates whether the state change enables the customer or merchant to submit evidence:
    If action isThe state updates to
    BUYER_EVIDENCE WAITING_FOR_BUYER_RESPONSE
    SELLER_EVIDENCE WAITING_FOR_SELLER_RESPONSE
    The allowed values are:
    • BUYER_EVIDENCE: This will change the status of dispute to WAITING_FOR_BUYER_RESPONSE
    • SELLER_EVIDENCE: This will change the status of dispute to WAITING_FOR_SELLER_RESPONSE

Sample Request

curl -v -X POST https://api.sandbox.paypal.com/v1/customer/disputes/PP-D-27803/require-evidence \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token" \
-d '{
  "action": "BUYER_EVIDENCE"
}'

Response

A successful request returns the HTTP 200 OK status code and a JSON response body that includes a link to the dispute.

Sample Response

{
  "links": [
    {
      "rel": "self",
      "method": "GET",
      "href": "https://api.sandbox.paypal.com/v1/customer/disputes/PP-D-27803"
    }
  ]
}

Send message to other party

POST /v1/customer/disputes/{dispute_id}/send-message
Sends a message to the other party in the dispute, by ID.

Path parameters

  • dispute_id

    string

    required

    The ID of the dispute for which to send a message.

Request body

  • message

    string

    required

    The message sent by the merchant to the other party.

Sample Request

curl -v -X POST https://api.sandbox.paypal.com/v1/customer/disputes/PP-000-000-651-454/send-message \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token" \
-d '{
  "message": "Shipment is in progress."
}'

Response

A successful request returns the HTTP 200 OK status code and a JSON response body that includes a link to the dispute.

Sample Response

{
  "links": [
    {
      "rel": "self",
      "method": "GET",
      "href": "https://api.sandbox.paypal.com/v1/customer/disputes/PP-000-000-651-454"
    }
  ]
}

Common object definitions

accept_claim_request

  • note

    string

    The merchant's notes about the claim. PayPal can, but the customer cannot, view these notes.

    Minimum length: 1.

    Maximum length: 2000.

  • accept_claim_reason

    enum

    The merchant's reason for acceptance of the customer's claim. The possible values are:
    • DID_NOT_SHIP_ITEM: Merchant is accepting customer's claim as they could not ship the item back to the customer
    • TOO_TIME_CONSUMING: Merchant is accepting customer's claim as it is taking too long for merchant to fulfil the order
    • LOST_IN_MAIL: Merchant is accepting customer's claim as the item is lost in mail or transit
    • NOT_ABLE_TO_WIN: Merchant is accepting customer's claim as the merchant is not able to find sufficient evidence to win this dispute
    • COMPANY_POLICY: Merchant is accepting customer’s claims to follow their internal company policy
    • REASON_NOT_SET: This is the default value merchant can use if none of the above reasons apply
  • invoice_id

    string

    The merchant-provided ID of the invoice for the refund. This optional value is used to map the refund to an invoice ID in the merchant's system.
  • return_shipping_address

    object

    The return address for the item.

    Required when the customer must return an item to the merchant for the MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED dispute reason, especially if the refund amount is less than the dispute amount.
  • refund_amount

    object

    To accept a customer's claim, the amount that the merchant agrees to refund the customer. The subsequent action depends on the amount:
    • If this amount is less than the customer-requested amount, the dispute updates to require customer acceptance.
    • If this amount is equal to or greater than the customer-requested amount, this amount is automatically refunded to the customer and the dispute closes.

address_details

  • street_number

    string

    The street number.

    Maximum length: 300.

  • street_name

    string

    The street name. Just Drury in Drury Lane.

    Maximum length: 300.

  • street_type

    string

    The street type. For example, avenue, boulevard, road, or expressway.

    Maximum length: 300.

  • delivery_service

    string

    The delivery service. Post office box, bag number, or post office name.

    Maximum length: 300.

  • building_name

    string

    A named locations that represents the premise. Usually a building name or number or collection of buildings with a common name or number. For example, Craven House.

    Maximum length: 300.

  • sub_building

    string

    The first-order entity below a named building or location that represents the sub-premise. Usually a single building within a collection of buildings with a common name. Can be a flat, story, floor, room, or apartment.

    Maximum length: 300.

address_portable

  • address_line_1

    string

    The first line of the address. For example, number or street. For example, 173 Drury Lane. Required for data entry and compliance and risk checks. Must contain the full address.

    Maximum length: 300.

  • address_line_2

    string

    The second line of the address. For example, suite or apartment number.

    Maximum length: 300.

  • address_line_3

    string

    The third line of the address, if needed. For example, a street complement for Brazil, direction text, such as next to Walmart, or a landmark in an Indian address.

    Maximum length: 300.

  • admin_area_4

    string

    The neighborhood, ward, or district. Smaller than admin_area_level_3 or sub_locality. Value is:
    • The postal sorting code that is used in Guernsey and many French territories, such as French Guiana.
    • The fine-grained administrative levels in China.

    Maximum length: 300.

  • admin_area_3

    string

    A sub-locality, suburb, neighborhood, or district. Smaller than admin_area_level_2. Value is:
    • Brazil. Suburb, bairro, or neighborhood.
    • India. Sub-locality or district. Street name information is not always available but a sub-locality or district can be a very small area.

    Maximum length: 300.

  • admin_area_2

    string

    A city, town, or village. Smaller than admin_area_level_1.

    Maximum length: 300.

  • admin_area_1

    string

    The highest level sub-division in a country, which is usually a province, state, or ISO-3166-2 subdivision. Format for postal delivery. For example, CA and not California. Value, by country, is:
    • UK. A county.
    • US. A state.
    • Canada. A province.
    • Japan. A prefecture.
    • Switzerland. A kanton.

    Maximum length: 300.

  • postal_code

    string

    The postal code, which is the zip code or equivalent. Typically required for countries with a postal code or an equivalent. See postal code.

    Maximum length: 60.

  • country_code

    string

    required

    The two-character ISO 3166-1 code that identifies the country or region.
    Note: The country code for Great Britain is GB and not UK as used in the top-level domain names for that country. Use the C2 country code for China worldwide for comparable uncontrolled price (CUP) method, bank card, and cross-border transactions.

    Minimum length: 2.

    Maximum length: 2.

    Pattern: ^([A-Z]{2}|C2)$.

  • address_details

    object

    The non-portable additional address details that are sometimes needed for compliance, risk, or other scenarios where fine-grain address information might be needed. Not portable with common third party and opensource. Redundant with core fields. For example, address_portable.address_line_1 is usually a combination of address_details.street_number and street_name and street_type.

adjudicate_request

  • adjudication_outcome

    enum

    The outcome of the adjudication. The possible values are:
    • BUYER_FAVOR: This will resolve the case in buyer favor and outcome will be set as RESOLVED_BUYER_FAVOR
    • SELLER_FAVOR: This will resolve the case in seller favor and outcome will be set as RESOLVED_SELLER_FAVOR

buyer

  • email

    string

    The email address for the customer's PayPal account.

    Minimum length: 3.

    Maximum length: 254.

    Pattern: ^.+@[^"\-].+$.

  • name

    string

    The customer's name.

cancel_request

  • note

    string

    Optional. A note.

    Maximum length: 1048576.

  • transaction_ids

    array (contains the transaction_id object)

    An array of encrypted transaction IDs for a canceled unauthorized dispute. If you omit this ID for unauthorized disputes, the issue is automatically canceled. Optional for other dispute types.

change_reason_request

  • reason

    object

    The reason for the item-level dispute. Value is:
    • MERCHANDISE_OR_SERVICE_NOT_RECEIVED. The customer did not receive the merchandise or service.
    • MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED. The customer reports that the merchandise or service is not as described.
    • UNAUTHORISED. The customer did not authorize purchase of the merchandise or service.
    • CREDIT_NOT_PROCESSED. The refund or credit was not processed for the customer.
    • DUPLICATE_TRANSACTION. The transaction was a duplicate.
    • INCORRECT_AMOUNT. The customer was charged an incorrect amount.
    • PAYMENT_BY_OTHER_MEANS. The customer paid for the transaction through other means.
    • CANCELED_RECURRING_BILLING. The customer was being charged for a subscription or a recurring transaction that was canceled.
    • PROBLEM_WITH_REMITTANCE. A problem occurred with the remittance.
    • OTHER. Other.
    For information about the required information for each dispute reason and associated evidence type, see dispute reasons.
  • note

    string

    Optional. A note.

    Maximum length: 1048576.

  • transaction_ids

    array (contains the transaction_id object)

    An array of transaction IDs to add to the unauthorized issue.

country_code

  • country_code

    string

    The two-character ISO 3166-1 code that identifies the country or region.
    Note: The country code for Great Britain is GB and not UK as used in the top-level domain names for that country. Use the C2 country code for China worldwide for comparable uncontrolled price (CUP) method, bank card, and cross-border transactions.

    Minimum length: 2.

    Maximum length: 2.

    Pattern: ^([A-Z]{2}|C2)$.

currency_code

date_time

  • date_time

    string

    The date and time, in Internet date and time format. Seconds are required while fractional seconds are optional.
    Note: The regular expression provides guidance but does not reject all invalid dates.

    Minimum length: 20.

    Maximum length: 64.

    Pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])[T,t]([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)([.][0-9]+)?([Zz]|[+-][0-9]{2}:[0-9]{2})$.

dispute

  • dispute_id

    string

    The ID of the dispute.

    Read only.

  • create_time

    string

    The date and time when the dispute was created, in Internet date and time format. For example, yyyy-MM-ddTHH:mm:ss.SSSZ.

    Read only.

    Minimum length: 20.

    Maximum length: 64.

    Pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])[T,t]([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)([.][0-9]+)?([Zz]|[+-][0-9]{2}:[0-9]{2})$.

  • update_time

    string

    The date and time when the dispute was last updated, in Internet date and time format. For example, yyyy-MM-ddTHH:mm:ss.SSSZ.

    Read only.

    Minimum length: 20.

    Maximum length: 64.

    Pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])[T,t]([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)([.][0-9]+)?([Zz]|[+-][0-9]{2}:[0-9]{2})$.

  • disputed_transactions

    array (contains the transaction_info object)

    An array of transactions for which the disputes were created.
  • reason

    enum

    The reason for the item-level dispute. Value is:
    • MERCHANDISE_OR_SERVICE_NOT_RECEIVED. The customer did not receive the merchandise or service.
    • MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED. The customer reports that the merchandise or service is not as described.
    • UNAUTHORISED. The customer did not authorize purchase of the merchandise or service.
    • CREDIT_NOT_PROCESSED. The refund or credit was not processed for the customer.
    • DUPLICATE_TRANSACTION. The transaction was a duplicate.
    • INCORRECT_AMOUNT. The customer was charged an incorrect amount.
    • PAYMENT_BY_OTHER_MEANS. The customer paid for the transaction through other means.
    • CANCELED_RECURRING_BILLING. The customer was being charged for a subscription or a recurring transaction that was canceled.
    • PROBLEM_WITH_REMITTANCE. A problem occurred with the remittance.
    • OTHER. Other.
    For information about the required information for each dispute reason and associated evidence type, see dispute reasons. The possible values are:
    • MERCHANDISE_OR_SERVICE_NOT_RECEIVED: The customer did not receive the merchandise or service
    • MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED: The customer reports that the merchandise or service is not as described
    • UNAUTHORISED: The customer did not authorize purchase of the merchandise or service
    • CREDIT_NOT_PROCESSED: The refund or credit was not processed for the customer
    • DUPLICATE_TRANSACTION: The transaction was a duplicate
    • INCORRECT_AMOUNT: The customer was charged an incorrect amount
    • PAYMENT_BY_OTHER_MEANS: The customer paid for the transaction through other means
    • CANCELED_RECURRING_BILLING: The customer was being charged for a subscription or a recurring transaction that was canceled
    • PROBLEM_WITH_REMITTANCE: A problem occurred with the remittance
    • OTHER: Other
  • status

    enum

    The status of the dispute. Value is:
    • OPEN. Open.
    • WAITING_FOR_BUYER_RESPONSE. The dispute is waiting for a response from the customer.
    • WAITING_FOR_SELLER_RESPONSE. The dispute is waiting for a response from the merchant.
    • UNDER_REVIEW. The dispute is under review with PayPal.
    • RESOLVED. The dispute is resolved.
    • OTHER. This is a default status if the dispute cannot be mapped to one of the other statuses.
    The possible values are:
    • OPEN: The dispute is in OPEN status
    • WAITING_FOR_BUYER_RESPONSE: The dispute is waiting for a response from the customer
    • WAITING_FOR_SELLER_RESPONSE: The dispute is waiting for a response from the merchant
    • UNDER_REVIEW: The dispute is under review with PayPal
    • RESOLVED: The dispute is resolved
    • OTHER: This is a default status if the dispute cannot be mapped to one of the other statuses

    Read only.

  • dispute_amount

    object

    The amount in the transaction that the customer originally disputed. Because customers can sometimes dispute only part of the payment, the disputed amount might be different from the total gross or net amount of the original transaction.
  • dispute_outcome

    object

    The outcome of a dispute.

    Read only.

  • dispute_life_cycle_stage

    enum

    The stage in the dispute lifecycle. Value is:
    • INQUIRY. A customer and merchant interact to resolve a dispute without escalation to PayPal. A dispute occurs when:
      • A customer has not received goods or a service.
      • The received goods or service are not as described.
      • The customer needs more details, such as a copy of the transaction or a receipt.
    • CHARGEBACK. A customer or merchant escalates an inquiry to a claim, which authorizes PayPal to investigate the case and make a determination. Occurs only when the dispute channel is INTERNAL. This stage is a PayPal dispute lifecycle stage and is not a credit card or debit card chargeback. All notes that the customer sends in this stage are visible to PayPal agents only. The customer must wait for PayPal’s response before he or she can take further action. In this stage, PayPal shares dispute details with the merchant, who can complete one of these actions:
      • Accept the claim.
      • Submit evidence to challenge the claim.
      • Make an offer to the customer to resolve the claim.
    • PRE_ARBITRATION. The first appeal stage for merchants. A merchant can appeal a chargeback if PayPal's decision is not in the merchant's favor. If the merchant does not appeal within the appeal period, PayPal considers the case resolved.
    • ARBITRATION. The second appeal stage for merchants. A merchant can appeal a dispute for a second time if PayPal denies the first appeal. If the merchant does not appeal within the appeal period, the case returns to a resolved status in the pre-arbitration stage.
    The possible values are:
    • INQUIRY: A customer and merchant interact in an attempt to resolve a dispute without escalation to PayPal. Occurs when a customer has not received goods or a service, the goods or service are not as described, or the customer needs additional details on a transaction, such as a copy of the transaction or a receipt
    • CHARGEBACK: This stage occurs when a customer or merchant escalates an inquiry to a claim. Claims give PayPal the authority to investigate the case and determine an outcome if the dispute channel is `INTERNAL`. This state is a PayPal dispute lifecycle stage and is not to be interpreted as a credit card or debit card charge back
    • PRE_ARBITRATION: The first appeal stage for merchants. A merchant can appeal a charge back if a decision is not in the merchant's favor. If the merchant does not appeal within the appeal period, the case is considered resolved
    • ARBITRATION: The second appeal stage for merchants. A merchant can appeal a dispute for a second time if the first appeal was denied. If the merchant does not appeal within the appeal period, the case returns to a resolved status in pre-arbitration stage

    Read only.

  • dispute_channel

    enum

    The channel where the dispute was created. Value is:
    • INTERNAL. Dispute was created through PayPal.
    • EXTERNAL. Dispute was created through an external channel, such as the customer's bank.
    The possible values are:
    • INTERNAL: If the buyer contacts the seller directly through PayPal to file a dispute, channel is INTERNAL
    • EXTERNAL: If the buyer contacts their card issuer or bank to request a refund, channel is EXTERNAL

    Read only.

  • messages

    array (contains the message object)

    An array of messages that the customer or merchant posted.
  • seller_response_due_date

    string

    The date and time by when the merchant must respond to the dispute, in Internet date and time format. If the merchant does not respond by this date and time, the dispute is closed in the customer's favor. For example, yyyy-MM-ddTHH:mm:ss.SSSZ.

    Read only.

    Minimum length: 20.

    Maximum length: 64.

    Pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])[T,t]([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)([.][0-9]+)?([Zz]|[+-][0-9]{2}:[0-9]{2})$.

  • offer

    object

    The merchant-proposed offer for a dispute.

    Read only.

  • links

    array (contains the link_description object)

    An array of request-related HATEOAS links.

    Read only.

dispute_create_response

dispute_outcome

  • outcome_code

    enum

    The outcome of a resolved dispute. Value is:
    • RESOLVED_BUYER_FAVOUR. The dispute was resolved in the customer's favor.
    • RESOLVED_SELLER_FAVOUR. The dispute was resolved in the merchant's favor.
    • RESOLVED_WITH_PAYOUT. PayPal provided the merchant or customer with protection and the case is resolved.
    • CANCELED_BY_BUYER. The customer canceled the dispute.
    • ACCEPTED. The dispute was accepted by PayPal.
    • DENIED. The dispute was denied by PayPal.
    • Empty. The dispute was not resolved.
    The possible values are:
    • RESOLVED_BUYER_FAVOUR: The dispute was resolved in the customer's favor
    • RESOLVED_SELLER_FAVOUR: The dispute was resolved in the merchant's favor
    • RESOLVED_WITH_PAYOUT: PayPal provided the merchant or customer with protection and the case is resolved
    • CANCELED_BY_BUYER: The customer canceled the dispute
    • ACCEPTED: PayPal accepted the dispute
    • DENIED: PayPal denied the dispute
  • amount_refunded

    object

    The amount that either the merchant or PayPal refunds the customer.

dispute_reason

  • dispute_reason

    enum

    The reason for the item-level dispute. Value is:
    • MERCHANDISE_OR_SERVICE_NOT_RECEIVED. The customer did not receive the merchandise or service.
    • MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED. The customer reports that the merchandise or service is not as described.
    • UNAUTHORISED. The customer did not authorize purchase of the merchandise or service.
    • CREDIT_NOT_PROCESSED. The refund or credit was not processed for the customer.
    • DUPLICATE_TRANSACTION. The transaction was a duplicate.
    • INCORRECT_AMOUNT. The customer was charged an incorrect amount.
    • PAYMENT_BY_OTHER_MEANS. The customer paid for the transaction through other means.
    • CANCELED_RECURRING_BILLING. The customer was being charged for a subscription or a recurring transaction that was canceled.
    • PROBLEM_WITH_REMITTANCE. A problem occurred with the remittance.
    • OTHER. Other.
    For information about the required information for each dispute reason and associated evidence type, see dispute reasons. The possible values are:
    • MERCHANDISE_OR_SERVICE_NOT_RECEIVED: The customer did not receive the merchandise or service
    • MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED: The customer reports that the merchandise or service is not as described
    • UNAUTHORISED: The customer did not authorize purchase of the merchandise or service
    • CREDIT_NOT_PROCESSED: The refund or credit was not processed for the customer
    • DUPLICATE_TRANSACTION: The transaction was a duplicate
    • INCORRECT_AMOUNT: The customer was charged an incorrect amount
    • PAYMENT_BY_OTHER_MEANS: The customer paid for the transaction through other means
    • CANCELED_RECURRING_BILLING: The customer was being charged for a subscription or a recurring transaction that was canceled
    • PROBLEM_WITH_REMITTANCE: A problem occurred with the remittance
    • OTHER: Other

dispute_search_response

  • items

    array (contains the dispute object)

    An array of disputes that match the filter criteria. Sorted from latest to earliest creation time order.
  • links

    array (contains the link_description object)

    An array of request-related HATEOAS links.

    Read only.

disputes_change_reason_response

document

  • name

    string

    The document name.
  • size

    string

    The document size.

eligibility_request

  • encrypted_transaction_id

    string

    The encrypted transaction ID. The response lists the eligible and ineligible dispute reasons.
  • dispute_id

    string

    The ID of the dispute. The response lists the eligible and ineligible dispute reasons. The customer can use the eligible reasons to update the dispute.

email_address

  • email_address

    string

    The internationalized email address.
    Note: Up to 64 characters are allowed before and 255 characters are allowed after the @ sign. However, the generally accepted maximum length for an email address is 254 characters. The pattern verifies that an unquoted @ sign exists.

    Minimum length: 3.

    Maximum length: 254.

    Pattern: ^.+@[^"\-].+$.

error

  • name

    string

    required

    The human-readable, unique name of the error.
  • message

    string

    required

    The message that describes the error.
  • debug_id

    string

    required

    The PayPal internal ID that is used for correlation purposes.
  • information_link

    string

    The information link, or URI, that shows detailed information about this error for the developer.

    Read only.

  • details

    array (contains the error_details object)

    An array of additional details about the error.
  • links

    array (contains the link_description object)

    An array of request-related HATEOAS links.

    Read only.

error_details

  • field

    string

    The field that caused the error. If the field is in the body, set this value to the JSON pointer to that field. Required for client-side errors.
  • value

    string

    The value of the field that caused the error.
  • location

    string

    The location of the field that caused the error. Value is body, path, or query.

    Default: body.

  • issue

    string

    required

    The unique and fine-grained application-level error code.
  • description

    string

    The human-readable description for an issue. The description MAY change over the lifetime of an API, so clients MUST NOT depend on this value.

escalate_request

  • note

    string

    required

    The notes about the escalation of the dispute to a claim.

    Minimum length: 1.

    Maximum length: 2000.

evidence

  • evidence_type

    enum

    The type of evidence. The possible values are:
    • PROOF_OF_FULFILLMENT: PROOF_OF_FULFILLMENT
    • PROOF_OF_REFUND: PROOF_OF_REFUND
    • PROOF_OF_DELIVERY_SIGNATURE: PROOF_OF_DELIVERY_SIGNATURE
    • PROOF_OF_RECEIPT_COPY: PROOF_OF_RECEIPT_COPY
    • RETURN_POLICY: RETURN_POLICY
    • BILLING_AGREEMENT: BILLING_AGREEMENT
    • PROOF_OF_RESHIPMENT: PROOF_OF_RESHIPMENT
    • ITEM_DESCRIPTION: ITEM_DESCRIPTION
    • POLICE_REPORT: POLICE_REPORT
    • AFFIDAVIT: AFFIDAVIT
    • PAID_WITH_OTHER_METHOD: PAID_WITH_OTHER_METHOD
    • COPY_OF_CONTRACT: COPY_OF_CONTRACT
    • TERMINAL_ATM_RECEIPT: TERMINAL_ATM_RECEIPT
    • PRICE_DIFFERENCE_REASON: PRICE_DIFFERENCE_REASON
    • SOURCE_CONVERSION_RATE: SOURCE_CONVERSION_RATE
    • BANK_STATEMENT: BANK_STATEMENT
    • CREDIT_DUE_REASON: CREDIT_DUE_REASON
    • REQUEST_CREDIT_RECEIPT: REQUEST_CREDIT_RECEIPT
    • PROOF_OF_RETURN: PROOF_OF_RETURN
    • CREATE: CREATE
    • CHANGE_REASON: CHANGE_REASON
    • OTHER: OTHER
  • evidence_info

    object

    The evidence-related information.
  • documents

    array (contains the document object)

    An array of evidence documents.
  • notes

    string

    Any evidence-related notes.

    Maximum length: 2000.

  • item_id

    string

    The item ID. If the merchant provides multiple pieces of evidence and the transaction has multiple item IDs, the merchant can use this value to associate a piece of evidence with an item ID.

evidence_info

  • tracking_info

    array (contains the tracking_info object)

    An array of relevant tracking information for the transaction involved in this dispute.
  • refund_ids

    array (contains the refund_id object)

    An array of refund IDs for the transaction involved in this dispute.

evidences

  • evidences

    array (contains the evidence object)

    An array of evidences for the dispute.

item_info

  • item_id

    string

    The item ID. If the merchant provides multiple pieces of evidence and the transaction has multiple item IDs, the merchant can use this value to associate a piece of evidence with an item ID.
  • partner_transaction_id

    string

    The ID of the transaction in the partner system. The partner transaction ID is returned at an item level because the partner might show different transactions for different items in the cart.
  • reason

    enum

    The reason for the item-level dispute. Value is:
    • MERCHANDISE_OR_SERVICE_NOT_RECEIVED. The customer did not receive the merchandise or service.
    • MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED. The customer reports that the merchandise or service is not as described.
    • UNAUTHORISED. The customer did not authorize purchase of the merchandise or service.
    • CREDIT_NOT_PROCESSED. The refund or credit was not processed for the customer.
    • DUPLICATE_TRANSACTION. The transaction was a duplicate.
    • INCORRECT_AMOUNT. The customer was charged an incorrect amount.
    • PAYMENT_BY_OTHER_MEANS. The customer paid for the transaction through other means.
    • CANCELED_RECURRING_BILLING. The customer was being charged for a subscription or a recurring transaction that was canceled.
    • PROBLEM_WITH_REMITTANCE. A problem occurred with the remittance.
    • OTHER. Other.
    For information about the required information for each dispute reason and associated evidence type, see dispute reasons. The possible values are:
    • MERCHANDISE_OR_SERVICE_NOT_RECEIVED: The customer did not receive the merchandise or service
    • MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED: The customer reports that the merchandise or service is not as described
    • UNAUTHORISED: The customer did not authorize purchase of the merchandise or service
    • CREDIT_NOT_PROCESSED: The refund or credit was not processed for the customer
    • DUPLICATE_TRANSACTION: The transaction was a duplicate
    • INCORRECT_AMOUNT: The customer was charged an incorrect amount
    • PAYMENT_BY_OTHER_MEANS: The customer paid for the transaction through other means
    • CANCELED_RECURRING_BILLING: The customer was being charged for a subscription or a recurring transaction that was canceled
    • PROBLEM_WITH_REMITTANCE: A problem occurred with the remittance
    • OTHER: Other
  • dispute_amount

    object

    The amount of the item in the dispute.
  • notes

    string

    Any notes provided with the item.

make_offer_request

  • note

    string

    required

    The merchant's notes about the offer. PayPal can, but the customer cannot, view these notes.

    Minimum length: 1.

    Maximum length: 2000.

  • offer_amount

    object

    required

    The amount proposed to resolve the dispute.
  • return_shipping_address

    object

    The return address for the item. Required when the customer must return an item to the merchant for the MERCHANDISE_OR_SERVICE_NOT_AS_DESCRIBED dispute reason, especially if the refund amount is less than the dispute amount.
  • invoice_id

    string

    The merchant-provided ID of the invoice for the refund. This optional value maps the refund to an invoice ID in the merchant's system.
  • offer_type

    object

    required

    The type of offer that the merchant proposes for the dispute.

message

  • posted_by

    enum

    Indicates whether the customer or merchant posted the message. Value is:
    • BUYER. The customer posted the message.
    • SELLER. The merchant posted the message.
    The possible values are:
    • BUYER: Message posted by the buyer
    • SELLER: Message posted by the seller

    Read only.

  • time_posted

    object

    The date and time when the message was posted, in Internet date and time format.

    Read only.

  • content

    string

    The message text.

    Minimum length: 0.

    Maximum length: 2000.

money

  • currency_code

    string

    required

    The three-character ISO-4217 currency code that identifies the currency.

    Minimum length: 3.

    Maximum length: 3.

  • value

    string

    required

    The value, which might be:
    • An integer for currencies like JPY that are not typically fractional.
    • A decimal fraction for currencies like TND that are subdivided into thousandths.
    For the required number of decimal places for a currency code, see Currency codes - ISO 4217.

    Maximum length: 32.

    Pattern: ^((-?[0-9]+)|(-?([0-9]+)?[.][0-9]+))$.

offer

  • buyer_requested_amount

    object

    The customer-requested refund for this dispute.
  • seller_offered_amount

    object

    The merchant-offered refund for this dispute.
  • offer_type

    enum

    The merchant-proposed offer type for the dispute. The possible values are:
    • REFUND: The merchant must refund the customer without any item replacement or return.
    • REFUND_WITH_RETURN: The customer must return the item to the merchant.
    • REFUND_WITH_REPLACEMENT: The merchant must send a replacement item to the customer.

offer_type

  • offer_type

    enum

    The merchant-proposed offer type for the dispute. The possible values are:
    • REFUND: The merchant must refund the customer without any item replacement or return.
    • REFUND_WITH_RETURN: The customer must return the item to the merchant.
    • REFUND_WITH_REPLACEMENT: The merchant must send a replacement item to the customer.

refund_id

  • refund_id

    string

    The ID of the refunded transaction.

require_evidence_request

  • action

    enum

    The action. Indicates whether the state change enables the customer or merchant to submit evidence:
    If action isThe state updates to
    BUYER_EVIDENCE WAITING_FOR_BUYER_RESPONSE
    SELLER_EVIDENCE WAITING_FOR_SELLER_RESPONSE
    The possible values are:
    • BUYER_EVIDENCE: This will change the status of dispute to WAITING_FOR_BUYER_RESPONSE
    • SELLER_EVIDENCE: This will change the status of dispute to WAITING_FOR_SELLER_RESPONSE

seller

  • email

    object

    The email address for the merchant's PayPal account.
  • merchant_id

    string

    The PayPal account ID for the merchant.
  • name

    string

    The name of the merchant.

send_message_request

  • message

    string

    required

    The message sent by the merchant to the other party.

subsequent_actions

tracking_info

  • carrier_name

    enum

    The name of the carrier for the shipment of the transaction for this dispute. The possible values are:
    • UPS: USPS
    • USPS: USPS
    • FEDEX: FEDEX
    • AIRBORNE_EXPRESS: AIRBORNE_EXPRESS
    • DHL: DHL
    • AIRSURE: AIRSURE
    • ROYAL_MAIL: ROYAL_MAIL
    • PARCELFORCE: PARCELFORCE
    • SWIFTAIR: SWIFTAIR
    • OTHER: OTHER
    • UK_PARCELFORCE: UK_PARCELFORCE
    • UK_ROYALMAIL_SPECIAL: UK_ROYALMAIL_SPECIAL
    • UK_ROYALMAIL_RECORDED: UK_ROYALMAIL_RECORDED
    • UK_ROYALMAIL_INT_SIGNED: UK_ROYALMAIL_INT_SIGNED
    • UK_ROYALMAIL_AIRSURE: UK_ROYALMAIL_AIRSURE
    • UK_UPS: UK_UPS
    • UK_FEDEX: UK_FEDEX
    • UK_AIRBORNE_EXPRESS: UK_AIRBORNE_EXPRESS
    • UK_DHL: UK_DHL
    • UK_OTHER: UK_OTHER
    • UK_CANNOT_PROV_TRACK: UK_CANNOT_PROV_TRACK
    • CA_CANADA_POST: CA_CANADA_POST
    • CA_PUROLATOR: CA_PUROLATOR
    • CA_CANPAR: CA_CANPAR
    • CA_LOOMIS: CA_LOOMIS
    • CA_TNT: CA_TNT
    • CA_OTHER: CA_OTHER
    • CA_CANNOT_PROV_TRACK:
    • DE_DP_DHL_WITHIN_EUROPE: CA_CANNOT_PROV_TRACK
    • DE_DP_DHL_T_AND_T_EXPRESS:
    • DE_DHL_DP_INTL_SHIPMENTS: DE_DP_DHL_T_AND_T_EXPRESS
    • DE_GLS: DE_GLS
    • DE_DPD_DELISTACK: DE_DPD_DELISTACK
    • DE_HERMES: DE_HERMES
    • DE_UPS: DE_UPS
    • DE_FEDEX: DE_FEDEX
    • DE_TNT: DE_TNT
    • DE_OTHER: DE_OTHER
    • FR_CHRONOPOST: FR_CHRONOPOST
    • FR_COLIPOSTE: FR_COLIPOSTE
    • FR_DHL: FR_DHL
    • FR_UPS: FR_UPS
    • FR_FEDEX: FR_FEDEX
    • FR_TNT: FR_TNT
    • FR_GLS: FR_GLS
    • FR_OTHER: FR_OTHER
    • IT_POSTE_ITALIA: IT_POSTE_ITALIA
    • IT_DHL: IT_DHL
    • IT_UPS: IT_UPS
    • IT_FEDEX:
    • IT_TNT: IT_FEDEX
    • IT_GLS: IT_GLS
    • IT_OTHER: IT_OTHER
    • AU_AUSTRALIA_POST_EP_PLAT: AU_AUSTRALIA_POST_EP_PLAT
    • AU_AUSTRALIA_POST_EPARCEL: AU_AUSTRALIA_POST_EPARCEL
    • AU_AUSTRALIA_POST_EMS: AU_AUSTRALIA_POST_EMS
    • AU_DHL: AU_DHL
    • AU_STAR_TRACK_EXPRESS: AU_STAR_TRACK_EXPRESS
    • AU_UPS: AU_UPS
    • AU_FEDEX: AU_FEDEX
    • AU_TNT: AU_TNT
    • AU_TOLL_IPEC: AU_TOLL_IPEC
    • AU_OTHER: AU_OTHER
    • FR_SUIVI: FR_SUIVI
    • IT_EBOOST_SDA: IT_EBOOST_SDA
    • ES_CORREOS_DE_ESPANA: ES_CORREOS_DE_ESPANA
    • ES_DHL: ES_DHL
    • ES_UPS: ES_UPS
    • ES_FEDEX: ES_FEDEX
    • ES_TNT: ES_TNT
    • ES_OTHER: ES_OTHER
    • AT_AUSTRIAN_POST_EMS: AT_AUSTRIAN_POST_EMS
    • AT_AUSTRIAN_POST_PPRIME: AT_AUSTRIAN_POST_PPRIME
    • BE_CHRONOPOST: BE_CHRONOPOST
    • BE_TAXIPOST: BE_TAXIPOST
    • CH_SWISS_POST_EXPRES: CH_SWISS_POST_EXPRES
    • CH_SWISS_POST_PRIORITY: CH_SWISS_POST_PRIORITY
    • CN_CHINA_POST: CN_CHINA_POST
    • HK_HONGKONG_POST: HK_HONGKONG_POST
    • IE_AN_POST_SDS_EMS: IE_AN_POST_SDS_EMS
    • IE_AN_POST_SDS_PRIORITY: IE_AN_POST_SDS_PRIORITY
    • IE_AN_POST_REGISTERED: IE_AN_POST_REGISTERED
    • IE_AN_POST_SWIFTPOST: IE_AN_POST_SWIFTPOST
    • IN_INDIAPOST: IN_INDIAPOST
    • JP_JAPANPOST: JP_JAPANPOST
    • KR_KOREA_POST: KR_KOREA_POST
    • NL_TPG: NL_TPG
    • SG_SINGPOST: SG_SINGPOST
    • TW_CHUNGHWA_POST: TW_CHUNGHWA_POST
    • CN_CHINA_POST_EMS: CN_CHINA_POST_EMS
    • CN_FEDEX: CN_FEDEX
    • CN_TNT: CN_TNT
    • CN_UPS: CN_UPS
    • CN_OTHER: CN_OTHER
    • NL_TNT: NL_TNT
    • NL_DHL: NL_DHL
    • NL_UPS: NL_UPS
    • NL_FEDEX: NL_FEDEX
    • NL_KIALA: NL_KIALA
    • BE_KIALA: BE_KIALA
    • PL_POCZTA_POLSKA: PL_POCZTA_POLSKA
    • PL_POCZTEX: PL_POCZTEX
    • PL_GLS: PL_GLS
    • PL_MASTERLINK: PL_MASTERLINK
    • PL_TNT: PL_TNT
    • PL_DHL: PL_DHL
    • PL_UPS: PL_UPS
    • PL_FEDEX: PL_FEDEX
    • JP_SAGAWA_KYUU_BIN: JP_SAGAWA_KYUU_BIN
    • JP_NITTSU_PELICAN_BIN: JP_NITTSU_PELICAN_BIN
    • JP_KURO_NEKO_YAMATO_UNYUU: JP_KURO_NEKO_YAMATO_UNYUU
    • JP_TNT: JP_TNT
    • JP_DHL: JP_DHL
    • JP_UPS: JP_UPS
    • JP_FEDEX: JP_FEDEX
    • NL_PICKUP: NL_PICKUP
    • NL_INTANGIBLE: NL_INTANGIBLE
    • NL_ABC_MAIL: NL_ABC_MAIL
    • HK_FOUR_PX_EXPRESS: HK_FOUR_PX_EXPRESS
    • HK_FLYT_EXPRESS: HK_FLYT_EXPRESS
  • carrier_name_other

    string

    This field capture the name of carrier in free form text for unavailable carriers from existing list.
  • tracking_url

    string

    The URL to track the dispute-related transaction shipment.
  • tracking_number

    string

    The number to track the dispute-related transaction shipment.

transaction_id

  • transaction_id

    string

    The encrypted transaction ID.

transaction_info

  • buyer_transaction_id

    string

    The ID, as seen by the customer, for this transaction.
  • seller_transaction_id

    string

    The ID, as seen by the merchant, for this transaction.
  • create_time

    object

    The date and time when the transaction was created, in Internet date and time format. For example, yyyy-MM-ddTHH:mm:ss.SSSZ.
  • transaction_status

    enum

    The transaction status. Value is:
    • COMPLETED. The transaction processing is complete.
    • UNCLAIMED. The items in the transaction are unclaimed. If they are not claimed within 30 days, the funds are returned to the sender.
    • DENIED. The transaction was denied.
    • FAILED. The transaction failed.
    • HELD. The transaction is on hold.
    • PENDING. The transaction is waiting to be processed.
    • PARTIALLY_REFUNDED. Payment for the transaction was partially refunded.
    • REFUNDED. Payment for the transaction was successfully refunded.
    • REVERSED. Payment for the transaction was reversed due to a chargeback or other type of reversal.
    The possible values are:
    • COMPLETED: The transaction processing is complete
    • UNCLAIMED: The items in the transaction are unclaimed. If they are not claimed within 30 days, the funds are returned to the sender
    • DENIED: The transaction was denied.
    • FAILED: The transaction failed
    • HELD: The transaction is on hold
    • PENDING: The transaction is waiting to be processed
    • PARTIALLY_REFUNDED: Payment for the transaction was partially refunded
    • REFUNDED: Payment for the transaction was successfully refunded
    • REVERSED: Payment for the transaction was reversed due to a chargeback or other type of reversal
  • gross_amount

    object

    The gross amount of the transaction.
  • invoice_number

    string

    The ID of the invoice for the payment.
  • custom

    string

    A free-text field that is entered by the merchant during checkout.
  • buyer

    object

    The details for the customer who funds the payment. For example, the customer's first name, last name, and email address.
  • seller

    object

    The details for the merchant who receives the funds and fulfills the order. For example, merchant ID, and contact email address.
  • items

    array (contains the item_info object)

    An array of items that were purchased as part of the transaction.

    Read only.

Additional API information

Error messages

In addition to common HTTP status codes that the REST APIs return, the Customer Disputes API can return the following errors.

  • ACTION_NOT_ALLOWED_IN_CURRENT_DISPUTE_STATE

    This action is not allowed for this dispute ID. For the allowed actions, see the HATEOAS link in show dispute details. You cannot complete this action for this dispute ID.

  • AUTHORIZATION_ERROR

    Authorization error occurred. An authorization error occurred. Check your credentials.

  • DATE_CAN_NOT_BE_IN_FUTURE

    The start_time is incorrect. The start_time must be earlier than the current date and time stamp. The specified start time is in the future.

  • DISPUTE_REASON_NOT_ELIGIBLE

    This dispute reason is not allowed for this transaction. To review the allowed reasons for this transaction, call validate transaction eligibility. Then, retry with one of the allowed reasons. The specified dispute reason is not valid.

  • INSUFFICIENT_FUNDS

    You have insufficient funds in your account to accept a claim for this dispute. Add the appropriate balance to your PayPal account before you accept a claim for this case. Your account has insufficient funds for this claim.

  • INTERNAL_SERVICE_ERROR

    An internal service error has occurred. Resend the request at another time.

  • INVALID_EVIDENCE_FILE

    The evidence file is not valid. The user can upload up to 10 MB of files for a case. Individual files must be smaller than 5 MB. The supported file formats are JPG, GIF, PNG, and PDF. Correct and retry the request. The evidence file is not valid.

  • INVALID_EVIDENCE_TYPE_PROOF_OF_FULFILMENT

    The PROOF_OF_FULFILLMENT evidence type is not a valid evidence type for this dispute reason and status. Retry the request with a different evidence type. This evidence type is not valid for this dispute reason and status.

  • INVALID_PAGE_SIZE

    The page_size is outside the allowed range. A valid page_size is from 1 to 50. Retry the request. The page size is outside the allowed range.

  • INVALID_RETURN_SHIPPING_ADDRESS_FORMAT

    The format specified for the return shipping address is not valid. Correct the format and retry. See accept claim. The shipping address format is not valid.

  • INVALID_START_TIME_FORMAT

    The start_time is not in the correct date and time format. The start_time must be in Internet date and time format. For example, yyyy-MM-ddTHH:mm:ss.SSSZ. Retry the request with the correct date and time format. The start time is not in the correct date and time format.

  • INVALID_START_TIME_RANGE

    The start_time is outside the allowed range. The start_time must be within the last 180 days. Retry the request with a valid start_time. The start time is outside the allowed range.

  • ITEM_ID_IS_MANDATORY_FOR_MULTIPLE_EVIDENCES

    An item ID is required for this dispute. Provide an item ID for each evidence document. For details, see provide evidence. An item ID is required.

  • MANDATORY_PARAMETER_MISSING

    When you create a dispute, a buyer_transaction_id is required but it is missing. Retry with a valid buyer_transaction_id. The buyer transaction ID is missing.

  • MISSING_EVIDENCE_INFO

    The evidence information is required but it is missing for this dispute. Retry the request with valid evidence information. For details, see provide evidence. The evidence information is missing.

  • MISSING_EVIDENCE_TYPE

    The evidence type is required but it is missing for this dispute. Retry the request with a valid evidence type. For details, see provide evidence. The evidence type is missing.

  • MISSING_REFUND_ID

    For PROOF_OF_REFUND, at least one refund ID is required but it is missing. Retry the request with a valid refund ID. For information, For details, see provide evidence. A refund ID is missing. You specify PROOF_OF_REFUND in the evidence_type parameter of a provide evidence call.

  • MISSING_REASON_CODE

    To add or update a reason code, you must provide a reason code but it is missing. Retry the request with a valid reason code. A reason code is missing.

  • MISSING_TRACKING_INFO

    For PROOF_OF_FULFILLMENT, the tracking number and carrier name are required but they are missing. Retry the request. For information, see tracking_info. The tracking number and carrier name are missing. You specify PROOF_OF_FULFILLMENT in the evidence_type parameter of a provide evidence call.

  • PERMISSION_DENIED

    You do not have the correct permission for the requested operation. You do not have the correct permissions to make this request.

  • RESOURCE_NOT_FOUND_ERROR

    Resource not found. The requested resource is not found in the system.

  • UNKNOWN_ERROR

    Unknown exception occurred. An unknown error occurred.

  • VALIDATION_ERROR

    Invalid request - see details. One or more validation errors occurred. See the details for specific validation errors.