Standards/nbu-qr
NBU QR
Overview
The NBU QR is the National Bank of Ukraine's standard QR code for passing a payee's details for a hryvnia credit transfer or instant credit transfer to the payer's banking app. It is defined by NBU Board Resolution No. 97 of 19 August 2025, "Rules for forming, transmitting and processing the data structure and graphic image of the QR code for exchanging the details of credit and instant credit transfers", in force from 1 November 2025 [nbu-97]. The rules define three format versions: 001 (plain text), and 002 and 003 (an https://qr.bank.gov.ua/ link carrying the fields in Base64URL), all built from line-separated fields that start with the service tag BCD [nbu-97]. Every payment service provider that initiates or executes credit and instant credit transfers must apply the rules in its payment apps [nbu-97].
The NBU QR is older than SEP 4.1, the NBU's instant-payment system launched on 1 December 2024: the first QR rules for credit transfers date from Resolution No. 68 of 28 May 2020 [nbu-97]. SEP 4.1 is the rail for interbank instant credit transfers, and the NBU named QR codes as one way to pass their payment details 1; format 003 marks such a transfer with the function ICT [nbu-97].
History
28 May 2020 — first QR rules. NBU Board Resolution No. 68 approved the "Rules for forming and using the QR code for credit transfers" [nbu-97].
1 February 2021 — amendment. Resolution No. 11 amended those rules [nbu-97].
1 December 2024 — SEP 4.1 goes live. The NBU switched its System of Electronic Payments (SEP) to version 4.1 with instant-transfer functionality, and named QR codes and deeplinks as the way to pass payment details between users 1. At launch the NBU and ten banks were connected directly (Oschadbank, Credit Agricole, Sky Bank, Clearing House, Ukrsibbank, Ukreximbank, European Industrial Bank, Sense Bank, Altbank and Idea Bank); PrivatBank was not among them [liga].
19 August 2025 — Resolution No. 97. The NBU Board approved the current rules, which cover both credit and instant credit transfers, and repealed Resolutions No. 68 (2020) and No. 11 (2021) [nbu-97].
11 October 2025 — Resolution No. 128. The rules were amended (the annexes carry the note "with amendments under Resolution No. 128 of 11.10.2025") [nbu-97].
1 November 2025 — in force. Resolution No. 97 took effect; the current edition on the Verkhovna Rada portal is dated 2 November 2025 [nbu-97].
Technical specification
| Property | Value |
|---|---|
| Issuer | National Bank of Ukraine |
| Legal basis | NBU Board Resolution No. 97 of 19 Aug 2025 (amended by No. 128 of 11 Oct 2025) |
| Symbology | QR Code per ДСТУ ISO/IEC 18004:2019 |
| QR version | "from 10 to 20 inclusive"; maximum 13 (69 modules) for format 001 and 17 (85 modules) for 002/003 |
| Error correction | Q, M or L; format 003 is generated at M or Q; L is not allowed when the ₴ mark is added |
| Format versions | 001, 002, 003 |
| Character set | Bytes 32–255 except 127, 152, 160 in Windows-1251, or their UTF-8 equivalents |
| Line ending | LF or CR LF, the same for every line (format 003: LF only) |
| Max data | 331 bytes (001); 507 bytes (002, 003) |
| Currency | Hryvnia (UAH) |
| Checksum | None defined |
All facts in this table are from the resolution [nbu-97].
Fields. Each element is a text line in a fixed order. An empty element consists of the line ending alone. The rules mark each element as mandatory, optional (present but may be empty) or reserved (must be empty) [nbu-97]. The common opening lines are:
BCD, the service tag;- the format version (
001,002or003); - the encoding:
1= UTF-8,2= Windows-1251. Format 001 allows only1; - the function:
UCT("Ukrainian Credit Transfer") in 001 and 002. Format 003 also allowsICT("Instant Credit Transfer") andXCT(instant credit transfer or credit transfer).
These are followed by a reserved BIC / payee-identifier line, the payee name, the payee account (a 29-character UA IBAN), the amount, the payee code, and the payment purpose [nbu-97].
Amount. The amount takes the form UAH + number, for example UAH576.45. The rules set a maximum of 999999999.99 and use . as the decimal separator. A fraction, if present, has exactly two digits, and the amount should be as short as possible ("UAH3 is better than UAH3.00"). Leading zeros are forbidden [nbu-97].
Format 001 is plain text in 14 lines. The first line, the "application start code", is 23 spaces. The payee name is limited to 38 characters [nbu-97].
Format 002 is a hyperlink. The prefix is https://qr.bank.gov.ua/ or https://bank.gov.ua/qr/. The 13 field lines follow it, encoded with Base64URL (up to 475 bytes) [nbu-97]. To build one:
- fill the fields;
- Base64URL-encode them;
- append the result to the prefix;
- render the QR;
- add the ₴ mark.
To decode, strip the prefix and Base64URL-decode the rest [nbu-97].
Format 003 is the same kind of link, with 17 field lines. Its prefix is https://qr.bank.gov.ua/ or a "personalised" start code that contains the payment service provider's domain [nbu-97]. It adds these fields [nbu-97]:
- a mandatory category/purpose code in the form
CCCC/PPPP, from ISO 20022 code lists; - an invoice reference;
- a display text;
- a 4-hex-digit field-lock bitmask. Field n maps to bit n, and fields 1–5, 11 and 14–17 must always be locked; for example,
FEFFleaves only the amount (field 8) editable; - invoice validity and creation timestamps in
YYMMDDhhmmss; - an electronic-signature field reserved for future use.
Hryvnia mark. The image must carry the hryvnia sign ₴ on a white circle at the centre of the code. The circle's diameter is set per QR version, from 17 modules (version 10) to 25 modules (versions 16–17) [nbu-97]. The mark is optional for format 001 at level M or Q, and mandatory for formats 002 and 003. The shape of the sign is "determined by the National Bank of Ukraine" and is not drawn in the resolution [nbu-97].
Display. An X-dimension below 0.5 mm is not recommended [nbu-97].
Try it. The playground builds formats 001, 002 and 003 from the resolution's rules, and its tests reproduce seven of the resolution's own examples exactly. The official centre mark (₴) is omitted; the payload is spec-exact and decodes.
Use cases
The resolution's own worked examples show the intended uses [nbu-97]:
- Utility bills: examples in formats 001, 002 and 003.
- Medical services: a dental clinic, in formats 001 and 002.
- Retail purchases: a shop purchase in 002 and 003, including an instant credit transfer.
- Person-to-person instant transfers: format 003 with function
ICT. - Online shopping: format 003, with merchant and terminal identifiers in ISO 20022 tags.
Instant transfers over SEP 4.1. Since 1 December 2024 SEP 4.1 carries instant credit transfers, with QR codes and deeplinks named as the way to pass payment details 1.
Implementations & ecosystem
Issuer: NBU. Payment service providers that initiate or execute credit and instant credit transfers must support the rules in their apps [nbu-97].
Rail for instant transfers (context). SEP 4.1 had 20 direct participants by March 2025: the NBU and 19 banks, PrivatBank among them 2, interfax. The NBU's goal was for all systemic banks to offer instant transfers in the first half of 2025 2.
Banks' QR products. PrivatBank publishes pages for its own QR payments and acquiring Privat24 (PrivatBank, Ukraine), privatbank-acq. Whether those QR codes follow the NBU format was not confirmed for this page. The Ukraine country report lists PrivatBank's Privat24 QR as a separate bank QR Ukraine report.
Wartime context. The European Payments Council has published the NBU's account of running payments in wartime [epc].
Open-source code. No GitHub encoder or decoder was verified for this page. Barcoder's own encoder (the playground above) implements formats 001–003.
Comparison
vs. EPC QR (EU). Both codes open with the BCD service tag and use one field per line [nbu-97]. The NBU QR adds the 23-space start code (001) or the https://qr.bank.gov.ua/ link wrapper (002/003), a payee-code line, the UCT/ICT/XCT functions, Windows-1251 as an encoding option, and a hryvnia-only amount [nbu-97]. Use the NBU QR for hryvnia transfers to Ukrainian accounts.
| Feature | NBU QR (UA) | MIA QR (MD) | RoPay (RO) | Blink (BG) | NBS IPS QR (RS) |
|---|---|---|---|---|---|
| Operator | NBU (central bank) | NBM (central bank) | Transfond (bank consortium) | BORICA AD | NBS (central bank) |
| QR rules since | 2020 (Res. 68); current rules 1 Nov 2025 | Mar 2024 | Nov 2024 | 2021 | 22 Oct 2018 |
| Currency | UAH | MDL | RON | BGN (+EUR TIPS) | RSD |
| Instant rail | SEP 4.1 (since 1 Dec 2024) | Yes (24/7/365) | <10s | <10s | <10s |
| QR | Formats 001/002/003; 002/003 are https links | 3 QR types | EPC reference | Mobile Lookup + QR | Standardised NBS IPS QR |
Fun facts
- The examples break the rules. The ₴ mark is mandatory for formats 002 and 003, and level L may not be used with it. Yet the resolution's own format 002 examples are labelled "QR version 8 (L)", "10 (L)" and "13 (L)" [nbu-97].
- A date that doesn't exist. The first format 003 example gives the invoice creation date
250229, which would be 29 February 2025. Its IBAN also carries a trailing space, so it is 30 bytes long in a field the rules fix at 29 [nbu-97].
Status
Active. Resolution No. 97 has been in force since 1 November 2025. As of 19 October 2026 the Verkhovna Rada portal lists it as "чинний" (in force), in the edition of 2 November 2025 [nbu-97]. The rules let the NBU add new format versions, each one higher than the last [nbu-97].
Sources
- nbu-97 NBU Board Resolution No. 97 (19 Aug 2025) — QR code rules, accessed 2026-10-19 (print edition of 2 Nov 2025)
- 1 SEP 4.1 instant transfers launched — NBU
- 2 Systemic banks instant transfer — Baltimore Chronicle
- liga New SEP version with instant transfers launched — LIGA ZAKON
- interfax NBU expects all systemic banks to launch instant transfers in H1 2025 — Interfax-Ukraine
- epc Payments in wartime — EPC
- privatbank PrivatBank QR payment
- privatbank-acq PrivatBank acquiring
- Ukraine report
reports/countries/UA-ukraine.md
Deployments
Found in the following country reports (grep across reports/countries/):
- UA — UA-ukraine.md