> ## 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 an MB WAY PayIn

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

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

<Warning>
  **Caution – No phone number validation**

  If the phone number provided is of an accepted format but not valid or not attributed to the corresponding MB WAY user, then the pay-in is created but will fail because the user will not receive a push notification from the MB WAY app.
</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="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="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="Phone" type="string" required>
  Format: Country code without plus symbol, followed by hash symbol (#), followed by the number; only numeric characters and hash symbol

  The phone number of the end user to which the MB WAY push notification is sent to authenticate the transaction.
</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

<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:** `MBWAY`

    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="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="Phone" type="string">
    Format: Country code without plus symbol, followed by hash symbol (#), followed by the number; only numeric characters and hash symbol

    The phone number of the end user to which the MB WAY push notification is sent to authenticate the transaction.
  </ResponseField>
</Accordion>

<Accordion title="400 - Phone format not accepted">
  ```json theme={null}
  {
      "message": "One or several required parameters are missing or incorrect. An incorrect resource ID also raises this kind of error.",
      "id": "401918a7-aab9-4b55-b09d-45007b96523d",
      "date": 1696931925,
      "type": "param_error",
      "errors": {
          "phone": "The field must match the regular expression '^\\d{1,5}#\\d{4,11}$'."
      }
  }  
  ```
</Accordion>

<ResponseExample>
  ```json 200 - Created   theme={null}
  {
      "Id": "wt_9fb9e538-7a0b-417e-af6e-196d2a7ffb5b",
      "Tag": "Created using the Mangopay API Postman collection",
      "CreationDate": 1696930998,
      "AuthorId": "204068024",
      "DebitedFunds": {
          "Currency": "EUR",
          "Amount": 5000
      },
      "CreditedFunds": {
          "Currency": "EUR",
          "Amount": 5000
      },
      "Fees": {
          "Currency": "EUR",
          "Amount": 0
      },
      "Status": "CREATED",
      "ResultCode": null,
      "ResultMessage": null,
      "ExecutionDate": null,
      "Type": "PAYIN",
      "Nature": "REGULAR",
      "CreditedWalletId": "204089031",
      "CreditedUserId": "204068024",
      "PaymentType": "MBWAY",
      "ExecutionType": "WEB",
      "StatementDescriptor": "Mangopay",
      "Phone": "33#652317567"
  }  
  ```
</ResponseExample>

<RequestExample>
  ```json REST   theme={null}
  {
      "AuthorId": "204068024",
      "DebitedFunds": {
          "Currency": "EUR",
          "Amount": 5000
      },
      "Fees": {
          "Currency": "EUR",
          "Amount": 0
      },
      "CreditedWalletId": "204089031",
      "StatementDescriptor": "Mangopay",
      "Tag": "Created using the Mangopay API Postman collection",
      "Phone": "33#652317567"
  }  
  ```

  ```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.core.enumerations.PayInExecutionType;
  import com.mangopay.core.enumerations.PayInPaymentType;
  import com.mangopay.entities.PayIn;
  import com.mangopay.entities.subentities.PayInPaymentDetailsMbway;

  public class CreateMBWayPayIn {
      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 mbWayPayin = new PayIn();
          mbWayPayin.setPaymentType(PayInPaymentType.MBWAY);
          mbWayPayin.setExecutionType(PayInExecutionType.WEB);
          mbWayPayin.setAuthorId(userId);
          mbWayPayin.setCreditedWalletId(walletId);
          mbWayPayin.setDebitedFunds(new Money(CurrencyIso.EUR, 1000));
          mbWayPayin.setFees(new Money(CurrencyIso.EUR, 0));
          mbWayPayin.setTag("Created using the Mangopay Java SDK");

          PayInPaymentDetailsMbway paymentDetails = new PayInPaymentDetailsMbway();
          paymentDetails.setStatementDescriptor("Jul2024");
          paymentDetails.setPhone("33#652317567");
          mbWayPayin.setPaymentDetails(paymentDetails);

          PayIn createMbWayPayin = mangopay.getPayInApi().create(mbWayPayin);

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

          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, MbwayPayIn
  from mangopay.utils import Money

  natural_user = NaturalUser.get('210513027')

  mbway_payin = MbwayPayIn(
      author_id = natural_user.id,
      credited_wallet_id = '210514820',
      debited_funds = Money(amount=5000, currency='EUR'),
      fees = Money(amount=0, currency='EUR'),
      return_url = 'https://www.mangopay.com/docs/please-ignore',
      statement_descriptor = 'MGP',
      tag = 'Created using Mangopay Python SDK',
      phone = '33#654417453'
  )

  create_mbway_payin = mbway_payin.save()

  pprint(create_mbway_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 payIn = new PayInMbwayWebPostDTO(userId,
              new Money { Amount = 3000, Currency = CurrencyIso.EUR },
              new Money { Amount = 0, Currency = CurrencyIso.EUR },
              walletId, 
              "351#269458236",
              "MGP", 
              "Created using the Mangopay .NET SDK");

          var createMbWayPayIn = await api.PayIns.CreateMbwayWebAsync(payIn);

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