> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mangopay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a Deposit Preauthorized PayIn

This endpoint lets you capture funds against a `DepositId` that was preauthorized on a card or a PayPal account.

The payment method is indicated by the `PaymentType` of the [Deposit Preauthorization](/api-reference/deposit-preauthorizations/cancel-deposit-preauthorization) object:

* `CARD` – Single capture possible within 29.5 days
* `PAYPAL` – Single capture recommended within 3 days, but possible up to 29 days (not 29.5)

The shape of the pay-in object is the same – specific data points for card or PayPal authorizations are available via [GET View a Deposit Preauthorization](/api-reference/deposit-preauthorizations/view-deposit-preauthorization).

<Check>
  **Best practice - For PayPal, capture funds within 3 days**

  PayPal recommends that you capture preauthorized funds within 3 days. This is because the success of the capture is subject to risk and the availability of funds on the card (or other funding instrument) that the user has linked to their PayPal account.
</Check>

### Body parameters

<ParamField body="AuthorId" type="string" required>
  The unique identifier of the user at the source of the transaction.
</ParamField>

<ParamField body="CreditedWalletId" type="string" required>
  The unique identifier of the credited wallet.
</ParamField>

<ParamField body="DepositId" type="string" required>
  The unique identifier of the deposit preauthorization.
</ParamField>

<ParamField body="DebitedFunds" type="object" required>
  Information about the debited funds.

  <Expandable title="properties">
    <ParamField body="Currency" type="string" required>
      **Allowed values:** The three-letter <a href="/api-reference/overview/data-formats" target="_blank">ISO 4217 code</a> (EUR, GBP, etc.) of a <a href="/guides/currencies" target="_blank">supported currency</a> (depends on feature, contract, and activation settings).

      The currency of the funds.
    </ParamField>

    <ParamField body="Amount" type="integer" required>
      An amount of money in the smallest sub-division of the currency (e.g., EUR 12.60 would be represented as `1260` whereas JPY 12 would be represented as just `12`).
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="Fees" type="object" required>
  Information about the fees.

  <Expandable title="properties">
    <ParamField body="Currency" type="string" required>
      **Allowed values:** The three-letter <a href="/api-reference/overview/data-formats" target="_blank">ISO 4217 code</a> (EUR, GBP, etc.) of a <a href="/guides/currencies" target="_blank">supported currency</a> (depends on feature, contract, and activation settings).

      The currency of the fees.
    </ParamField>

    <ParamField body="Amount" type="integer" required>
      An amount of money in the smallest sub-division of the currency (e.g., EUR 12.60 would be represented as `1260` whereas JPY 12 would be represented as just `12`).
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="Tag" type="string">
  Max. length: 255 characters

  Custom data that you can add to this object.\
  For transactions (pay-in, transfer, payout), you can use this parameter to identify corresponding information regarding the user, transaction, or payment methods on your platform.
</ParamField>

### Responses

