PHPackages                             peterbodnar.com/bsqr - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. peterbodnar.com/bsqr

ActiveLibrary[Parsing &amp; Serialization](/categories/parsing)

peterbodnar.com/bsqr
====================

By Square document encoding, parsing and rendering utilities

1.1.0(9y ago)1019.0k15[3 PRs](https://github.com/prog/php-bsqr/pulls)BSD-3-ClausePHPPHP ^5.4 || ^7.0

Since Jul 8Pushed 4y ago3 watchersCompare

[ Source](https://github.com/prog/php-bsqr)[ Packagist](https://packagist.org/packages/peterbodnar.com/bsqr)[ RSS](/packages/peterbodnarcom-bsqr/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (5)Versions (3)Used By (0)

BySquare
========

[](#bysquare)

By Square document encoding, rendering and parsing utilities.

Only PayBySquare document type is currently supported.

Requirements
------------

[](#requirements)

This library uses `xz` system executable (`/usr/bin/xz`) for lzma compression/decompression.
Any suggestions how to remove this dependency are welcome.

Instalation
-----------

[](#instalation)

`composer require peterbodnar.com/bsqr`

Define a PayBySquare document
-----------------------------

[](#define-a-paybysquare-document)

```
use com\peterbodnar\bsqr;

$document = (new bsqr\model\Payment())
	->setDueDate("0000-00-00") // YYYY-MM-DD
	->setAmount(123.45, "EUR") // amount, currency code
	->setSymbols("1234567890", "308") // variable, constant symbol
	->addBankAccount("SK3112000000198742637541", "XXXXXXXXXXX") // iban, bic/swift
	->createPayDocument();
```

According to the specification, document can contain invoice ID, multiple payments, payments can contain multiple bank accounts, extensions, etc.

```
use com\peterbodnar\bsqr;

$document = (new bsqr\model\Pay())
	->setInvoiceId("1234567890")
	->addPayment(
 		(new bsqr\model\Payment())
		->setDueDate("0000-00-00")
		->setAmount(123.45, "EUR")
		->setSymbols("1234567890", "308")
		->addBankAccount("SK3112000000198742637541", "XXXXXXXXXXX")
		->addBankAccount("SK3112000000198742637542", "XXXXXXXXXXX")
		->addBankAccount("SK3112000000198742637543", "XXXXXXXXXXX")
		// ->setNote("Payment note")
		// ->setOriginatorsReferenceInformation("Originators Reference Information")
		// ->setDirectDebitExt( /* Direct Debit Extension */ )
		// ->setStandingOrderExt( /* Standing Order Extension */ )
	)
	->addPayment( /* 2nd payment */ )
	->addPayment( /* 3rd payment */ );
```

Render document to svg including BySqure logo and border
--------------------------------------------------------

[](#render-document-to-svg-including-bysqure-logo-and-border)

```
use com\peterbodnar\bsqr;

$bysquare = new bsqr\BySquare();

$svg = (string) $bysquare->render($document);
```

Get bsqr data only
------------------

[](#get-bsqr-data-only)

```
use com\peterbodnar\bsqr;

$bsqrCoder = new bsqr\utils\BsqrCoder();

$bsqrData = $bsqrCoder->encode($document);
```

Use any qr-code library to encode/render data to qr matrix/image.

Parse bsqr data
---------------

[](#parse-bsqr-data)

```
use com\peterbodnar\bsqr;

$bsqrCoder = new bsqr\utils\BsqrCoder();

$document = $bsqrCoder->parse($bsqrData);
```

Links
-----

[](#links)

-
-
-

###  Health Score

35

—

LowBetter than 80% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity35

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 90.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~256 days

Total

2

Last Release

3337d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/990fa06a26a6c36798c661a560253fd3b53a299072328119393ac61180c6fe6e?d=identicon)[peterbodnar.com](/maintainers/peterbodnar.com)

---

Top Contributors

[![prog](https://avatars.githubusercontent.com/u/179037?v=4)](https://github.com/prog "prog (10 commits)")[![MichalGallovic](https://avatars.githubusercontent.com/u/5698422?v=4)](https://github.com/MichalGallovic "MichalGallovic (1 commits)")

---

Tags

bysquarepaybysquarepaybysquarebysquare

### Embed Badge

![Health badge](/badges/peterbodnarcom-bsqr/health.svg)

```
[![Health](https://phpackages.com/badges/peterbodnarcom-bsqr/health.svg)](https://phpackages.com/packages/peterbodnarcom-bsqr)
```

###  Alternatives

[mtdowling/jmespath.php

Declaratively specify how to extract elements from a JSON document

2.0k472.8M135](/packages/mtdowling-jmespathphp)[opis/closure

A library that can be used to serialize closures (anonymous functions) and arbitrary data.

2.6k230.0M284](/packages/opis-closure)[masterminds/html5

An HTML5 parser and serializer.

1.8k242.8M229](/packages/masterminds-html5)[sabberworm/php-css-parser

Parser for CSS Files written in PHP

1.8k191.2M65](/packages/sabberworm-php-css-parser)[michelf/php-markdown

PHP Markdown

3.5k52.4M344](/packages/michelf-php-markdown)[jms/metadata

Class/method/property metadata management in PHP

1.8k152.8M88](/packages/jms-metadata)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
