> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.mangopay.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.mangopay.com/_mcp/server.

# Create a BLIK PayIn

POST https://api.sandbox.mangopay.com/v2.01/{ClientId}/payins/payment-methods/blik
Content-Type: application/json

**Note – Timeout after 55 seconds**

The payment session lasts for 55 seconds, at which point the pay-in fails automatically if no action has been taken by the user.

**Note – Minimum amount in Production**

In Production, the minimum accepted amount for BLIK is 0.01 PLN (`1`).

Reference: https://docs.mangopay.com/api-reference/blik/create-blik-payin

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token. If your platform is using a [proxy](/guides/sca/proxy-management) to take SCA-triggering action on behalf of users, you also need to integrate [mTLS authentication](/guides/sca/platform) and use the `api-mtls` base URL.

## Servers

- `https://api.sandbox.mangopay.com` (Sandbox, default)
- `https://api.mangopay.com` (Production)
- `https://api-mtls.sandbox.mangopay.com` (mTLS Sandbox)
- `https://api-mtls.mangopay.com` (mTLS Production)

## Request

### Path parameters

- `ClientId` (string, required) — Platform's API account identifier, associated with the API key.

### Body (application/json)

This endpoint expects a blik_create_blik_payin_Request.

- `blik_create_blik_payin_Request`

## Response

### 200

Success

- `Id` (string, optional) — Max length: 128 characters (see [data formats](/api-reference/overview/data-formats) for details) The unique identifier of the object.
- `Tag` (string, optional) — Max. length: 255 characters Custom data that you can add to this object, such as unique identifiers in your system. To store multiple values, you can serialize them into a single string, for example a JSON object: `"{\"id_1\":AB123,\"id_2\":DE456}"`.
- `CreationDate` (integer, optional) — Unix timestamp (UTC) of the date and time the object was created.
- `AuthorId` (string, optional) — The unique identifier of the user at the source of the transaction.
- `FlowDescriptor` (FlowDescriptorResponse, optional) — Information about the Owner beneficiaries targeted by the pay-in and its subsequent transfers, who must all be KYC/KYB verified when the pay-in request is made ([read more](/guides/payin-beneficiaries)). If the `FlowDescriptor.Beneficiaries` is sent in the API request, then: - The transaction's `CreditedWalletId` holder is disregarded in KYC/KYB checks. - **ALL** `UserId` values in the array must be one of: - `OWNER` whose `KYCLevel` is `REGULAR` - `PLATFORM` The pay-in `Status` becomes `FAILED` with `ResultCode` [002951](/errors/codes/002951) if at least one `FlowDescriptor.Beneficiaries.UserId` is: - `PAYER` - `OWNER` whose `KYCLevel` is `LIGHT` If the `FlowDescriptor.Beneficiaries` is not sent in the API request, then the `CreditedWalletId` holder is subject to KYC/KYB checks. This property is optional for backwards compatibility but is recommended for all pay-in flows, even when the `CreditedWalletId` holder is a `PAYER` or the same value as one of the `FlowDescriptor.Beneficiaries`.
- `DebitedFunds` (BlikPayInResponseDebitedFunds, optional) — Information about the debited funds.
- `CreditedFunds` (BlikPayInResponseCreditedFunds, optional) — Information about the credited funds (`CreditedFunds` = `DebitedFunds` - `Fees`).
- `Fees` (BlikPayInResponseFees, optional) — Information about the fees.
- `Status` (string, optional) — **Returned values:** `CREATED`, `SUCCEEDED`, `FAILED` The status of the transaction.
- `ResultCode` (string, optional) — The code indicating the result of the operation. This information is mostly used to handle errors or for filtering purposes.
- `ResultMessage` (string, optional) — The explanation of the result code.
- `ExecutionDate` (integer, optional) — Unix timestamp (UTC) of the date and time the status changed to `SUCCEEDED`, indicating that the transaction occurred. The statuses `CREATED` and `FAILED` return an `ExecutionDate` of `null`.
- `Type` (string, optional) — **Returned values:** `PAYIN`, `TRANSFER`, `CONVERSION`, `PAYOUT` The type of the transaction.
- `Nature` (string, optional) — **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.
- `CreditedWalletId` (string, optional) — The unique identifier of the credited wallet.
- `PaymentType` (string, optional) — **Returned values:** `BLIK` The payment type of the pay-in.
- `ExecutionType` (string, optional) — **Returned values:** `WEB` The execution type of the pay-in.
- `ReturnURL` (string, optional) — Max. length: 255 characters The URL to which the user is returned after the payment, whether the transaction is successful or not.
- `RedirectURL` (string, optional) — 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.
- `StatementDescriptor` (string, optional) — 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 Customizing bank statement references article for details.
- `Code` (string, optional, nullable) — The 6-digit code sent in the request (otherwise returned `null`).
- `BrowserInfo` (BlikPayInResponseBrowserInfo, optional, nullable) — Information about the browser used by the end user (author) to perform the payment.
- `IpAddress` (string, optional, nullable) — The IP address of the end user initiating the transaction, in IPV4 or IPV6 format.

