We create digital solutions that work for businesses
For FOPs: taxes and bank details
You may also like
IBAN error check: checksum and bank code.
NBU standard: the QR is read by Privat24, monobank, Oschad 24/7 and other banking apps, and the details fill in automatically. Nothing is sent anywhere; the code is built in your browser.
Scan the QR with your own banking app before printing it on invoices or putting it on a website.
The check runs in your browser using the international MOD-97 algorithm. We do not contact banks, so we only see whether the number itself is correct, not the state of the account.
The international bank account format. Each part has its own purpose.
A mathematical format check. It does not contact the bank or confirm the account is open.
29 characters, each group with its own purpose. Take UA21 3223 1300 0002 6007 2335 6600 1:
IBAN length differs by country: 29 in Ukraine, 22 in Germany, 28 in Poland, 22 in the UK. The tool knows the lengths for 70 countries and checks that first, then the checksum.
MOD-97 is the same algorithm in every country. The first four characters move to the end, letters become numbers (A=10, B=11 … Z=35), and the resulting long number is divided by 97. A remainder of 1 means the number is written correctly. A single wrong character or two swapped digits almost always produce a different remainder, so the check catches typical input errors.
What it cannot do: tell whether the account exists, is open, or who owns it. Only the bank knows that. A valid IBAN means "no typo in the number", nothing more.
Once a Ukrainian IBAN validates, a form appears below: recipient, EDRPOU or tax number, amount and purpose. The button builds a QR code in the National Bank of Ukraine standard, the one read by Privat24, monobank, Oschad 24/7 and other banking apps: the payer scans it and every field of the transfer form is filled in without typing.
Where it helps:
The amount is optional; if left blank the payer enters it. The payment purpose is required: without it a bank will not process a transfer to a legal entity. The code is built in the browser and nothing is sent anywhere. Before printing a QR, scan it with your own banking app so you see exactly what the payer will see.
If the checksum passes and the bank still rejects the transfer, the number is not the problem. The usual causes: the account is closed; the recipient is a legal entity and the purpose field is empty or not what its bank expects; the amount exceeds the limit for unidentified transfers; the account is in foreign currency and the transfer is in hryvnia. In each case the answer comes from the recipient's bank, not from validating the number.
For company details there is also the EDRPOU and tax number check, which catches typos by checksum in the codes that sit next to the IBAN on every invoice.