---
title: "PAY by square — QR for Laravel | Roundly"
description: "Slovenské kódy PAY by square (špecifikácia 1.0.0–1.2.0) — platobné príkazy, trvalé príkazy a inkasá, kódovanie aj dekódovanie."
url: https://roundly-consulting.com/sk/open-source/navody/qr-for-laravel/platby-pay-by-square
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[QR for Laravel](https://roundly-consulting.com/sk/open-source/navody/qr-for-laravel.md)

# PAY by square

PayBySquare implementuje špecifikáciu by square 1.0.0, 1.1.0 a 1.2.0 (predvolená). Dokument obsahuje jednu alebo viac platieb — prvá je preferovaná — každú s jedným alebo viacerými bankovými účtami:

```php
use Carbon\CarbonImmutable;
use RoundlyConsulting\Money\Money;
use RoundlyConsulting\Qr\Enums\BySquare\BySquareVersion;
use RoundlyConsulting\Qr\Payloads\Payments\BySquare\{BankAccount, Beneficiary, PayBySquare, Payment};

$account = new BankAccount('SK46 1100 0000 0029 4714 7960', 'TATRSKBX');
$beneficiary = new Beneficiary('Roundly Consulting s.r.o.', street: 'Tolstého 5', city: '811 06 Bratislava');

$document = new PayBySquare(
    payments: [Payment::order(
        amount: Money::ofMinor(12550, 'EUR'),
        accounts: [$account],
        beneficiary: $beneficiary,
        dueDate: CarbonImmutable::parse('2026-10-15'),
        variableSymbol: '20260042',
        constantSymbol: '0308',
        note: 'Faktúra 2026-0042',
    )],
    invoiceId: '2026-0042',
    version: BySquareVersion::V1_2_0,     // null → config payments.bysquare.version
    deburr: true,                         // null → config payments.bysquare.deburr
);

$svg = Qr::payBySquare($document)->size(220)->svg();
```

## Kódovanie a dekódovanie

```php
$string = Qr::payBySquare($document)->payload()->toQrString();  // the string the code carries (config applied)
$standard = $document->encode();          // standard defaults (1.2.0, deburr on) for null fields — ignores config
$model = $document->serialize();          // the tab-separated data model
$same = PayBySquare::decode($string);     // parse a PAY by square string
```

Qr::payBySquare() doplní chýbajúce version alebo deburr z payments.bysquare.\*; $document->encode() (aj toQrString()) konfiguráciu nečíta a použije predvolené hodnoty štandardu, takže sa s obsahom QR kódu zhoduje len pri predvolenej konfigurácii alebo ak dokument nastaví version/deburr sám.

Kód je čistý reťazec base32hex (prefix 00… pre 1.0.0, 04… pre 1.1.0, 08… pre 1.2.0), ktorý obaľuje dátový model chránený CRC-32 a skomprimovaný vlastnou implementáciou LZMA v balíku. Vždy ide o jeden alfanumerický QR segment bez ECI; korekcia chýb je predvolene M. Poškodený reťazec vyhodí BySquareDecodeException s dôvodom, ktorý pomenuje zlyhaný krok.

## Trvalé príkazy a inkasá

```php
use RoundlyConsulting\Qr\Enums\BySquare\{DirectDebitScheme, DirectDebitType, Month, Periodicity};
use RoundlyConsulting\Qr\Payloads\Payments\BySquare\{DirectDebitDetails, StandingOrderDetails};

// Standing order
Payment::standingOrder(
    new StandingOrderDetails(Periodicity::Monthly, day: 15, months: [Month::January, Month::July], lastDate: CarbonImmutable::parse('2027-12-31')),
    Money::ofMinor(3000, 'EUR'), [$account], $beneficiary,
);

// Direct debit
Payment::directDebit(
    new DirectDebitDetails(scheme: DirectDebitScheme::Sepa, type: DirectDebitType::Recurrent, mandateId: 'M-2026-7', maxAmount: Money::ofMinor(5000, 'EUR')),
    Money::ofMinor(1999, 'EUR'), [$account], $beneficiary,
);

// Amount left to the payer
Payment::order(null, [$account], $beneficiary, currency: 'EUR');
```

| Enum | Hodnoty |
| --- | --- |
| `BySquareVersion` | V1\_0\_0, V1\_1\_0, V1\_2\_0 |
| `Periodicity` | Daily, Weekly, Biweekly, Monthly, Bimonthly, Quarterly, Semiannually, Annually |
| `Month` | January … December (bitové príznaky; Month::mask() / Month::fromMask()) |
| `DirectDebitScheme` | Other, Sepa |
| `DirectDebitType` | OneOff, Recurrent |

## Limity

- Suma ≥ 0; len meny podľa ISO 4217 — mena sumy, alebo currency:, ak je suma null (vtedy je povinná).
- Variabilný a špecifický symbol najviac 10 číslic, konštantný symbol najviac 4 číslice; referencia platiteľa ≤ 35; poznámka ≤ 140; číslo faktúry ≤ 10; každé textové pole musí byť platné UTF-8.
- 1–99 platieb v dokumente a 1–99 účtov na platbu (nad 99 out\_of\_range); ID mandátu, veriteľa a zmluvy ≤ 35.
- Deň trvalého príkazu 1–7 pri týždennej/dvojtýždennej periodicite, inak 1–31, pri dennej žiadny; maxAmount inkasa v mene platby.
- Meno príjemcu 1–70, ulica a mesto ≤ 70.

## Verzie a diakritika

Verzia 1.2.0 vyžaduje meno príjemcu pri každej platbe; 1.0.0 blok príjemcu nemá. So zapnutým deburr (predvolene) sa z poznámky a údajov príjemcu odstráni diakritika, výsledok sa oreže o okrajové medzery a limity sa overia znova; meno príjemcu bez ASCII podoby (napríklad 李明) vyhodí InvalidPayloadException (unrepresentable) — také meno zakódujte s deburr: false. Dátumy sú kalendárne dátumy — zadávajte ich v časovom pásme, ktoré máte na mysli.

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/qr-for-laravel.md)
