> ## 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 Bancontact PayIn

<Note>
  **Note – Timeout after 1 hour**

  The Bancontact payment session lasts for 1 hour, at which point the pay-in fails automatically if no action has been taken by the user.
</Note>

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

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

  The URL to which the user is returned after the payment, whether the transaction is successful or not.
</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>

<ResponseField name="Recurring" type="boolean">
  Whether or not the pay-in forms part of a Bancontact recurring payment flow (not yet available).
</ResponseField>

<ResponseField name="Culture" type="string">
  **Allowed values:** One of the supported languages in the ISO 639-1 format: DE, EN, FR, NL

  **Default value:** FR

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

<ParamField body="PaymentFlow" type="string">
  **Allowed values:** `WEB`, `APP`

  **Default value:** `WEB`

  The platform environment of the post-payment flow. The `PaymentFlow` value combines with the `ReturnURL` to manage the redirection behavior after payment:

  * Set the value to `APP` to send the user to your platform's mobile app
  * Set the value to `WEB` to send the user to a web browser

  In both cases you need to provide the relevant `ReturnURL`, whether to your app or website.
</ParamField>

### Responses

<Accordion title="200 - Created">
  <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="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="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="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="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="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="PaymentType" type="string">
    **Returned values:** `BCMC`

    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="ReturnURL" type="string">
    Max. length: 255 characters

    The URL to which the user is returned after the payment, whether the transaction is successful or not.
  </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="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="Recurring" type="boolean">
    Whether or not the pay-in forms part of a Bancontact recurring payment flow (not yet available).
  </ResponseField>

  <ResponseField name="Culture" type="string">
    **Allowed values:** One of the supported languages in the ISO 639-1 format: DE, EN, FR, NL

    **Default value:** FR

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

  <ResponseField name="PaymentFlow" type="string">
    **Allowed values:** `WEB`, `APP`

    **Default value:** `WEB`

    The platform environment of the post-payment flow. The `PaymentFlow` value combines with the `ReturnURL` to manage the redirection behavior after payment:

    * Set the value to `APP` to send the user to your platform's mobile app
    * Set the value to `WEB` to send the user to a web browser

    In both cases you need to provide the relevant `ReturnURL`, whether to your app or website.
  </ResponseField>

  <ResponseField name="DeepLinkURL" type="string">
    The mobile URL to which to redirect the user to complete the payment in an app-to-app flow.

    **Note:** In Sandbox, this value is a placeholder: the `RedirectURL` must be used to complete the payment using Mangopay’s web-based simulator.
  </ResponseField>
</Accordion>

<ResponseExample>
  ```json 200 - Created   theme={null}
  {
      "Id": "wt_45b42782-5fb1-4083-9c77-43b573af7deb",
      "Tag": "Created using the Mangopay API Postman collection",
      "CreationDate": 1718721483,
      "AuthorId": "user_m_01HZSK5MX04KS9Q7SQSSRGQQ4Q",
      "DebitedFunds": {
          "Currency": "EUR",
          "Amount": 1627
      },
      "CreditedFunds": {
          "Currency": "EUR",
          "Amount": 1464
      },
      "Fees": {
          "Currency": "EUR",
          "Amount": 163
      },
      "Status": "CREATED",
      "ResultCode": null,
      "ResultMessage": null,
      "ExecutionDate": null,
      "Type": "PAYIN",
      "Nature": "REGULAR",
      "CreditedWalletId": "wlt_m_01HW8AS48VH6MRXVT44RKK5RW1",
      "CreditedUserId": "user_m_01HSDQD2RPPQ8NMM36EDGYBMEY",
      "PaymentType": "BCMC",
      "ExecutionType": "WEB",
      "ReturnURL": "https://www.mangopay.com/docs/please-ignore?transactionId=wt_45b42782-5fb1-4083-9c77-43b573af7deb",
      "RedirectURL": "https://r3.girogate.de/ti/simbcmc?tx=2222192564&rs=NXyX461Ol79WBMuNVLDUQFDQrkgKDOte&cs=05e30e859ba461b405ff6696796caf4df5b277178484337a85bfa098049467a6",
      "StatementDescriptor": "Example123",
      "Recurring": false,
      "Culture": "EN",
      "PaymentFlow": "APP",
      "DeepLinkURL": "BEP://1BC.GIROGATE.DE/BCMC/123456789$ICAE3BUIH5P9U53Y5HKA9CRT"
  }
  ```
</ResponseExample>

<RequestExample>
  ```json REST   theme={null}
  {
    "Tag": "Created using the Mangopay API Postman collection",
    "AuthorId": "user_m_01HZSK5MX04KS9Q7SQSSRGQQ4Q",
    "DebitedFunds": {
      "Currency": "EUR",
      "Amount": 1627
    },
    "Fees": {
      "Currency": "EUR",
      "Amount": 163
    },
    "CreditedWalletId": "wlt_m_01HW8AS48VH6MRXVT44RKK5RW1",
    "ReturnURL": "https://www.mangopay.com/docs/please-ignore",
    "StatementDescriptor" : "Example123",
    "Recurring" : false,
    "Culture" : "EN",
    "PaymentFlow": "APP"
  }  
  ```

  ```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.CultureCode;
  import com.mangopay.core.enumerations.CurrencyIso;
  import com.mangopay.core.enumerations.PaymentFlow; 
  import com.mangopay.entities.PayIn;
  import com.mangopay.entities.subentities.PayInExecutionDetailsWeb;
  import com.mangopay.entities.subentities.PayInPaymentDetailsBancontact;

  public class CreateBancontactPayIn {
      public static void main(String[] args) throws Exception {
          MangoPayApi mangopay = new MangoPayApi();
          mangopay.getConfig().setClientId("your-client-id");
          mangopay.getConfig().setClientPassword("your-api-key");

          PayIn bancontactPayIn = new PayIn();
          bancontactPayIn.setAuthorId("user_m_01HZSK5MX04KS9Q7SQSSRGQQ4Q");
          bancontactPayIn.setCreditedWalletId("wlt_m_01HW8AS48VH6MRXVT44RKK5RW1");
          bancontactPayIn.setDebitedFunds(new Money(CurrencyIso.EUR, 1627));
          bancontactPayIn.setFees(new Money(CurrencyIso.EUR, 163));
          bancontactPayIn.setTag("Created using the Mangopay Java SDK");

          PayInPaymentDetailsBancontact paymentDetails = new PayInPaymentDetailsBancontact();
          paymentDetails.setStatementDescriptor("Example123");
          paymentDetails.setRecurring(false);
          bancontactPayIn.setPaymentDetails(paymentDetails);

          PayInExecutionDetailsWeb executionDetails = new PayInExecutionDetailsWeb();
          executionDetails.setCulture(CultureCode.EN);
          executionDetails.setReturnUrl("https://www.mangopay.com/docs/please-ignore");
          executionDetails.setPaymentFlow(PaymentFlow.APP); 
          bancontactPayIn.setExecutionDetails(executionDetails);

          PayIn result = mangopay.getPayInApi().create(bancontactPayIn);

          Gson prettyPrint = new GsonBuilder().setPrettyPrinting().create();
          System.out.println(prettyPrint.toJson(result));
      }
  }
  ```
</RequestExample>
