> ## 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 Web Card PayIn

<Note>
  **Note – Timeout after 15 minutes**

  The hosted payment page session on the `RedirectURL` lasts 15 minutes, at which point the pay-in fails automatically with result code [101109](/errors/codes/101109) if it is not completed by the user.
</Note>

<Warning>
  **Caution – TemplateURL customization feature deprecated**

  The `TemplateURL` response parameter is deprecated and must no longer be used to redirect the user. You must redirect the user on the `RedirectURL`.

  The `TemplateURLOptions` body parameter is also deprecated as the feature allowing minor customization of the hosted page is no longer supported.
</Warning>

### Body parameters

<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>

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

<ParamField body="CreditedUserId" type="string">
  **Default value:** The unique identifier of the owner of the credited wallet.

  The unique identifier of the user whose wallet is credited.
</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 debited 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 taken by the platform for this transaction (and hence transferred to the Fees Wallet).

  <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="CreditedWalletId" type="string" required>
  The unique identifier of the credited wallet.
</ParamField>

<ParamField body="ReturnURL" type="string" required>
  Max. length: 220 characters

  The URL to which the user is returned after the payment, whether the transaction is successful or not.
</ParamField>

<ParamField body="TemplateURLOptions" type="object" deprecated>
  **Caution:** This customization feature is deprecated and must no longer be used.

  The URL of the SSL page of your customized payment page.

  <Expandable title="properties">
    <ParamField body="PaylineV2" type="string" deprecated>
      **Caution:** This customization feature is deprecated and must no longer be used.

      The URL of the corresponding template with the Javascript widget.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="CardType" type="string" required>
  **Allowed values:** `CB_VISA_MASTERCARD`, `AMEX`, `MAESTRO`, `BCMC`

  The type of the card.
</ParamField>

<ParamField body="Culture" type="string" required>
  **Allowed values:** One of the supported languages in the <a href="/api-reference/overview/data-formats">ISO 639-1 format</a>: CS, DA, DE, EL, EN, ES, FI, FR, HU, IT, NL, NO, PL, PT, SK, SV.

  The language in which the payment page is to be displayed.
</ParamField>

<ParamField body="SecureMode" type="string">
  **Allowed values:** `DEFAULT`, `FORCE`, `NO_CHOICE`

  **Default value:** `DEFAULT`

  The mode applied for the 3DS2 protocol for CB, Visa, and Mastercard. The options are:

  * `DEFAULT` – Requests an exemption to strong customer authentication (SCA), and thus a frictionless payment experience, if allowed by your Mangopay contract and accepted by the issuer.
  * `FORCE` – Requests SCA.
  * `NO_CHOICE` – Leaves the choice to the issuer whether to allow for a frictionless payment experience or to enforce SCA.
</ParamField>

