What the NBS IPS QR code is
It is the QR code standard of the National Bank of Serbia for payments. On invoices it uses the identification code PR. When your customer scans it in the mobile banking app, the app fills in the payment order with your account, name, amount, payment code and reference, and the customer only checks and confirms it. Scanning alone does not pay anything.
The rules are in Annex 1 of the NBS decision on instant credit transfers, which was last replaced in 2020. Point 22 of the decision says the code is used by these rules, also on invoices. NBS also publishes recommendations that explain every field, and a free validator.
What goes into the code
| Tag | What | Rule |
|---|---|---|
K | Identification code | Always PR on invoices |
V, C | Version and character set | Always 01 and 1 (UTF-8) |
R | Payee account | Exactly 18 digits, no dashes |
N | Payee name and address | Up to 70 characters, at most 3 lines |
I | Currency and amount | RSD and the amount with a decimal comma, no thousands separator, at most 999999999999,99 |
P | Payer | Optional, up to 70 characters, at most 3 lines |
SF | Payment code | 3 digits |
S | Purpose of payment | Optional, up to 35 characters |
RO | Model and reference number | Optional, up to 25 characters |
Each field is written as tag, colon and value, and fields are separated by the character |. That character, the backslash and Cyrillic letters are not allowed in the values. Latin letters with Č, Ć, Đ, Š and Ž, digits, spaces and common punctuation are fine. An empty optional field is left out completely. The tool writes the fields in the order NBS uses in all of its examples.
After scanning, the payer cannot change the account, the payee name and the reference. The amount on an invoice can be changed, and so can the payer details, the payment code and the purpose. If you leave the amount empty, the code carries 0,00 and the payer types the amount.
Payment code
The first digit is the form of payment: 2 for a non cash transfer between accounts, 1 for cash. In an NBS IPS QR code it can only be 1 or 2. The last two digits are the basis of payment from the NBS list in Annex 3 of the decision on payment order forms.
NBS names 221 and 222 (and 121 and 122) as the codes used most often in these QR codes. Codes 189 and 289 are only for payments ordered by citizens, so when your customers are companies or entrepreneurs, choose another code. If you are not sure which code fits your invoices, ask your accountant.
Model 97 and the reference number
With model 97 the first two digits of the reference are a control number, so a mistyped reference can be caught. Banks reject a payment order when the control number does not match. Without a model the field starts with 00, and banks do not check the reference.
Letters count as numbers: A is 10, B is 11 and so on up to Z, which is 35. In the NBS example the reference 567812F48K012 gets the control number 54, so the full reference is 54567812F48K012. In model 97 the reference has no dashes or spaces and at most 23 characters with the control number.
Before you print
- Size. On printed invoices the code should be 2.5 to 3.3 cm wide and high.
- Label. Print NBS IPS QR directly above, beside or below the code. The downloads have it under the code.
- Error correction. NBS allows level M or L on invoices. The tool uses M and switches to L only when the content does not fit otherwise.
- Amount of text. The code may be at most version 13, which is 69 × 69 modules. That holds 331 bytes at level M and 425 at level L. Č, Ć, Đ, Š and Ž take two bytes each.
- White border. NBS does not set one. The general QR standard asks for four modules on every side, and the tool keeps four.
- Test it. Scan the printed code with your own bank app before you send invoices to customers.
FAQ
Is my data sent anywhere?
Only when you click the NBS check. Then the text of the code goes to the free validator of the National Bank of Serbia and the page shows its answer. Without that click nothing leaves your browser. NBS publishes no limits or uptime promise for the validator, so if it does not answer, try again later.
Does the tool check that the account belongs to the payee?
No. It checks the format, the control number and the bank code. Whether the account is open and whose it is, only the bank knows. Copy the account from a bank statement or contract.
My company name is in Cyrillic. What now?
The NBS list of allowed characters has only Latin letters. Write the name in Latin script, or click Convert to Latin when the tool finds Cyrillic, and check the result.
Is this the same as paying with IPS at a shop?
No. Payments at a point of sale and online shops use other identification codes (PT, PK and EK), which a merchant sets up through its bank. The PR code on invoices only fills in a payment order.
Why is the bank code marked as unknown?
The tool uses the NBS list of bank codes from 8 September 2026. After a merger the bank that takes over may keep using the old code for a while, so an unknown code is not always a mistake. Check the account with the payee.
Sources: National Bank of Serbia, decision on general rules for instant credit transfers and its Annex 1 from 2020, recommendations for the NBS IPS QR code, guide to the generator and validator, decision on payment order forms with Annex 2 (model 97) and Annex 3 (payment codes), decision on the structure of current accounts and the list of bank codes of 8 September 2026. Checked in October 2026.
This page explains the NBS rules in plain words. It is not legal, tax or financial advice. For payment codes and references on your invoices, ask your accountant or bank.
Everything you type stays in your browser. Only the NBS check button sends the text of the code to the National Bank of Serbia.