## Types

### CreateABLIKPayInWithCodeRequest

BLIK pay-in request body including the code generated by the user in their app.

- `AuthorId` (string, required) — The unique identifier of the user at the source of the transaction.
- `CreditedWalletId` (string, required) — The unique identifier of the credited wallet.
- `DebitedFunds` (CreateAblikPayInWithCodeRequestDebitedFunds, required) — Information about the debited funds.
- `Fees` (CreateAblikPayInWithCodeRequestFees, required) — Information about the fees.
- `Code` (string, required) — The 6-digit code from the user's banking application.
- `BrowserInfo` (CreateAblikPayInWithCodeRequestBrowserInfo, required) — Information about the browser used by the end user (author) to perform the payment.
- `IpAddress` (string, required) — The IP address of the end user initiating the transaction, in IPV4 or IPV6 format.
- `Tag` (string, optional) — Max. length: 255 characters Custom data that you can add to this object, such as unique identifiers in your system. To store multiple values, you can serialize them into a single string, for example a JSON object: `"{\"id_1\":AB123,\"id_2\":DE456}"`.
- `FlowDescriptor` (FlowDescriptorRequest, optional) — Information about the Owner beneficiaries targeted by the pay-in and its subsequent transfers, who must all be KYC/KYB verified when the pay-in request is made ([read more](/guides/payin-beneficiaries)). If the `FlowDescriptor.Beneficiaries` is sent in the API request, then: - The transaction's `CreditedWalletId` holder is disregarded in KYC/KYB checks. - **ALL** `UserId` values in the array must be one of: - `OWNER` whose `KYCLevel` is `REGULAR` - `PLATFORM` The pay-in `Status` becomes `FAILED` with `ResultCode` [002951](/errors/codes/002951) if at least one `FlowDescriptor.Beneficiaries.UserId` is: - `PAYER` - `OWNER` whose `KYCLevel` is `LIGHT` If the `FlowDescriptor.Beneficiaries` is not sent in the API request, then the `CreditedWalletId` holder is subject to KYC/KYB checks. This property is optional for backwards compatibility but is recommended for all pay-in flows, even when the `CreditedWalletId` holder is a `PAYER` or the same value as one of the `FlowDescriptor.Beneficiaries`.
- `ReturnURL` (string, optional) — Max. length: 255 characters The URL to which the user is returned after the payment, whether the transaction is successful or not.
- `StatementDescriptor` (string, optional) — 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 Customizing bank statement references article for details.

### CreateABLIKPayInWithoutCodeRequest

BLIK pay-in request body if the user has previously saved your platform, relying only on redirection.

