Skip to main content

Overview

The ApiDisputes class provides methods for managing disputes (chargebacks) in the Mangopay platform. Disputes occur when a user contests a transaction with their bank.

Methods

Get

Retrieve a dispute by ID.
public function Get(string $disputeId): Dispute
disputeId
string
required
The dispute identifier
Returns: Dispute object Example:
$dispute = $api->Disputes->Get($disputeId);
echo "Status: " . $dispute->DisputeType;
echo "Amount: " . $dispute->DisputedFunds->Amount;

GetAll

Retrieve all disputes.
public function GetAll(?Pagination &$pagination = null, ?Sorting $sorting = null, ?FilterDisputes $filter = null): array
pagination
Pagination
Pagination parameters (passed by reference)
sorting
Sorting
Sorting parameters
filter
FilterDisputes
Filter disputes by status, type, etc.
Returns: Array of Dispute objects Example:
$pagination = new MangoPay\Pagination(1, 50);
$filter = new MangoPay\FilterDisputes();
$filter->Status = 'PENDING_CLIENT_ACTION';

$disputes = $api->Disputes->GetAll($pagination, null, $filter);
foreach ($disputes as $dispute) {
    echo "Dispute ID: " . $dispute->Id . "\n";
}

GetPendingSettlements

List disputes that need settling.
public function GetPendingSettlements(?Pagination &$pagination = null, ?Sorting $sorting = null): array
Returns: Array of Dispute objects pending settlement

Update

Update a dispute’s tag.
public function Update(Dispute $dispute): Dispute
dispute
Dispute
required
Dispute object with updated tag
Returns: Updated Dispute object Example:
$dispute = $api->Disputes->Get($disputeId);
$dispute->Tag = 'Priority case - requires immediate action';
$updatedDispute = $api->Disputes->Update($dispute);

ContestDispute

Contest a dispute by specifying contested funds.
public function ContestDispute(string $disputeId, Money $contestedFunds): Dispute
disputeId
string
required
The dispute identifier
contestedFunds
Money
required
Amount being contested
Returns: Updated Dispute object Example:
$contestedFunds = new MangoPay\Money();
$contestedFunds->Amount = 10000;
$contestedFunds->Currency = 'EUR';

$dispute = $api->Disputes->ContestDispute($disputeId, $contestedFunds);

ResubmitDispute

Resubmit a dispute if it was reopened requiring more documents.
public function ResubmitDispute(string $disputeId): Dispute
disputeId
string
required
The dispute identifier
Returns: Dispute object

CloseDispute

Close a dispute.
public function CloseDispute(string $disputeId): Dispute
disputeId
string
required
The dispute identifier
Returns: Closed Dispute object

GetTransactions

Get transactions related to a dispute.
public function GetTransactions(string $disputeId, ?Pagination &$pagination = null, ?Sorting $sorting = null, ?FilterTransactions $filter = null): array
Returns: Array of Transaction objects

GetDisputesForWallet

Get disputes for a specific wallet.
public function GetDisputesForWallet(string $walletId, ?Pagination &$pagination = null, ?Sorting $sorting = null, ?FilterDisputes $filter = null): array
Returns: Array of Dispute objects

GetDisputesForUser

Get disputes for a specific user.
public function GetDisputesForUser(string $userId, ?Pagination &$pagination = null, ?Sorting $sorting = null, ?FilterDisputes $filter = null): array
Returns: Array of Dispute objects

CreateSettlementTransfer

Create a settlement transfer for a dispute.
public function CreateSettlementTransfer(SettlementTransfer $transfer, string $repudiationId, string $idempotencyKey = null): Transfer
Returns: Transfer object

GetRepudiation

Get repudiation details.
public function GetRepudiation(string $repudiationId): Repudiation
Returns: Repudiation object

Dispute Entity

The Dispute object contains:
Id
string
Unique identifier
DisputeType
string
Type of dispute (CONTESTABLE, NOT_CONTESTABLE, RETRIEVAL)
DisputeReason
string
Reason for dispute (DUPLICATE, FRAUD, etc.)
Status
string
Current status (PENDING_CLIENT_ACTION, SUBMITTED, etc.)
InitialTransactionId
string
ID of the disputed transaction
DisputedFunds
Money
Amount being disputed
ContestedFunds
Money
Amount you’re contesting
ResultCode
string
Result code indicating outcome
ResultMessage
string
Human-readable result message

Complete Workflow Example

// Get all pending disputes
$filter = new MangoPay\FilterDisputes();
$filter->Status = 'PENDING_CLIENT_ACTION';
$disputes = $api->Disputes->GetAll(null, null, $filter);

foreach ($disputes as $dispute) {
    if ($dispute->DisputeType === 'CONTESTABLE') {
        // Contest the dispute
        $contestedFunds = new MangoPay\Money();
        $contestedFunds->Amount = $dispute->DisputedFunds->Amount;
        $contestedFunds->Currency = $dispute->DisputedFunds->Currency;
        
        $api->Disputes->ContestDispute($dispute->Id, $contestedFunds);
        
        // Upload supporting documents
        $doc = new MangoPay\DisputeDocument();
        $doc->Type = 'DELIVERY_PROOF';
        $disputeDoc = $api->DisputeDocuments->CreateDisputeDocument($doc, $dispute->Id);
        
        // Upload document pages
        $api->DisputeDocuments->CreateDisputeDocumentPage(
            $dispute->Id,
            $disputeDoc->Id,
            base64_encode(file_get_contents('/path/to/proof.pdf'))
        );
        
        // Submit the document
        $disputeDoc->Status = 'VALIDATION_ASKED';
        $api->DisputeDocuments->UpdateDisputeDocument($dispute->Id, $disputeDoc);
    }
}

See Also

Build docs developers (and LLMs) love