Overview
The ApiDeposits class provides methods for managing deposits (pre-authorizations) in the Mangopay platform. Deposits allow you to reserve funds on a card before capturing them, useful for scenarios like hotel bookings or security deposits.
Methods
Create
Create a new deposit (pre-authorization).
public function Create(CreateDeposit $deposit): Deposit
The deposit object containing payment details
Returns: Deposit object
Example:
$deposit = new MangoPay\CreateDeposit();
$deposit->AuthorId = $userId;
$deposit->CreditedWalletId = $walletId;
$deposit->CardId = $cardId;
$deposit->SecureModeReturnURL = 'https://yoursite.com/return';
$deposit->DebitedFunds = new MangoPay\Money();
$deposit->DebitedFunds->Amount = 10000;
$deposit->DebitedFunds->Currency = 'EUR';
$createdDeposit = $api->Deposits->Create($deposit);
Get
Retrieve a deposit by ID.
public function Get(string $depositId): Deposit
Returns: Deposit object
Example:
$deposit = $api->Deposits->Get($depositId);
echo "Status: " . $deposit->Status;
echo "Remaining funds: " . $deposit->RemainingFunds->Amount;
Cancel
Cancel a deposit that hasn’t been fully captured.
public function Cancel(string $depositId, CancelDeposit $dto): Deposit
Cancel deposit request body
Returns: Deposit object
Example:
$cancelDto = new MangoPay\CancelDeposit();
$canceledDeposit = $api->Deposits->Cancel($depositId, $cancelDto);
Update
Update a deposit (typically used for capturing funds).
public function Update(string $depositId, UpdateDeposit $dto): Deposit
Update deposit request body with capture amount
Returns: Deposit object
Example:
$updateDto = new MangoPay\UpdateDeposit();
$updateDto->DebitedFunds = new MangoPay\Money();
$updateDto->DebitedFunds->Amount = 5000; // Capture partial amount
$updateDto->DebitedFunds->Currency = 'EUR';
$updatedDeposit = $api->Deposits->Update($depositId, $updateDto);
GetAllForUser
Retrieve all deposits for a specific user.
public function GetAllForUser(string $userId, ?Pagination $pagination = null, ?FilterPreAuthorizations $filter = null, ?Sorting $sorting = null): array
Returns: Array of Deposit objects
GetAllForCard
Retrieve all deposits for a specific card.
public function GetAllForCard(string $cardId, ?Pagination $pagination = null, ?FilterPreAuthorizations $filter = null, ?Sorting $sorting = null): array
Returns: Array of Deposit objects
GetTransactions
Get all transactions for a deposit.
public function GetTransactions(string $depositId, ?Pagination $pagination = null, ?FilterTransactions $filter = null, ?Sorting $sorting = null): array
Returns: Array of Transaction objects
Deposit Entity
The Deposit object contains:
Deposit status (CREATED, SUCCEEDED, FAILED, etc.)
User who created the deposit
Card used for the deposit
URL where user should be redirected for 3DS
Unix timestamp when deposit expires
Complete Example
// Create deposit
$deposit = new MangoPay\CreateDeposit();
$deposit->AuthorId = $userId;
$deposit->CreditedWalletId = $walletId;
$deposit->CardId = $cardId;
$deposit->SecureModeReturnURL = 'https://yoursite.com/deposit/return';
$deposit->DebitedFunds = new MangoPay\Money();
$deposit->DebitedFunds->Amount = 20000; // €200.00
$deposit->DebitedFunds->Currency = 'EUR';
$createdDeposit = $api->Deposits->Create($deposit);
// Check if 3DS is required
if ($createdDeposit->SecureModeRedirectURL) {
// Redirect user to complete 3DS authentication
header('Location: ' . $createdDeposit->SecureModeRedirectURL);
exit;
}
// Later: Capture partial or full amount
$updateDto = new MangoPay\UpdateDeposit();
$updateDto->DebitedFunds = new MangoPay\Money();
$updateDto->DebitedFunds->Amount = 15000; // Capture €150.00
$updateDto->DebitedFunds->Currency = 'EUR';
$capturedDeposit = $api->Deposits->Update($createdDeposit->Id, $updateDto);
// Or cancel if not needed
$cancelDto = new MangoPay\CancelDeposit();
$canceledDeposit = $api->Deposits->Cancel($createdDeposit->Id, $cancelDto);
See Also