- `AuthorId` (string, required) — The unique identifier of the user at the source of the transaction.
- `CreditedWalletId` (string, required) — The unique identifier of the credited wallet.
- `DebitedFunds` (CreateAblikPayInWithoutCodeRequestDebitedFunds, required) — Information about the debited funds.
- `Fees` (CreateAblikPayInWithoutCodeRequestFees, required) — Information about the fees.
- `ReturnURL` (string, required) — Max. length: 255 characters The URL to which the user is returned after the payment, whether the transaction is successful or not.
- `Tag` (string, optional) — Max. length: 255 characters Custom data that you can add to this object, such as unique identifiers in your system. To store multiple values, you can serialize them into a single string, for example a JSON object: `"{\"id_1\":AB123,\"id_2\":DE456}"`.
- `FlowDescriptor` (FlowDescriptorRequest, optional) — Information about the Owner beneficiaries targeted by the pay-in and its subsequent transfers, who must all be KYC/KYB verified when the pay-in request is made ([read more](/guides/payin-beneficiaries)). If the `FlowDescriptor.Beneficiaries` is sent in the API request, then: - The transaction's `CreditedWalletId` holder is disregarded in KYC/KYB checks. - **ALL** `UserId` values in the array must be one of: - `OWNER` whose `KYCLevel` is `REGULAR` - `PLATFORM` The pay-in `Status` becomes `FAILED` with `ResultCode` [002951](/errors/codes/002951) if at least one `FlowDescriptor.Beneficiaries.UserId` is: - `PAYER` - `OWNER` whose `KYCLevel` is `LIGHT` If the `FlowDescriptor.Beneficiaries` is not sent in the API request, then the `CreditedWalletId` holder is subject to KYC/KYB checks. This property is optional for backwards compatibility but is recommended for all pay-in flows, even when the `CreditedWalletId` holder is a `PAYER` or the same value as one of the `FlowDescriptor.Beneficiaries`.
- `StatementDescriptor` (string, optional) — 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 Customizing bank statement references article for details.

### FlowDescriptorResponse

Information about the Owner beneficiaries targeted by the pay-in and its subsequent transfers, who must all be KYC/KYB verified when the pay-in request is made ([read more](/guides/payin-beneficiaries)). If the `FlowDescriptor.Beneficiaries` is sent in the API request, then: - The transaction's `CreditedWalletId` holder is disregarded in KYC/KYB checks. - **ALL** `UserId` values in the array must be one of: - `OWNER` whose `KYCLevel` is `REGULAR` - `PLATFORM` The pay-in `Status` becomes `FAILED` with `ResultCode` [002951](/errors/codes/002951) if at least one `FlowDescriptor.Beneficiaries.UserId` is: - `PAYER` - `OWNER` whose `KYCLevel` is `LIGHT` If the `FlowDescriptor.Beneficiaries` is not sent in the API request, then the `CreditedWalletId` holder is subject to KYC/KYB checks. This property is optional for backwards compatibility but is recommended for all pay-in flows, even when the `CreditedWalletId` holder is a `PAYER` or the same value as one of the `FlowDescriptor.Beneficiaries`.

- `FlowId` (string, optional) — Unique identifier of the payment flow, used by Mangopay for internal purposes.
- `Beneficiaries` (list of FlowDescriptorResponseBeneficiariesItems, optional, nullable) — Max. length: 5 items The list of up to 5 Natural or Legal Users declared as beneficiaries of the pay-in, who must all be KYC/KYB verified when the pay-in request is made. The pay-in also fails if the `Beneficiaries` array contains nulled objects or invalid `UserId` values.

### BlikPayInResponseDebitedFunds

Information about the debited funds.

- `Currency` (string, optional) — **Allowed values:** `PLN` The currency of the amount.
- `Amount` (integer, optional) — The amount of the currency in its minor unit. For example, EUR 12.60 would be represented as `1260` whereas JPY 12 would be represented as just `12`.

