> For the complete documentation index, see [llms.txt](https://simpaypl.gitbook.io/simpay-laravel/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://simpaypl.gitbook.io/simpay-laravel/payments/subscriptions/create-blik-subscription.md).

# Create BLIK subscription

{% hint style="info" %}
To understand how BLIK subscriptions work please see [https://docs.simpay.pl/en/payment/blik-recurrent](https://docs.simpay.pl/en/payment/blik-recurrent#creating-a-subscription)
{% endhint %}

At first you need to generate transaction:

```php
// only required fields are shown
$payment = SimPay::payment()->generate()
    ->amount(15.00) // you may create subscription with amount set to 0.00, then it will work as authorization to future recurrent payments
    ->customer(
        new \SimPay\Laravel\Dto\Payment\CustomerData(
            email: 'Email',
            ip: 'IP address',
            countryCode: 'PL', // for BLIK it must be PL
        )
    )
    ->antifraud(
        new \SimPay\Laravel\Dto\Payment\AntiFraudData(
            userAgent: 'UserAgent (REQUIRED)',
            systemId: 'Payer identifier in your platform (eg. user id, hashed email)',
        )
    )
    ->currency('PLN')
    ->directChannel('blik-recurrent') // it must be set to blik-recurrent
    ->make();
```

Now register subscription:

```php
$subscription = SimPay::payment()->subscriptions()->createBlik()
    ->transaction($payment) // you may pass full TransactionGenerateResponse or just transactionId
    ->ticket(new \SimPay\Laravel\Dto\Payment\Subscription\BlikTicketData(
        ticket: 'BLIK_CODE',
        ticketType: \SimPay\Laravel\Enums\Payment\BlikLevel0TicketType::T6,
    ))
    ->alias(new \SimPay\Laravel\Dto\Payment\Subscription\BlikAliasData(
        value: 'ALIAS VALUE (eg. subscription id)',
        label: 'Alias label (shown in payers bank app)',
        type: \SimPay\Laravel\Enums\Payment\BlikAlias\BlikAliasType::PAYID, // Must be set to PAYID
    ))
    ->options(new \SimPay\Laravel\Dto\Payment\Subscription\BlikSubscriptionOptionData(
        model: \SimPay\Laravel\Enums\Payment\Subscription\BlikModel::A // A, O or M
        // see what fields are required to sent with each model: https://docs.simpay.pl/en/payment/blik-recurrent#creating-a-subscription
        expiresAt: 'string|Carbon|null',
        frequency: 'string|null',
        amountLimitPerTransaction: 'float|null',
        initiationDate: 'string|Carbon|null',
        amountLimitTotal: 'float|null',
        transactionsCountLimit: 'int|null'
    ))
    // optional fields
    ->description('383172 Pro plan in September')
    ->appUrl('mobile app url')
    // make() is required to create subscription
    ->make();
```

Response will be [BlikSubscriptionCreatedResponse](/simpay-laravel/payments/responses/bliksubscriptioncreatedresponse.md) or thrown SimPayException (see [Exceptions](/simpay-laravel/exceptions.md)).