<ParamField body="Billing" type="object">
  **Default value:** FirstName, LastName, and Address information of the Shipping object if any, otherwise the user (author).

  Information about the end user billing address. If left empty, the default values will be automatically taken into account.

  <Expandable title="properties">
    <ParamField body="FirstName" type="string">
      The first name of the user.
    </ParamField>

    <ParamField body="LastName" type="string">
      Max. length: 100 characters

      The last name of the user.
    </ParamField>

    <ParamField body="Address" type="object">
      Information about the billing address.

      <Expandable title="properties">
        <ParamField body="AddressLine1" type="string" required>
          Max. length: 255 characters

          The first line of the address.
        </ParamField>

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

          The second line of the address.
        </ParamField>

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

          The city of the address.
        </ParamField>

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

          Required if `Country` is US, CA, or MX.

          The region of the address.
        </ParamField>

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

          The postal code of the address. The postal code can contain the following characters: alphanumeric, dashes, and spaces.
        </ParamField>

        <ParamField body="Country" type="string" required>
          Format: Two-letter country code ([ISO 3166-1 alpha-2 format](/api-reference/overview/data-formats))

          The country of the address.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="Shipping" type="object">
  **Default value:** FirstName, LastName, and Address information of the Billing object, if supplied, otherwise of the user (author).

  Information about the end user’s shipping address. If left empty, the default values will be automatically taken into account.

  <Expandable title="properties">
    <ParamField body="FirstName" type="string">
      The first name of the user.
    </ParamField>

    <ParamField body="LastName" type="string">
      Max. length: 100 characters

      The last name of the user.
    </ParamField>

    <ParamField body="Address" type="object" required>
      Information about the shipping address.

      <Expandable title="properties">
        <ParamField body="AddressLine1" type="string" required>
          Max. length: 255 characters

          The first line of the address.
        </ParamField>

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

          The second line of the address.
        </ParamField>

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

          The city of the address.
        </ParamField>

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

          Required if `Country` is US, CA, or MX.

          The region of the address.
        </ParamField>

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

          The postal code of the address. The postal code can contain the following characters: alphanumeric, dashes, and spaces.
        </ParamField>

        <ParamField body="Country" type="string" required>
          Format: Two-letter country code ([ISO 3166-1 alpha-2 format](/api-reference/overview/data-formats))

          The country of the address.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="StatementDescriptor" type="string">
  Max. length: 10 characters; only alphanumeric and spaces

  Custom description to appear on the user’s bank statement along with the platform name. Different banks may show more or less information. See the <a href="/bank-statements">Customizing bank statement references</a> article for details.
</ParamField>

<ParamField body="ProfilingAttemptReference" type="string">
  The unique reference generated for the profiling session, used by the <a href="/guides/fraud-prevention">fraud prevention</a> solution to produce recommendations for the transaction using the profiling data.

  **Note:** Parameter not returned by the API. Profiling feature available on request – contact Mangopay <a href="https://hub.mangopay.com/" target="_blank">via the Dashboard</a> for more information.
</ParamField>

### Responses