### BlikPayInResponseCreditedFunds

Information about the credited funds (`CreditedFunds` = `DebitedFunds` - `Fees`).

- `Currency` (string, optional) — **Allowed values:** `PLN` The currency of the amount.
- `Amount` (integer, optional) — The amount of the currency in its minor unit. For example, EUR 12.60 would be represented as `1260` whereas JPY 12 would be represented as just `12`.

### BlikPayInResponseFees

Information about the fees.

- `Currency` (string, optional) — **Allowed values:** `PLN` The currency of the amount.
- `Amount` (integer, optional) — The amount of the currency in its minor unit. For example, EUR 12.60 would be represented as `1260` whereas JPY 12 would be represented as just `12`.

### BlikPayInResponseBrowserInfo

Information about the browser used by the end user (author) to perform the payment.

- `UserAgent` (string, optional) — The exact content of the HTTP User-Agent header.
- `JavascriptEnabled` (boolean, optional) — Whether or not the end user's browser has the ability to execute JavaScript.

### CreateAblikPayInWithCodeRequestDebitedFunds

Information about the debited funds.

- `Currency` (string, required) — **Allowed values:** `PLN` The currency of the amount.
- `Amount` (integer, required) — The amount of the currency in its minor unit. For example, EUR 12.60 would be represented as `1260` whereas JPY 12 would be represented as just `12`.

### CreateAblikPayInWithCodeRequestFees

Information about the fees.

- `Currency` (string, required) — **Allowed values:** `PLN` The currency of the amount.
- `Amount` (integer, required) — The amount of the currency in its minor unit. For example, EUR 12.60 would be represented as `1260` whereas JPY 12 would be represented as just `12`.

### CreateAblikPayInWithCodeRequestBrowserInfo

Information about the browser used by the end user (author) to perform the payment.

- `UserAgent` (string, required) — The exact content of the HTTP User-Agent header.
- `JavascriptEnabled` (boolean, required) — Whether or not the end user's browser has the ability to execute JavaScript.

### FlowDescriptorRequest

Information about the Owner beneficiaries targeted by the pay-in and its subsequent transfers, who must all be KYC/KYB verified when the pay-in request is made ([read more](/guides/payin-beneficiaries)). If the `FlowDescriptor.Beneficiaries` is sent in the API request, then: - The transaction's `CreditedWalletId` holder is disregarded in KYC/KYB checks. - **ALL** `UserId` values in the array must be one of: - `OWNER` whose `KYCLevel` is `REGULAR` - `PLATFORM` The pay-in `Status` becomes `FAILED` with `ResultCode` [002951](/errors/codes/002951) if at least one `FlowDescriptor.Beneficiaries.UserId` is: - `PAYER` - `OWNER` whose `KYCLevel` is `LIGHT` If the `FlowDescriptor.Beneficiaries` is not sent in the API request, then the `CreditedWalletId` holder is subject to KYC/KYB checks. This property is optional for backwards compatibility but is recommended for all pay-in flows, even when the `CreditedWalletId` holder is a `PAYER` or the same value as one of the `FlowDescriptor.Beneficiaries`.

- `Beneficiaries` (list of FlowDescriptorRequestBeneficiariesItems, optional, nullable) — Max. length: 5 items The list of up to 5 Natural or Legal Users declared as beneficiaries of the pay-in and its subsequent transfers, who must all be KYC/KYB verified when the pay-in request is made. The pay-in also fails if the `Beneficiaries` array contains nulled objects or invalid `UserId` values.

### CreateAblikPayInWithoutCodeRequestDebitedFunds

Information about the debited funds.

- `Currency` (string, required) — **Allowed values:** `PLN` The currency of the amount.
- `Amount` (integer, required) — The amount of the currency in its minor unit. For example, EUR 12.60 would be represented as `1260` whereas JPY 12 would be represented as just `12`.

### CreateAblikPayInWithoutCodeRequestFees