<Accordion title="200">
  <ResponseField name="AuthorId" type="string">
    **Default values:** The `AuthorId` of the Deposit Preauthorization object.

    **Returned values:** The `AuthorId` of the Deposit Preauthorization object.

    The unique identifier of the user at the source of the transaction. On the Deposit Preauthorized PayIn, this parameter returns the same value as the `AuthorId` of the Deposit Preauthorization object, regardless of the value sent.
  </ResponseField>

  <ResponseField name="CreditedUserId" type="string">
    **Default value:** The `AuthorId` of the Deposit Preauthorization object.

    The unique identifier of the user whose wallet is credited. On the Deposit Preauthorized PayIn, this parameter returns the same value as the `AuthorId` of the Deposit Preauthorization object, regardless of the value sent.
  </ResponseField>

  <ResponseField name="CreditedWalletId" type="string">
    The unique identifier of the credited wallet.
  </ResponseField>

  <ResponseField name="DepositId" type="string">
    The unique identifier of the deposit preauthorization.
  </ResponseField>

  <ResponseField name="Id" type="string">
    Max length: 128 characters (see [data formats](/api-reference/overview/data-formats) for details)

    The unique identifier of the object.
  </ResponseField>

  <ResponseField name="CreationDate" type="Unix timestamp">
    The date and time at which the object was created.
  </ResponseField>

  <ResponseField name="ResultCode" type="string">
    The code indicating the result of the operation. This information is mostly used to <a href="/errors/codes">handle errors</a> or for filtering purposes.
  </ResponseField>

  <ResponseField name="ResultMessage" type="string">
    The explanation of the result code.
  </ResponseField>

  <ResponseField name="Status" type="string">
    **Returned values:** `CREATED`, `SUCCEEDED`, `FAILED`

    The status of the transaction.
  </ResponseField>

  <ResponseField name="ExecutionDate" type="Unix timestamp">
    The date and time at which the status changed to `SUCCEEDED`, indicating that the transaction occurred. The statuses `CREATED` and `FAILED` return an `ExecutionDate` of `null`.
  </ResponseField>

  <ResponseField name="Type" type="string">
    **Returned values:** `PAYIN`, `TRANSFER`, `CONVERSION`, `PAYOUT`

    The type of the transaction.
  </ResponseField>

  <ResponseField name="Nature" type="string">
    **Returned values:** `REGULAR`, `REPUDIATION`, `REFUND`, `SETTLEMENT`

    The nature of the transaction, providing more information about the context in which the transaction occurred:

    * `REGULAR` – Relative to most of the transactions (pay-ins, payouts, and transfers) in a usual workflow.
    * `REPUDIATION` – Automatic withdrawal of funds from the platform’s repudiation wallet as part of the dispute process (when the user has requested a chargeback).
    * `REFUND` – Reimbursement of a transaction to the user (pay-in refund), to a wallet (transfer refund), or of a payout (payout refund, only initiated by Mangopay).
    * `SETTLEMENT` – Transfer made to the repudiation wallet by the platform to settle a lost dispute.
  </ResponseField>

  <ResponseField name="PaymentType" type="string">
    **Returned values:** `CARD`, `DIRECT_DEBIT`, `PREAUTHORIZED`, `BANK_WIRE`

    The type of pay-in.
  </ResponseField>

  <ResponseField name="ExecutionType" type="string">
    **Returned values:** `WEB`, `DIRECT`, `EXTERNAL_INSTRUCTION`

    The type of execution for the pay-in.
  </ResponseField>

  <ResponseField name="DebitedFunds" type="object">
    Information about the debited funds.

    <Expandable title="properties">
      <ResponseField name="Currency" type="string">
        **Returned values:** The three-letter <a href="/api-reference/overview/data-formats" target="_blank">ISO 4217 code</a> (EUR, GBP, etc.) of a <a href="/guides/currencies" target="_blank">supported currency</a> (depends on feature, contract, and activation settings).

        The currency of the funds.
      </ResponseField>

      <ResponseField name="Amount" type="integer">
        An amount of money in the smallest sub-division of the currency (e.g., EUR 12.60 would be represented as `1260` whereas JPY 12 would be represented as just `12`).
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="CreditedFunds" type="object">
    Information about the credited funds (`CreditedFunds` = `DebitedFunds` - `Fees`).

    <Expandable title="properties">
      <ResponseField name="Currency" type="string">
        **Returned values:** The three-letter <a href="/api-reference/overview/data-formats" target="_blank">ISO 4217 code</a> (EUR, GBP, etc.) of a <a href="/guides/currencies" target="_blank">supported currency</a> (depends on feature, contract, and activation settings).

        The currency of the funds.
      </ResponseField>

      <ResponseField name="Amount" type="integer">
        An amount of money in the smallest sub-division of the currency (e.g., EUR 12.60 would be represented as `1260` whereas JPY 12 would be represented as just `12`).
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="Fees" type="object">
    Information about the fees.

    <Expandable title="properties">
      <ResponseField name="Currency" type="string">
        **Returned values:** The three-letter <a href="/api-reference/overview/data-formats" target="_blank">ISO 4217 code</a> (EUR, GBP, etc.) of a <a href="/guides/currencies" target="_blank">supported currency</a> (depends on feature, contract, and activation settings).

        The currency of the fees.
      </ResponseField>

      <ResponseField name="Amount" type="integer">
        An amount of money in the smallest sub-division of the currency (e.g., EUR 12.60 would be represented as `1260` whereas JPY 12 would be represented as just `12`).
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="Tag" type="string">
    Max. length: 255 characters

    Custom data that you can add to this object.\
    For transactions (pay-in, transfer, payout), you can use this parameter to identify corresponding information regarding the user, transaction, or payment methods on your platform.
  </ResponseField>

  <ResponseField name="AuthenticationResult" type="object | null" defaultOpen>
    Information about the authentication result, based on the request made by Mangopay and the decision of the issuer regarding the type of authentication to be enforced (if applicable).

    <Expandable title="properties">
      <ResponseField name="AuthenticationType" type="string | null">
        Response values: `CHALLENGE`, `FRICTIONLESS`, `DIRECT_AUTHORIZATION`

        The type of authentication:

        * `CHALLENGE` – The issuer requested SCA to be enforced (for example, using 3DS).
        * `FRICTIONLESS` – The transaction was exempted from SCA because an exemption was granted by the issuer.
        * `DIRECT_AUTHORIZATION` – The transaction was sent to the issuer for authorization without any frictionless or challenge (for example, if SCA doesn't apply).

        A `null` value typically indicates that authentication was not requested (for example, because the request failed before being sent) or a decision was not received.
      </ResponseField>
    </Expandable>
  </ResponseField>
</Accordion>

<Accordion title="400 - CreditedWalletId not owned by Preauthorization object's AuthorId">
  ```json theme={null}
  {
      "Message": "CreditedUserExternalId:204069570 must be Equal to authorId:204068024.",
      "Type": "invalid_action",
      "Id": "42ba6af2-75ba-4d2b-92e9-b72650db3787",
      "Date": 1696492277,
      "errors": null
  }  
  ```
</Accordion>

<ResponseExample>
  ```json 200 theme={null}
  {
      "AuthorId": "user_m_01KHXAHEBRWSZXJY85TPPR56TK",
      "CreditedUserId": "user_m_01KHXAHEBRWSZXJY85TPPR56TK",
      "CreditedWalletId": "wlt_m_01KHXAHH2NA3AAMPGE1SJPHJDJ",
      "DepositId": "deposit_wt_073099a9-4e14-42b7-9bc7-d1978f65d8ba",
      "Id": "wt_28217024-04e1-400b-b902-15bc2cca8a82",
      "CreationDate": 1771585285,
      "ResultCode": "000000",
      "ResultMessage": "Success",
      "Status": "SUCCEEDED",
      "ExecutionDate": 1771585286,
      "Type": "PAYIN",
      "Nature": "REGULAR",
      "PaymentType": "PREAUTHORIZED",
      "ExecutionType": "DIRECT",
      "DebitedFunds": {
          "Currency": "EUR",
          "Amount": 20000
      },
      "CreditedFunds": {
          "Currency": "EUR",
          "Amount": 19000
      },
      "Fees": {
          "Currency": "EUR",
          "Amount": 1000
      },
      "Tag": "Created using Mangopay API Postman Collection",
      "StatementDescriptor": null,
      "AuthenticationResult": {
          "AuthenticationType": "CHALLENGE"
      }
  }  
  ```
</ResponseExample>

<RequestExample>
  ```json REST   theme={null}
  {
      "AuthorId": "user_m_01KHXAHEBRWSZXJY85TPPR56TK",
      "CreditedWalletId": "wlt_m_01KHXAHH2NA3AAMPGE1SJPHJDJ",
      "DebitedFunds": {
          "Currency": "EUR",
          "Amount": 20000
      },
      "Fees": {
          "Currency": "EUR",
          "Amount": 1000
      },
      "DepositId": "deposit_wt_073099a9-4e14-42b7-9bc7-d1978f65d8ba",
      "Tag": "Created using Mangopay API Postman Collection"
  }  
  ```

  ```php PHP theme={null}
  <?php 

  require_once 'vendor/autoload.php';

  use MangoPay\MangoPayApi;
  use MangoPay\Libraries\ResponseException as MGPResponseException;
  use MangoPay\Libraries\Exception as MGPException;

  $api = new MangoPayApi();

  $api->Config->ClientId = 'your-client-id';
  $api->Config->ClientPassword = 'your-api-key';
  $api->Config->TemporaryFolder = 'tmp/';

  try {
    $userId = 'user_m_01HQK25M6KVHKDV0S36JY9NRKR';
    $cardId = 'card_m_01HT2C9KB8A6NZCN2X4PRMHHRX';
    $walletId = 'wlt_m_01HQT6422EER2N7FPRXWTSDCSV';
    $depositId = 'deposit_m_01HT2F0KX72D4JE70T4RQRT9XN';

    $depositPayIn = new CreateCardPreAuthorizedDepositPayIn();
    $depositPayIn->AuthorId = $userId;
    $depositPayIn->DepositId = $depositId;
    $depositPayIn->CreditedWalletId = $walletId;

    $depositPayIn->DebitedFunds = new Money();
    $depositPayIn->DebitedFunds->Amount = 1000;
    $depositPayIn->DebitedFunds->Currency = 'EUR';

    $depositPayIn->Fees = new Money();
    $depositPayIn->Fees->Amount = 0;
    $depositPayIn->Fees->Currency = 'EUR';

    $createPayIn = $api->PayIns->CreateCardPreAuthorizedDepositPayIn($depositPayIn);

    print_r($createPayIn);
  } catch(MGPResponseException $e) {
    print_r($e);
  } catch(MGPException $e) {
    print_r($e);
  }
  ```

  ```java Java  theme={null}
  import com.google.gson.Gson;
  import com.google.gson.GsonBuilder;
  import com.mangopay.MangoPayApi;
  import com.mangopay.core.Money;
  import com.mangopay.core.enumerations.CurrencyIso;
  import com.mangopay.entities.CardPreAuthorizedDepositPayIn;
  import com.mangopay.entities.subentities.CreateCardPreAuthorizedDepositPayIn;

  public class CreateDepositPreauthPayIn {
          public static void main(String[] args) throws Exception {
          MangoPayApi mangopay = new MangoPayApi();
          mangopay.getConfig().setClientId("your-client-id");
          mangopay.getConfig().setClientPassword("your-api-key");
          
          var userId = "user_m_01HT2NFK7Z2BRQNGNHMY30VVTT";
          var walletId = "wlt_m_01HTF5S9MG0XXBZ8A0550MED3Z";
          var depositId = "deposit_m_01J21R19BR04YQ9XTPH7860BFV";

          CreateCardPreAuthorizedDepositPayIn payin = new CreateCardPreAuthorizedDepositPayIn();

          payin.setAuthorId(userId);
          payin.setCreditedWalletId(walletId);
          payin.setDebitedFunds(new Money(CurrencyIso.EUR, 1000));
          payin.setFees(new Money(CurrencyIso.EUR, 1000));   
          payin.setDepositId(depositId);
          payin.setTag("Created using the Mangopay Java SDK");

          CardPreAuthorizedDepositPayIn createPayin = mangopay.getPayInApi().createCardPreAuthorizedDepositPayIn(payin, null);
          
          Gson prettyPrint = new GsonBuilder().setPrettyPrinting().create();
          String prettyJson = prettyPrint.toJson(createPayin);

          System.out.println(prettyJson);
      }
  }
  ```

  ```python Python   theme={null}
  from pprint import pprint
  import mangopay

  mangopay.client_id='your-client-id'
  mangopay.apikey='your-api-key'

  from mangopay.api import APIRequest
  handler = APIRequest(sandbox=True)

  from mangopay.resources import NaturalUser, CardPreAuthorizedDepositPayIn
  from mangopay.utils import Money

  natural_user = NaturalUser.get('213753890')

  preauthorized_deposit_payin = CardPreAuthorizedDepositPayIn(
      author_id = natural_user.id,
      credited_wallet_id = '213754077',
      deposit_id = '3766b5f6-717b-4863-b0e9-aab4d174ad88',
      debited_funds =  Money(amount=10, currency='EUR'),
      fees = Money(amount=0, currency='EUR'),
      tag='Created using the Mangopay Python SDK'
  )

  create_preauthorized_deposit_payin = preauthorized_deposit_payin.save()

  pprint(create_preauthorized_deposit_payin)  
  ```

  ```csharp .NET  theme={null}
  using MangoPay.SDK;
  using MangoPay.SDK.Entities.PUT;
  using Newtonsoft.Json;

  class Program
  {
      static async Task Main(string[] args)
      {
              MangoPayApi api = new MangoPayApi();

              api.Config.ClientId = "your-client-id";
              api.Config.ClientPassword = "your-api-key";

              var walletId = "wlt_m_01J30991BXBB7VF28PBS82EWD3";
              var depositId = "deposit_m_01J332W8CHP62NYWXTQFHSQ6SR";

              var depositPayIn = new CardPreAuthorizedDepositPayInPostDTO (
                  walletId,
                  new Money { Amount = 1200, Currency = CurrencyIso.EUR },
                  new Money { Amount = 0, Currency = CurrencyIso.EUR },
                  depositId
              ) {
                  Tag = "Created using the Mangopay .NET SDK"
              };
              
              var createDepositPayIn = await api.PayIns.CreateCardPreAuthorizedDepositPayIn(depositPayIn);

              string prettyPrint = JsonConvert.SerializeObject(createDepositPayIn, Formatting.Indented);
              Console.WriteLine(prettyPrint);
      }
  }
  ```
</RequestExample>
