IPS QR kod na fakturi: praktičan vodič za firme u Srbiji
Autor: Nemanja Vukmirović, Lizzard Solutions. Poslednje ažuriranje: 12. novembar 2026.
Kupac otvori račun, prekuca broj računa od 18 cifara u aplikaciju banke, pogreši jednu cifru i uplata ode na pogrešno mesto. Vi posle celo jutro ručno uparujete izvode sa fakturama.
IPS QR kod na fakturi uklanja taj korak. Kupac skenira kod, proveri unapred popunjen iznos i plati. U ovom vodiču saznaćete šta tačno ide u kod po pravilima Narodne banke Srbije (NBS), koje greške ga kvare i kako da ga vaš sistem za fakturisanje generiše automatski.
Ukratko
- NBS IPS QR kod je red teksta sa propisanim tagovima (račun, primalac, iznos, šifra plaćanja, poziv na broj) pretvoren u QR kod koji kupac skenira u mobilnom bankarstvu.
- Najviše grešaka nastaje zbog formata: crtice u broju računa, decimalna tačka umesto zareza ili prazni opcioni tagovi.
- NBS nudi besplatan generator i validator, na veb stranici i kao API, pa svaki kod možete da proverite pre nego što stigne do kupca.
Šta je IPS QR kod na fakturi?
NBS IPS QR kod je QR kod koji sadrži sve podatke potrebne za instant prenos u Srbiji: račun i naziv primaoca, iznos u dinarima, šifru plaćanja i, po želji, svrhu i poziv na broj. Platilac ga skenira u mobilnom bankarstvu, nalog se sam popuni i on samo potvrdi plaćanje.
Pravila propisuje NBS. U njenim preporukama za podatke u NBS IPS QR kodu detaljno je opisan svaki tag, a NBS traži i da pored, iznad ili ispod koda na računu stoji oznaka „NBS IPS QR“.
Ovaj kod se razlikuje od IPS kodova koje trgovci prikazuju na kasi ili u korpi veb prodavnice. Oni koriste druge identifikacione kodove (PT i EK) i zahtevaju ugovor sa bankom prihvatiocem. Ako prodajete onlajn, tu stranu pokriva naš vodič plaćanje i fiskalizacija za veb prodavnice u Srbiji.
Uradite danas
Pogledajte poslednju fakturu koju ste izdali. Da li kupac mora da prekuca broj računa? Upravo taj korak QR kod uklanja.
Koja polja ulaze u IPS QR kod?
Sadržaj je jedan red teksta. Svako polje je tag, dvotačka i vrednost, a polja se odvajaju uspravnom crtom (|). Evo ispravnog primera koji smo 12. novembra 2026. proverili NBS validatorom:
K:PR|V:01|C:1|R:840000000095584510|N:Primer DOO|I:RSD12000,00|SF:221|S:Uplata po racunu 2026-117|RO:9714123412
| Tag | Značenje | Pravilo (prema preporukama NBS) |
|---|---|---|
K, V, C | Identifikacioni kod, verzija, znakovni skup | Uvek K:PR, V:01 i C:1 (UTF-8). Obavezno. |
R | Račun primaoca | Tačno 18 cifara, bez crtica. Samo jedan račun po kodu. Obavezno. |
N | Naziv primaoca | Do 70 karaktera sa razmacima, najviše tri reda. Obavezno. |
I | Valuta i iznos | „RSD“ i iznos sa decimalnim zarezom, bez razmaka, npr. RSD1025,12. Obavezno. |
SF | Šifra plaćanja | Tri cifre. Obavezno. |
P | Platilac | Opciono, do 70 karaktera. Banka ga može zameniti stvarnim vlasnikom računa. |
S | Svrha plaćanja | Opciono, do 35 karaktera, u jednom redu. |
RO | Model i poziv na broj | Opciono, do 25 karaktera. Počinje modelom (npr. 97) ili sa 00 ako model nije korišćen. |
Kako broj računa pretvoriti u 18 cifara
Broj računa u Srbiji piše se kao šifra banke, broj partije i dve kontrolne cifre. Za QR kod srednji deo dopunjavate nulama dok ukupno ne bude 18 cifara. Primer iz NBS preporuka: 840-955845-10 postaje 840000000095584510.
Izbor šifre plaćanja
Prva cifra je 1 za gotovinska i 2 za bezgotovinska plaćanja. NBS navodi da su šifre 189 i 289 samo za plaćanja koja nalažu građani, pa firmi ili preduzetniku koji vam plaća treba druga šifra. Među najčešće korišćenim NBS navodi 121/221 za promet robe i usluga i 122/222 za usluge javnih preduzeća. Pravu šifru potvrdite sa knjigovođom.
Uradite danas
Zapišite svoj broj računa u obliku od 18 cifara i šifru plaćanja koju ćete koristiti. Te dve vrednosti se ne menjaju od fakture do fakture.
6 grešaka zbog kojih IPS QR kod ne radi
NBS validatoru smo namerno poslali neispravan kod da vidimo šta će uhvatiti:
K:PR|V:01|C:1|R:845-0000000404849-87|N:JP EPS BEOGRAD|I:RSD3702.65|SF:289
Odgovor je naveo tri greške: račun mora da sadrži isključivo 18 numeričkih karaktera, kontrolne cifre računa ne odgovaraju modelu 97, a iznos ima neispravan format zbog decimalne tačke. Pazite na ovih šest stvari:
- Crtice ili razmaci u broju računa. Koristite isključivo oblik od 18 cifara.
- Decimalna tačka u iznosu. Kod nas se piše zarez:
RSD3702,65, a neRSD3702.65. - Prazni opcioni tagovi. NBS ne dozvoljava nešto poput
|S:|. Ako nemate svrhu ili platioca, potpuno izostavite tag. - Pogrešan poziv na broj po modelu 97. Ako
ROpočinje sa 97, kontrolne cifre moraju biti tačne. Proverili smo da validator odbija poziv na broj u kom nisu. Ako ne računate model, na početak stavite 00. - Predugačak tekst. Više od 70 karaktera u nazivu ili 35 u svrsi kvari kod.
- Višak karaktera na kraju. Posle poslednjeg taga nema razmaka ni novog reda.
Česta greška
Broj računa se kopira iz memoranduma u PDF-u pravo u generator. Skoro uvek sadrži crtice i kod će biti odbijen.
Kako generisati IPS QR kod: ručno, preko API-ja ili automatski
| Način | Za koga | Kako radi |
|---|---|---|
| NBS veb generator | Nekoliko faktura mesečno | Popunite polja na stranici NBS IPS QR generatora i validatora i preuzmite sliku. |
| NBS API | Programeri koji testiraju ili generišu kodove | Tekst se šalje POST zahtevom na NBS adrese opisane u NBS smernicama za Generator/Validator API. |
| Ugrađeno u fakturisanje | Ponavljajuće fakture, mnogo kupaca | Sistem pravi tekst iz podataka fakture, lokalno iscrtava QR i štampa ga sa oznakom „NBS IPS QR“. |
NBS API ima četiri metoda: gen vraća sliku, generate vraća rezultat provere sa slikom u base64 obliku, validate samo proverava tekst, a upload proverava postojeću PNG ili JPEG sliku. Parametar ?lang=sr_RS_Latn vraća greške latinicom.
Primer u Pythonu
Ova kratka skripta pravi tekst koda iz podataka fakture i proverava ga NBS validatorom. Istu logiku bismo ugradili u sistem za fakturisanje:
import requests
def ips_account(acc: str) -> str:
"""'840-955845-10' -> '840000000095584510' (18 digits)"""
bank, middle, check = acc.split("-")
return bank + middle.zfill(13) + check
def ips_payload(acc, name, amount, sf, purpose=None, ref=None):
tags = ["K:PR", "V:01", "C:1", "R:" + ips_account(acc),
"N:" + name, "I:RSD" + f"{amount:.2f}".replace(".", ","),
"SF:" + sf]
if purpose: tags.append("S:" + purpose) # max 35 characters
if ref: tags.append("RO:" + ref) # model + reference, max 25
return "|".join(tags) # empty tags are left out
payload = ips_payload("840-955845-10", "Primer DOO", 12000, "221",
"Uplata po racunu 2026-117", "9714123412")
r = requests.post("https://nbs.rs/QRcode/api/qr/v1/validate?lang=sr_RS_Latn",
data=payload.encode("utf-8"),
headers={"Content-Type": "text/plain"})
print(r.json()["s"]) # {'code': 0, 'desc': 'Ok.'}
Naš predlog za rad u praksi: QR sliku iscrtavajte u svom sistemu pomoću standardne QR biblioteke, a NBS validator koristite u automatskim testovima ili kao proveru pre slanja. Tako izdavanje faktura ne zavisi od toga da li je spoljni servis dostupan baš u tom trenutku.
Ako fakture već šaljete u državni sistem, isti podaci mogu da napune i QR kod. Kako taj tok izgleda, objašnjava naš vodič za integraciju sa eFakturom (SEF), a povezivanje ovakvih alata uopšte pokriva vodič za API integraciju.
Uradite danas
Otvorite NBS generator, unesite svoj račun u obliku od 18 cifara i probni iznos, pa rezultat skenirajte aplikacijom banke bez potvrde plaćanja. Videćete tačno ono što će videti vaši kupci.
Šta se menja kada dodate kod
Kupac više ne prekucava vaš račun, iznos ni poziv na broj. Ako svaka faktura ima ispravan poziv na broj po modelu 97, uz svaku uplatu se vidi na koju fakturu se odnosi, pa je uparivanje uplata sa fakturama mnogo lakše vama ili knjigovođi. Taj korak je tipičan kandidat za automatizaciju poslovnih procesa.
| Bez koda | Sa kodom |
|---|---|
| Kupac kuca račun, iznos i poziv na broj | Kupac skenira i potvrdi |
| Moguće su greške u računu ili pozivu na broj | Podaci dolaze iz vašeg sistema |
| Uplate se uparuju po imenu i iznosu | Uplate se uparuju po pozivu na broj |
Česta pitanja
Da li je IPS QR kod obavezan na fakturama u Srbiji?
Pravila NBS koja navodimo opisuju kako kod mora da izgleda ako ga koristite, a ne obavezu da bude na svakoj fakturi. Ako ga štampate, poštujte specifikaciju i pored koda stavite oznaku „NBS IPS QR“. Proverite sa knjigovođom da li vaša delatnost ima posebna pravila.
Mogu li besplatno da napravim IPS QR kod?
Da. Narodna banka Srbije nudi besplatan generator i validator na svom IPS sajtu i kao API. Pojedinačne kodove možete praviti ručno, a vaš softver može da šalje tekst API-ju i dobije proveren kod ili sliku.
Zašto IPS QR kod prijavljuje grešku pri skeniranju?
Najčešće tekst krši neko pravilo formata: crtice u računu, decimalna tačka umesto zareza, prazan opcioni tag, pogrešan poziv na broj po modelu 97 ili predugačak tekst. Nalepite tačan tekst u NBS validator i on će navesti problem.
Koju šifru plaćanja koristiti za fakture firmama?
Šifre 189 i 289 su samo za plaćanja koja nalažu građani. Za promet robe i usluga NBS među najčešćim navodi 121 ili 221, gde 2 znači bezgotovinsko plaćanje. Knjigovođa može da potvrdi pravu šifru za vrstu vašeg prihoda.
Želite IPS QR kod na svakoj fakturi, automatski?
Povezujemo vaš sistem za fakturisanje ili CRM tako da generiše proverene IPS QR kodove i uparuje uplate, bez menjanja načina na koji tim radi.
Javite se Lizzard Solutions