QR code · GOST paymentPayment QR code to GOST
Builds a payment code to the Russian standard GOST R 56042-2014 — the one printed on utility bills and invoices. A banking app fills the transfer form from it.
Code generator
Data, styling and correction level — the preview updates on every keystrokeThe frame keeps the four-module quiet zone for you — the very margin whose absence is the most common reason a printed code will not scan.
the background is not filled — the code sits on any surface In the PDF the code is vector and the caption is a 300 dpi image: base PDF fonts carry no Cyrillic, and this is the only way not to lose Russian text.
- Version 11 at level M: modules are small and there is little damage headroom — print it larger
The payment string
The whole content of the code is one string with fields separated by a vertical bar. Here it is broken apart field by field: what goes into the code, and where the mistake is.About the standard
GOST R 56042-2014 is the Russian standard describing how to write bank details into a two-dimensional barcode. Adopted in 2014, it is now everywhere: utility bills, management company invoices, tax notices, payments for clubs and kindergartens. The idea is simple — instead of retyping a twenty-digit account, a person points a camera and gets a filled-in transfer form.
Spaces around the separator
«Name=Romashka LLC | PersonalAcc=…» is already off-standard. No spaces before or after the vertical bar — the most common mistake when the string is assembled by hand.
Amount in roubles instead of kopecks
The code scans, the payment goes through, and the amount is a hundred times too small. The most galling failure of all: technically nothing is broken.
Too long a string
Every optional field makes the code denser. On a bill printed by a mono laser on grey paper a dense code will not read. The practical limit is about 300 bytes — experience, not a formal rule.
Guillemets and typographic dashes
Formally allowed, but some older banking apps trip over them. For payment codes plain quotes and a plain hyphen are safer.
Declared encoding is not the actual one
The header says ST00012, meaning UTF-8, while the string is written in Windows-1251. The payee name turns into mojibake, and the app either shows it or refuses the code.
Checked on screen only
Scan the finished code with at least two banking apps, and do it on real paper. A screen forgives almost anything; toner on porous paper forgives almost nothing.