Skip to main content

Disputes

ZendFi supports a customer-to-merchant dispute flow with optional admin resolution.

1) Request Dispute OTP (Public)

Requests an email OTP used to verify customer ownership before dispute creation.

Request Body

string
required
Customer email associated with the payment.

Response

2) Create Dispute (Public)

Creates a dispute after customer verification.

Request Body

string
required
Customer email for identity matching and OTP validation.
string
Optional customer wallet used as alternate ownership proof.
string
required
One of: duplicate, unauthorized, product_not_received, other.
string
required
Customer dispute description.
object
Optional evidence object.
string
required
OTP from the request-otp step.

3) List Merchant Disputes

Session-authenticated merchant endpoint.

Query Parameters

  • limit (default 50, max 100)
  • offset (default 0)
  • status (open, under_review, resolved_merchant_favor, resolved_customer_favor, closed)
  • dispute_type (duplicate, unauthorized, product_not_received, other)
  • start_date and end_date

4) Get Dispute Detail

5) Merchant Respond to Dispute

Request Body

string
required
Merchant response text.
object
Optional structured evidence payload.

6) Merchant Issue Refund From Dispute

Creates a linked refund through the refunds system and resolves dispute to customer favor.

Request Body

number
required
Refund amount to issue.
string
Refund reason.
object
Optional metadata forwarded to the refund request.

7) Admin Resolve Dispute

Admin-authenticated endpoint for final resolution.

Request Body

string
required
merchant_favor, customer_favor, or closed.
string
Optional admin notes.

Dispute Statuses

Dispute Lifecycle Events

  • DisputeOpened
  • DisputeResponded
  • DisputeResolved
See Webhooks.