Wallgent
Guides

Disputes

Formally challenge a payment for reversal, fraud, or service issues.

Overview

Disputes are the formal mechanism for challenging a completed payment. You open a dispute, the recipient organization submits evidence in response, and a Wallgent admin resolves it. The outcome determines which party receives the held funds.

Dispute types:

TypeUse When
REVERSALA payment was made in error and needs to be unwound
FRAUDA payment was made without authorization
SERVICE_ISSUEGoods or services contracted for were not delivered

Dispute lifecycle:

OPEN → RESPONDED (merchant submits evidence)

RESOLVED_AGENT    (funds returned to initiator)
RESOLVED_MERCHANT (funds remain with merchant)
CLOSED            (administratively closed)

Opening a Dispute

POST /v1/disputes

Request Body

FieldTypeRequiredDescription
transactionIdstringYesThe txn_ ID of the payment to dispute
respondentOrgIdstringNoThe organization that received the payment (resolved automatically if omitted)
typestringYesREVERSAL, FRAUD, or SERVICE_ISSUE
amountstringYesAmount in dispute (decimal string)
reasonstringYesClear description of the dispute basis
const response = await fetch('https://api.wallgent.com/v1/disputes', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.WALLGENT_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    transactionId: 'txn_01J...',
    type: 'SERVICE_ISSUE',
    amount: '250.00',
    reason: 'Data processing pipeline was not delivered within the agreed SLA',
  }),
})

const dispute = await response.json()
console.log('Dispute opened:', dispute.id)

Listing Disputes

GET /v1/disputes?status=...&limit=...&offset=...

Returns disputes where your organization is either the initiator or the respondent.

const response = await fetch('https://api.wallgent.com/v1/disputes?status=OPEN', {
  headers: { 'Authorization': `Bearer ${process.env.WALLGENT_API_KEY}` },
})

const { data } = await response.json()

Query Parameters

ParameterDescription
statusFilter by status: OPEN, RESPONDED, RESOLVED_AGENT, RESOLVED_MERCHANT, CLOSED
limitMax results (default: 50)
offsetPagination offset

Getting Dispute Details

GET /v1/disputes/:id
const response = await fetch(`https://api.wallgent.com/v1/disputes/${disputeId}`, {
  headers: { 'Authorization': `Bearer ${process.env.WALLGENT_API_KEY}` },
})

const dispute = await response.json()

Merchant Response (Submitting Evidence)

If your organization is the respondent (the one who received the disputed payment), you can submit evidence to support your case.

POST /v1/disputes/:id/respond

Request Body

FieldTypeRequiredDescription
responsestringYesWritten explanation and evidence summary
evidenceUrlstringNoURL to supporting documents
await fetch(`https://api.wallgent.com/v1/disputes/${disputeId}/respond`, {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.WALLGENT_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    response: 'The pipeline was delivered on 2026-02-28 as confirmed by the attached completion report.',
    evidenceUrl: 'https://storage.example.com/evidence/dispute-123.pdf',
  }),
})

Resolution (Admin Only)

Disputes are resolved by a Wallgent admin. The resolution outcomes are:

ResolutionDescription
RESOLVED_AGENTFunds returned to the initiator (agent / buyer wins)
RESOLVED_MERCHANTFunds remain with the respondent (merchant wins)
CLOSEDDispute closed without a financial remedy
POST /v1/disputes/:id/resolve

What Happens to Funds During a Dispute

When a dispute is opened, the contested amount is moved to a suspense account (acc_SUSPENSE) where it is held until the dispute is resolved. Neither party can access the funds during this period.

Disputed funds → acc_SUSPENSE (held)

              Resolution outcome

        RESOLVED_AGENT  → funds → initiator's wallet
        RESOLVED_MERCHANT → funds → respondent's wallet
        CLOSED → funds returned to original positions

API Endpoints

MethodPathDescription
POST/v1/disputesOpen a dispute
GET/v1/disputesList disputes
GET/v1/disputes/:idGet dispute details
POST/v1/disputes/:id/respondSubmit evidence as the respondent
POST/v1/disputes/:id/resolveResolve a dispute (admin only)

Permissions

PermissionRequired For
payments:writeOpen disputes and submit evidence
payments:readList and view disputes

On this page