<AccordionGroup>
  <Accordion title="200">
    <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="AuthorId" type="string">
      The unique identifier of the user at the source of the transaction.
    </ResponseField>

    <ResponseField name="CreditedUserId" type="string">
      **Default value:** The unique identifier of the owner of the credited wallet.

      The unique identifier of the user whose wallet is credited.
    </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 debited 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 credited 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 taken by the platform for this transaction (and hence transferred to the Fees Wallet).

      <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="Status" type="string">
      **Returned values:** `CREATED`, `SUCCEEDED`, `FAILED`

      The status of the transaction.
    </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="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="CreditedWalletId" type="string">
      The unique identifier of the credited wallet.
    </ResponseField>

    <ResponseField name="DebitedWalletId" type="string">
      The unique identifier of the debited wallet.

      In the case of a pay-in, this value is always `null` since there is no debited wallet.
    </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="RedirectURL" type="string">
      The URL to which to redirect the user to complete the payment.

      **Caution:** This variable URL is specific to each payment. You must rely on the returned URL in full (host, path, and queries) and not hardcode any part of it.
    </ResponseField>

    <ResponseField name="ReturnURL" type="string">
      Max. length: 220 characters

      The URL to which the user is returned after the payment, whether the transaction is successful or not.
    </ResponseField>

    <ResponseField name="TemplateURL" type="string" deprecated>
      **Caution:** This customization feature is deprecated and must no longer be used. You must redirect on the `RedirectURL` instead.

      The customized URL to which to redirect the user to complete the payment.
    </ResponseField>

    <ResponseField name="CardType" type="string">
      **Returned values:** `CB_VISA_MASTERCARD`, `AMEX`, `MAESTRO`, `BCMC`

      The type of the card.
    </ResponseField>

    <ResponseField name="Culture" type="string">
      **Returned values:** One of the supported languages in the <a href="/api-reference/overview/data-formats">ISO 639-1 format</a>: CS, DA, DE, EL, EN, ES, FI, FR, HU, IT, NL, NO, PL, PT, SK, SV.

      The language in which the payment page is to be displayed.
    </ResponseField>

    <ResponseField name="SecureMode" type="string">
      **Returned values:** `DEFAULT`, `FORCE`, `NO_CHOICE`

      The mode applied for the 3DS2 protocol for CB, Visa, and Mastercard. The options are:

      * `DEFAULT` – Requests an exemption to strong customer authentication (SCA), and thus a frictionless payment experience, if allowed by your Mangopay contract and accepted by the issuer.
      * `FORCE` – Requests SCA.
      * `NO_CHOICE` – Leaves the choice to the issuer whether to allow for a frictionless payment experience or to enforce SCA.
    </ResponseField>

    <ResponseField name="Billing" type="object">
      **Default value:** FirstName, LastName, and Address information of the Shipping object if any, otherwise the user (author).

      Information about the end user billing address. If left empty, the default values will be automatically taken into account.

      <Expandable title="properties">
        <ResponseField name="FirstName" type="string">
          The first name of the user.
        </ResponseField>

        <ResponseField name="LastName" type="string">
          Max. length: 100 characters

          The last name of the user.
        </ResponseField>

        <ResponseField name="Address" type="object">
          Information about the billing address.

          <Expandable title="properties">
            <ResponseField name="AddressLine1" type="string">
              Max. length: 255 characters

              The first line of the address.
            </ResponseField>

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

              The second line of the address.
            </ResponseField>

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

              The city of the address.
            </ResponseField>

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

              The region of the address. This field is optional except if the `Country` is US, CA, or MX.
            </ResponseField>

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

              The postal code of the address. The postal code can contain the following characters: alphanumeric, dashes, and spaces.
            </ResponseField>

            <ResponseField name="Country" type="string">
              Format: Two-letter country code ([ISO 3166-1 alpha-2 format](/api-reference/overview/data-formats))

              The country of the address.
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="Shipping" type="object">
      **Default value:** FirstName, LastName, and Address information of the Billing object, if supplied, otherwise of the user (author).

      Information about the end user’s shipping address. If left empty, the default values will be automatically taken into account.

      <Expandable title="properties">
        <ResponseField name="FirstName" type="string">
          The first name of the user.
        </ResponseField>

        <ResponseField name="LastName" type="string">
          Max. length: 100 characters

          The last name of the user.
        </ResponseField>

        <ResponseField name="Address" type="object">
          Information about the shipping address.

          <Expandable title="properties">
            <ResponseField name="AddressLine1" type="string">
              Max. length: 255 characters

              The first line of the address.
            </ResponseField>

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

              The second line of the address.
            </ResponseField>

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

              The city of the address.
            </ResponseField>

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

              The region of the address. This field is optional except if the `Country` is US, CA, or MX.
            </ResponseField>

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

              The postal code of the address. The postal code can contain the following characters: alphanumeric, dashes, and spaces.
            </ResponseField>

            <ResponseField name="Country" type="string">
              Format: Two-letter country code ([ISO 3166-1 alpha-2 format](/api-reference/overview/data-formats))

              The country of the address.
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="StatementDescriptor" type="string">
      Max. length: 10 characters; only alphanumeric and spaces

      Custom description to appear on the user’s bank statement along with the platform name. Different banks may show more or less information. See the <a href="/bank-statements">Customizing bank statement references</a> article for details.
    </ResponseField>

    <ResponseField name="BankName" type="string">
      The user’s bank, if the `CardType` is `IDEAL`, as defined by the `Bic` parameter sent in the call. This parameter is `null` for other card types or if the BIC was not sent on the legacy iDEAL implementation. See <a href="/api-reference/ideal/create-web-card-payin-ideal">Create a Web Card PayIn (iDEAL)</a> for more information. 
    </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>
</AccordionGroup>