Information about the fees.

- `Currency` (string, required) — **Allowed values:** `PLN` The currency of the amount.
- `Amount` (integer, required) — The amount of the currency in its minor unit. For example, EUR 12.60 would be represented as `1260` whereas JPY 12 would be represented as just `12`.

### FlowDescriptorResponseBeneficiariesItems

- `UserId` (string, optional) — The unique identifier of the Natural User or Legal User declared as a beneficiary of the pay-in.

### FlowDescriptorRequestBeneficiariesItems

- `UserId` (string, optional) — The unique identifier of the Natural User or Legal User declared as a beneficiary of the pay-in.

## Examples

### Blik with code

**Request**

```json
{
  "body": {
    "AuthorId": "user_m_01HWSRS7HK6S0XKKD4CJM3PQ04",
    "BrowserInfo": {
      "JavascriptEnabled": true,
      "UserAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"
    },
    "Code": "777365",
    "CreditedWalletId": "wlt_m_01HWSSQV8W6550FJ5NTJQE1DE1",
    "DebitedFunds": {
      "Amount": 100,
      "Currency": "PLN"
    },
    "Fees": {
      "Amount": 0,
      "Currency": "PLN"
    },
    "FlowDescriptor": {
      "Beneficiaries": [
        {
          "UserId": "user_m_02APAYTWSDYXHXN1FRTKX9WMA2"
        }
      ]
    },
    "IpAddress": "159.180.248.187",
    "ReturnURL": "https://www.mangopay.com/docs/please-ignore",
    "StatementDescriptor": "May2024",
    "Tag": "Created using Mangopay API Collection Postman"
  }
}
```

**Response**

```json
{
  "Id": "wt_54874ce5-751d-4616-b7f0-7cee68aee39d",
  "Tag": "Created using Mangopay API Collection Postman",
  "CreationDate": 1718178213,
  "AuthorId": "user_m_01HWSRS7HK6S0XKKD4CJM3PQ04",
  "FlowDescriptor": {
    "FlowId": "flow_wt_97448e0a-5bc6-4b83-ac29-cdfcadf60a08",
    "Beneficiaries": [
      {
        "UserId": "user_m_02APAYTWSDYXHXN1FRTKX9WMA2"
      }
    ]
  },
  "DebitedFunds": {
    "Currency": "PLN",
    "Amount": 100
  },
  "CreditedFunds": {
    "Currency": "PLN",
    "Amount": 100
  },
  "Fees": {
    "Currency": "PLN",
    "Amount": 0
  },
  "Status": "CREATED",
  "ResultCode": null,
  "ResultMessage": null,
  "ExecutionDate": null,
  "Type": "PAYIN",
  "Nature": "REGULAR",
  "CreditedWalletId": "wlt_m_01HWSSQV8W6550FJ5NTJQE1DE1",
  "PaymentType": "BLIK",
  "ExecutionType": "WEB",
  "ReturnURL": "https://www.mangopay.com/docs/please-ignore?transactionId=wt_54874ce5-751d-4616-b7f0-7cee68aee39d",
  "RedirectURL": "https://r3.girogate.de/ti/dumbdummy?tx=2263480064&rs=It3FPwW1ezPJlRIb84DFwDj2S7pk8n80&cs=2b704ceaa038b2519137369f883d4b560e63cf490adcc8e2426ae45524c965e9",
  "StatementDescriptor": "May2024",
  "Code": "777365",
  "BrowserInfo": null,
  "IpAddress": "159.180.248.187",
  "CreditedUserId": "user_m_01HWSRS7HK6S0XKKD4CJM3PQ04"
}
```

**SDK Code**

