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
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 parameters (passed by reference)
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 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
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
Returns: Dispute object
CloseDispute
Close a dispute.
public function CloseDispute(string $disputeId): Dispute
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:
Type of dispute (CONTESTABLE, NOT_CONTESTABLE, RETRIEVAL)
Reason for dispute (DUPLICATE, FRAUD, etc.)
Current status (PENDING_CLIENT_ACTION, SUBMITTED, etc.)
ID of the disputed transaction
Result code indicating outcome
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