<ResponseExample>
  ```json 200 - CREATED theme={null}
  {
      "Id": "wt_f0f67b58-2856-469c-952c-b06e556a70e6",
      "Tag": "Created using the Mangopay API Postman collection",
      "CreationDate": 1746006308,
      "AuthorId": "user_m_01JHQRCND66XP99SVBXQRP54MF",
      "CreditedUserId": "user_m_01JHQRCND66XP99SVBXQRP54MF",
      "DebitedFunds": {
          "Currency": "EUR",
          "Amount": 2000
      },
      "CreditedFunds": {
          "Currency": "EUR",
          "Amount": 1900
      },
      "Fees": {
          "Currency": "EUR",
          "Amount": 100
      },
      "Status": "CREATED",
      "ResultCode": null,
      "ResultMessage": null,
      "ExecutionDate": null,
      "Type": "PAYIN",
      "Nature": "REGULAR",
      "CreditedWalletId": "wlt_m_01JHQRD0WZ1QWKNAMQF93E5M15",
      "DebitedWalletId": null,
      "PaymentType": "CARD",
      "ExecutionType": "WEB",
      "RedirectURL": "https://pay.mangopay.com?id=wt_f0f67b58-2856-469c-952c-b06e556a70e6&client-token=hpp_f5d3a2c1b8e045f7a9d6c3b2a1e9d8c7",
      "ReturnURL": "http://example.com&transactionId=wt_f0f67b58-2856-469c-952c-b06e556a70e6",
      "TemplateURL": null,
      "CardType": "CB_VISA_MASTERCARD",
      "Culture": "EN",
      "SecureMode": "DEFAULT",
      "Billing": {
          "FirstName": "Alex",
          "LastName": "Smith",
          "Address": {
              "AddressLine1": "6 rue de la Cité",
              "AddressLine2": "Appartement 3",
              "City": "Paris",
              "Region": "Île-de-France",
              "PostalCode": "75001",
              "Country": "FR"
          }
      },
      "Shipping": {
          "FirstName": "Alex",
          "LastName": "Smith",
          "Address": {
              "AddressLine1": "6 rue de la Cité",
              "AddressLine2": "Appartement 3",
              "City": "Paris",
              "Region": "Île-de-France",
              "PostalCode": "75001",
              "Country": "FR"
          }
      },
      "StatementDescriptor": "Example123",
      "BankName": null,
      "AuthenticationResult": {
          "AuthenticationType": "FRICTIONLESS"
      }
  }
  ```
</ResponseExample>