```python Blik with code
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, BlikPayIn
from mangopay.utils import Money

blik_payin = BlikPayIn(
    author_id = 'user_m_01HWSRS7HK6S0XKKD4CJM3PQ04',
    credited_wallet_id = 'wlt_m_01HWSSQV8W6550FJ5NTJQE1DE1',
    debited_funds = Money(amount=100, currency='PLN'),
    fees = Money(amount=0, currency='PLN'),
    return_url = 'https://www.mangopay.com/docs/please-ignore',
    tag = 'Created using Mangopay Python SDK',
    statement_descriptor = 'May2024'
)

create_blik_payin = blik_payin.save()

pprint(create_blik_payin)

```

```java Blik with code
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.PayInExecutionDetailsWeb;
import com.mangopay.entities.subentities.PayInPaymentDetailsBlik;

public class CreateBLIKPayIn {
    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_01J291BGPEPVHWA1BEQPV0SWP6";

        PayIn blikPayin = new PayIn();
        blikPayin.setAuthorId(userId);
        blikPayin.setCreditedWalletId(walletId);
        blikPayin.setDebitedFunds(new Money(CurrencyIso.PLN, 1000));
        blikPayin.setFees(new Money(CurrencyIso.PLN, 0));
        blikPayin.setTag("Created using the Mangopay Java SDK");

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

        PayInPaymentDetailsBlik paymentDetails = new PayInPaymentDetailsBlik();
        paymentDetails.setStatementDescriptor("Jul2024");
        blikPayin.setPaymentDetails(paymentDetails);

        blikPayin.setPaymentType(PayInPaymentType.BLIK);
        blikPayin.setExecutionType(PayInExecutionType.WEB);

        PayIn createBlikPayin = mangopay.getPayInApi().create(blikPayin);

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

        System.out.println(prettyJson);
    }
}

```

```csharp Blik with code
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_01J2Y06CEN8J3K19KP0F7YJVNT";
        var returnUrl = "https://www.mangopay.com/docs/please-ignore/";

        var payIn = new PayInBlikWebPostDTO(
            userId,
            new Money { Amount = 2000, Currency = CurrencyIso.PLN },
            new Money { Amount = 0, Currency = CurrencyIso.PLN },
            walletId, returnUrl,
            "Created using the Mangopay .NET SDK", "MGP");

        var createBlikPayIn = await api.PayIns.CreateBlikWebAsync(payIn);

        string prettyPrint = JsonConvert.SerializeObject(createBlikPayIn, Formatting.Indented);
        Console.WriteLine(prettyPrint);
    }
}

```

### BLIK without code

**Request**

```json
{
  "body": {
    "AuthorId": "user_m_01HWSRS7HK6S0XKKD4CJM3PQ04",
    "CreditedWalletId": "wlt_m_01HWSSQV8W6550FJ5NTJQE1DE1",
    "DebitedFunds": {
      "Amount": 100,
      "Currency": "PLN"
    },
    "Fees": {
      "Amount": 0,
      "Currency": "PLN"
    },
    "FlowDescriptor": {
      "Beneficiaries": [
        {
          "UserId": "user_m_02APAYTWSDYXHXN1FRTKX9WMA2"
        }
      ]
    },
    "ReturnURL": "https://www.mangopay.com/docs/please-ignore",
    "StatementDescriptor": "May2024",
    "Tag": "Created using the Mangopay API Postman collection"
  }
}
```

**Response**

