Skip to main content
POST
Defend a Dispute

Authorizations

Authorization
string
header
required

You can use an OAuth2 JWT bearer token in the Authorization header of your API requests for supported endpoints: Authorization: Bearer <YOUR_JWT_HERE>. These tokens are valid for 10 minutes and can be requested via the access token endpoint endpoint.

Headers

x-idempotency-key
string<uuid>
required

Idempotency key to be used. Sending again the same key would return the same result without re-executing the update.

Path Parameters

disputeId
string<uuid>
required

Identifier of the resource in Payrails.

Body

multipart/form-data
providerReasonCode
string
required

Provider-specific reason code for the defense.

provenance
enum<string>
required

Provenance of the dispute evidence.

Available options:
Merchant,
Payrails,
Unknown
files[]
object[]
required

List of files supporting the dispute defense.

providerEvidenceTypeCodes
string[]
required

List of type codes for each file entry on files parameter.

Response

Defense submitted and dispute updated.

id
string<uuid>
required

Unique identifier of the Dispute in Payrails.

createdAt
string<date-time>
required

Date and time when the Dispute was created in Payrails.

updatedAt
string<date-time>
required

Date and time when the Dispute was last updated in Payrails.

providerId
string<uuid>
required

Unique identifier of the Provider that was used to process the Dispute.

providerConfigId
string<uuid>
required

Unique identifier of the merchant-specific Provider Configuration that was used to process the Dispute. This can include the set of credentials used, the merchant account, country, vertical, etc.

providerReference
string
required

Unique identifier of the Dispute in the Provider.

stage
enum<string>
required

Stage of the dispute.

Available options:
Created,
FraudReport,
Retrieval,
Chargeback,
PreArbitration,
Arbitration,
Unknown
amount
object

Amount of the Dispute. May differ from amount of Payment.

applicableDefenseReasons
object[]

List of reasons codes used when defending a Dispute.

assignedToUserId
string<uuid>
assignedToUserEmail
string

Email of the user currently assigned to this dispute. Only present when includeUserEmail=true and a user is assigned.

channel
enum<string>

Channel the customer used to raise the dispute.

Not every provider reports a channel, and the field is only populated on disputes received after it was introduced. It is therefore absent on many disputes, and absence says nothing about how the dispute was raised — do not read a missing channel as the absence of an issuer chargeback.

  • Provider: the customer raised the dispute with the payment provider directly, without involving their bank.
  • Issuer: the customer went to their card issuer or bank, so the dispute is a card chargeback.
  • Alert: the dispute arrived as a pre-chargeback alert, and no chargeback has been raised yet.
  • Unknown: the Provider reported a channel that Payrails does not recognize.
Available options:
Provider,
Issuer,
Alert,
Unknown
chargebackStatus
enum<string>

Status of the chargeback.

Available options:
Incoming,
Executed,
Reversed,
SecondChargeback,
IssuerReponseTimeframeExpired,
ArbitrationReversed
defenseStatus
enum<string>

Status of the defense.

Available options:
NotDefendable,
Undefended,
ReadyToSubmit,
Submitted,
Failed,
UnderReview,
Won,
Lost,
Accepted,
Resolved,
Unknown
defensePeriodExpiresAt
string<date-time>

Date and time when the Dispute defense period expires.

providerCreatedAt
string<date-time>

Date and time when the Dispute was created in the Provider. Only present if informed by Provider.

merchantReference
string

Merchant-supplied reference for the payment that originated the Dispute (e.g. an order ID). Populated from the PSP notification for Adyen, PayPal, and Checkout.com disputes, or from the linked Payment for other providers. Omitted when not available.

paymentId
string<uuid>

Unique identifier in Payrails of the Payment that originated the Dispute. Only available if the Payment was created via Payrails. When handling Disputes related to Payments created outside Payrails, this field will be omitted.

workspaceId
string<uuid>

Workspace ID that the Dispute belongs to.

executionId
string

Unique identifier of the workflow execution that manages this Dispute's lifecycle in Payrails. Present once the dispute-management workflow has been started for the Dispute; omitted otherwise.

reason
string

Human-readable description of why the dispute was raised.

reasonCode
string

Provider-specific reason code for the dispute, when supplied by the Provider.

schemeReasonCode
string

Card-scheme reason code for the dispute, when supplied by the Provider.

issuerComments
object

Free-text comments from the issuer or provider about the dispute, keyed by source. Populated for Adyen, Nuvei, PayPal, and Klarna disputes. Not provided for Checkout.com, Stripe, or Revolut. Omitted when not available.

liabilityShifted
boolean | null

Indicates whether liability has shifted away from the merchant, as determined by the Provider or by 3DS authentication data. When true, the issuer bears the chargeback liability. Null if not yet determined.

payment
object
evidences
object[]

List of evidences associated with this dispute.

representmentPlan
object

Representment plan details for this dispute.

representmentSections
object[]

Ordered representment sections for this dispute.

representmentPlanStatus
enum<string>

Status of the representment plan lifecycle.

Available options:
GeneratingPlan,
PlanReady,
StoringEvidences,
LabelingEvidences,
EvidencesReady,
GeneratingRepresentment,
RepresentmentReady,
Submitted
tags
object[]

Tags attached to this dispute.

evidenceClassifications
object[]

AI classifications for the evidences associated with this dispute. Only present when includeEvidenceClassifications=true.

Last modified on October 6, 2026