<RequestExample>
  ```json REST   theme={null}
  {
      "Tag": "Created using the Mangopay API Postman collection",
      "AuthorId": "user_m_01JHQRCND66XP99SVBXQRP54MF",
      "DebitedFunds": {
          "Currency": "EUR",
          "Amount": 2000
      },
      "Fees": {
          "Currency": "EUR",
          "Amount": 100
      },
      "CreditedWalletId": "wlt_m_01JHQRD0WZ1QWKNAMQF93E5M15",
      "ReturnURL": "http://www.example.com",
      "Culture": "EN",
      "SecureMode": "DEFAULT",
      "Billing": {
          "FirstName": "Alex",
          "LastName": "Smith",
          "Address": {
              "AddressLine1": "6 rue de la Cité",
              "AddressLine2": "Appartement 3",
              "City": "Paris",
              "Region": "Île-de-France",
              "PostalCode": "75001",
              "Country": "FR"
          }
      },
      "Shipping": {
          "FirstName": "Alex",
          "LastName": "Smith",
          "Address": {
              "AddressLine1": "6 rue de la Cité",
              "AddressLine2": "Appartement 3",
              "City": "Paris",
              "Region": "Île-de-France",
              "PostalCode": "75001",
              "Country": "FR"
          }
      },
      "StatementDescriptor": "Example123"
  }
  ```

  ```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 {
      $payIn = new \MangoPay\PayIn();

      $payIn->Tag = 'Created using Mangopay PHP SDK';
      $payIn->CreditedWalletId = '148968396';
      $payIn->PaymentType = 'CARD';
      $payIn->AuthorId = '146476890';

      $payIn->DebitedFunds = new \MangoPay\Money();
      $payIn->DebitedFunds->Amount = 1000;
      $payIn->DebitedFunds->Currency = 'EUR';

      $payIn->Fees = new \MangoPay\Money();
      $payIn->Fees->Amount = 10;
      $payIn->Fees->Currency = 'EUR';

      $payIn->PaymentDetails = new \MangoPay\PayInPaymentDetailsCard();
      $payIn->PaymentDetails->CardType = 'CB_VISA_MASTERCARD';

      $payIn->ExecutionType = 'WEB';
      $payIn->ExecutionDetails = new \MangoPay\PayInExecutionDetailsWeb();
      $payIn->ExecutionDetails->ReturnURL = 'http://example.com';
      $payIn->ExecutionDetails->Culture = 'FR';

      $response = $api->PayIns->Create($payIn);

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

  ```javascript NodeJS   theme={null}
  const mangopayInstance = require('mangopay4-nodejs-sdk')
  const mangopay = new mangopayInstance({
      clientId: 'your-client-id',
      clientApiKey: 'your-api-key',
  })

  let myPayIn = {
    PaymentType: 'CARD',
    ExecutionType: 'WEB',
    AuthorId: '146476890',
    Tag: 'Created with Mangopay Node.js SDK',
    CreditedUserId: '146476890',
    DebitedFunds: {
      Currency: 'EUR',
      Amount: 1000,
    },
    Fees: {
      Currency: 'EUR',
      Amount: 100,
    },
    CreditedWalletId: '148968396',
    ReturnURL: 'http://example.com',
    CardType: 'CB_VISA_MASTERCARD',
    Culture: 'EN',
    SecureMode: 'DEFAULT',
    Billing: {
      FirstName: 'Alex',
      LastName: 'Smith',
      Address: {
        AddressLine1: 'Rue des plantes',
        AddressLine2: 'The Oasis',
        City: 'Paris',
        Region: 'IDF',
        PostalCode: '75000',
        Country: 'FR',
      },
    },
    Shipping: {
      FirstName: 'Alex',
      LastName: 'Smith',
      Address: {
        AddressLine1: 'Rue des plantes',
        AddressLine2: 'The Oasis',
        City: 'Paris',
        Region: 'IDF',
        PostalCode: '75000',
        Country: 'FR',
      },
    },
    StatementDescriptor: 'Nov2023',
  }

  const createWebCardPayIn = async (payin) => {
    return await mangopay.PayIns.create(payin)
      .then((response) => {
        console.info(response)
        return response
      })
      .catch((err) => {
        console.log(err)
        return false
      })
  }

  createWebCardPayIn(myPayIn)  
  ```

  ```ruby Ruby   theme={null}
  require 'mangopay'

  MangoPay.configure do |client|
      client.preproduction = true
      client.client_id = 'your-client-id'
      client.client_apiKey = 'your-api-key'
      client.log_file = File.join(Dir.pwd, 'mangopay.log')
  end

  def createPayPalPayIn(payInObject)
      begin
          response = MangoPay::PayIn::PayPal::Web.create(payInObject)
          puts response
          return response
      rescue MangoPay::ResponseError => error
          puts "Failed to create pay-in: #{error.message}"
          puts "Error details: #{error.details}"
          return false
      end
  end

  myPayIn = {
    AuthorId: '192822811',
    Tag: 'Created with Mangopay Ruby SDK',
    CreditedUserId: '192822811',
    DebitedFunds: {
      Currency: 'EUR',
      Amount: 1500,
    },
    Fees: {
      Currency: 'EUR',
      Amount: 100,
    },
    CreditedWalletId: '192822814',
    ReturnURL: 'http://example.com',
    Culture: 'EN',
    ShippingAddress: {
      RecipientName: 'Alex Smith',
      Address: {
        AddressLine1: 'Rue des plantes',
        AddressLine2: 'The Oasis',
        City: 'Paris',
        Region: 'IDF',
        PostalCode: '75000',
        Country: 'FR',
      },
    },
    StatementDescriptor: 'Nov2023',
  }

  createPayPalPayIn(myPayIn)  
  ```

  ```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.CardType;
  import com.mangopay.core.enumerations.CultureCode;
  import com.mangopay.core.enumerations.CurrencyIso;
  import com.mangopay.core.enumerations.PayInExecutionType;
  import com.mangopay.core.enumerations.PayInPaymentType;
  import com.mangopay.entities.PayIn;
  import com.mangopay.entities.subentities.PayInExecutionDetailsWeb;
  import com.mangopay.entities.subentities.PayInPaymentDetailsCard;

  public class CreateWebCardPayin {
      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_01HTHTXEF4BJCTKMXNWMSZ6KP5";

          PayIn webCardPayin = new PayIn();

          webCardPayin.setAuthorId(userId);
          webCardPayin.setCreditedUserId(userId);
          webCardPayin.setCreditedWalletId(walletId);
          webCardPayin.setPaymentType(PayInPaymentType.CARD);
          webCardPayin.setExecutionType(PayInExecutionType.WEB);
          webCardPayin.setDebitedFunds(new Money(CurrencyIso.EUR, 1000));
          webCardPayin.setFees(new Money(CurrencyIso.EUR, 0));
          webCardPayin.setTag("Created using the Mangopay Java SDK");

          PayInExecutionDetailsWeb executionDetails = new PayInExecutionDetailsWeb();
          executionDetails.setReturnUrl("https://www.mangopay.com/docs/please-ignore");
          executionDetails.setCulture(CultureCode.FR);
          webCardPayin.setExecutionDetails(executionDetails);

          PayInPaymentDetailsCard paymentDetails = new PayInPaymentDetailsCard();
          paymentDetails.setCardType(CardType.CB_VISA_MASTERCARD);
          webCardPayin.setPaymentDetails(paymentDetails);

          PayIn createwebCardPayIn = mangopay.getPayInApi().create(webCardPayin);

          Gson prettyPrint = new GsonBuilder().setPrettyPrinting().create();
          String prettyJson = prettyPrint.toJson(createwebCardPayIn);

          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, Wallet, Money, CardWebPayIn

  natural_user = NaturalUser.get('210513027')
  natural_user_wallet = Wallet.get('210514820')

  web_card_payin = CardWebPayIn(
      author_id = natural_user.id,
      debited_funds = Money(amount=1000, currency='EUR'),
      fees = Money(amount=0, currency='EUR'),
      credited_wallet_id = natural_user_wallet.id,
      return_url = 'http://example.com', 
      culture = 'EN',
      card_type = 'CB_VISA_MASTERCARD', 
      tag = 'Created using Mangopay Python SDK'
  )

  create_web_card_payin = web_card_payin.save()

  pprint(create_web_card_payin)  
  ```

  ```csharp .NET  theme={null}
  using MangoPay.SDK;
  using MangoPay.SDK.Core.Enumerations;
  using MangoPay.SDK.Entities;
  using MangoPay.SDK.Entities.POST;
  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 userId = "user_m_01J2TZ261WZNDM0ZDRWGDYA4GN";
          var walletId = "wlt_m_01J30991BXBB7VF28PBS82EWD3";

          var webCardPayIn = new PayInCardWebPostDTO (
              userId,
              new Money { Amount = 5000, Currency = CurrencyIso.EUR },
              new Money { Amount = 0, Currency = CurrencyIso.EUR },
              walletId,
              "http://www.mangopay.com/docs/please-ignore",
              CultureCode.FR,
              CardType.CB_VISA_MASTERCARD,
              "MGP",
              "BINAADADXXX"
          ) {
              Tag = "Created using the Mangopay .NET SDK"
          };

          var createWebCardPayIn = await api.PayIns.CreateCardWebAsync(webCardPayIn);
          
          string prettyPrint = JsonConvert.SerializeObject(createWebCardPayIn, Formatting.Indented);
          Console.WriteLine(prettyPrint);
      }
  }
  ```
</RequestExample>