```json
{
  "Id": "wt_dbb46bf7-71e1-463c-bbd5-8217f3c4b474",
  "Tag": "Created using the Mangopay API Postman collection",
  "CreationDate": 1715610590,
  "AuthorId": "user_m_01HWSRS7HK6S0XKKD4CJM3PQ04",
  "FlowDescriptor": {
    "FlowId": "flow_wt_97448e0a-5bc6-4b83-ac29-cdfcadf60a08",
    "Beneficiaries": [
      {
        "UserId": "user_m_02APAYTWSDYXHXN1FRTKX9WMA2"
      }
    ]
  },
  "DebitedFunds": {
    "Currency": "PLN",
    "Amount": 100
  },
  "CreditedFunds": {
    "Currency": "PLN",
    "Amount": 100
  },
  "Fees": {
    "Currency": "PLN",
    "Amount": 0
  },
  "Status": "CREATED",
  "ResultCode": null,
  "ResultMessage": null,
  "ExecutionDate": null,
  "Type": "PAYIN",
  "Nature": "REGULAR",
  "CreditedWalletId": "wlt_m_01HWSSQV8W6550FJ5NTJQE1DE1",
  "PaymentType": "BLIK",
  "ExecutionType": "WEB",
  "ReturnURL": "https://www.mangopay.com/docs/please-ignore?transactionId=wt_dbb46bf7-71e1-463c-bbd5-8217f3c4b474",
  "RedirectURL": "https://r3.girogate.de/ti/dumbdummy?tx=2246577013&rs=D4a2bjG5roOlXDEvsBOdb2NoCNtPxxKZ&cs=f3452531239c64143ec6a9ccd382553ec71a987cdcdc16a4f2046bc5e3b8d373",
  "StatementDescriptor": "May2024",
  "Code": null,
  "BrowserInfo": null,
  "IpAddress": null,
  "CreditedUserId": "user_m_01HWSRS7HK6S0XKKD4CJM3PQ04"
}
```

**SDK Code**

```python BLIK without code
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, BlikPayIn
from mangopay.utils import Money

blik_payin = BlikPayIn(
    author_id = 'user_m_01HWSRS7HK6S0XKKD4CJM3PQ04',
    credited_wallet_id = 'wlt_m_01HWSSQV8W6550FJ5NTJQE1DE1',
    debited_funds = Money(amount=100, currency='PLN'),
    fees = Money(amount=0, currency='PLN'),
    return_url = 'https://www.mangopay.com/docs/please-ignore',
    tag = 'Created using Mangopay Python SDK',
    statement_descriptor = 'May2024'
)

create_blik_payin = blik_payin.save()

pprint(create_blik_payin)

```

```java BLIK without code
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.PayInExecutionDetailsWeb;
import com.mangopay.entities.subentities.PayInPaymentDetailsBlik;

public class CreateBLIKPayIn {
    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_01J291BGPEPVHWA1BEQPV0SWP6";

        PayIn blikPayin = new PayIn();
        blikPayin.setAuthorId(userId);
        blikPayin.setCreditedWalletId(walletId);
        blikPayin.setDebitedFunds(new Money(CurrencyIso.PLN, 1000));
        blikPayin.setFees(new Money(CurrencyIso.PLN, 0));
        blikPayin.setTag("Created using the Mangopay Java SDK");

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

        PayInPaymentDetailsBlik paymentDetails = new PayInPaymentDetailsBlik();
        paymentDetails.setStatementDescriptor("Jul2024");
        blikPayin.setPaymentDetails(paymentDetails);

        blikPayin.setPaymentType(PayInPaymentType.BLIK);
        blikPayin.setExecutionType(PayInExecutionType.WEB);

        PayIn createBlikPayin = mangopay.getPayInApi().create(blikPayin);

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

        System.out.println(prettyJson);
    }
}

```

```csharp BLIK without code
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_01J2Y06CEN8J3K19KP0F7YJVNT";
        var returnUrl = "https://www.mangopay.com/docs/please-ignore/";

        var payIn = new PayInBlikWebPostDTO(
            userId,
            new Money { Amount = 2000, Currency = CurrencyIso.PLN },
            new Money { Amount = 0, Currency = CurrencyIso.PLN },
            walletId, returnUrl,
            "Created using the Mangopay .NET SDK", "MGP");

        var createBlikPayIn = await api.PayIns.CreateBlikWebAsync(payIn);

        string prettyPrint = JsonConvert.SerializeObject(createBlikPayIn, Formatting.Indented);
        Console.WriteLine(prettyPrint);
    }
}

```