Skip to main content

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
deposit
CreateDeposit
required
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
depositId
string
required
The deposit identifier
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
depositId
string
required
The deposit identifier
dto
CancelDeposit
required
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
depositId
string
required
The deposit identifier
dto
UpdateDeposit
required
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
userId
string
required
User identifier
pagination
Pagination
Pagination parameters
filter
FilterPreAuthorizations
Filter parameters
sorting
Sorting
Sorting parameters
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
cardId
string
required
Card identifier
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
depositId
string
required
Deposit identifier
Returns: Array of Transaction objects

Deposit Entity

The Deposit object contains:
Id
string
Unique identifier
Status
string
Deposit status (CREATED, SUCCEEDED, FAILED, etc.)
AuthorId
string
User who created the deposit
DebitedFunds
Money
Amount reserved
RemainingFunds
Money
Amount not yet captured
CardId
string
Card used for the deposit
SecureModeReturnURL
string
URL for 3DS redirect
SecureModeRedirectURL
string
URL where user should be redirected for 3DS
ExpirationDate
int
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

Build docs developers (and LLMs) love