Upišite OIB tvrtke (11 znamenki) ili njezin naziv. Kontrolna znamenka provjerava se odmah u vašem pregledniku, a pretraga u podacima Sudskog registra pokazuje čija je to tvrtka: naziv, pravni oblik, status i sjedište.
OIB tvrtke (11 znamenki) ili naziv tvrtke
curl "https://api.prometiam.com/functions/v1/risk-api/companies/search?oib=27759560625&country=HR" \ -H "Authorization: Bearer YOUR_API_KEY"
Provjera OIB-a tvrtke zapravo su dva pitanja. Je li broj dobro napisan? Ima li 11 znamenki i slaže li se jedanaesta, kontrolna znamenka, s prvih deset. To se izračunava bez registra, pa alat to radi u vašem pregledniku dok tipkate; broj odlazi API-ju tek kad pokrenete pretragu. Čiji je to broj? Kojoj je pravnoj osobi OIB dodijeljen te je li ona upisana u Sudski registar i aktivna. To se ne može izračunati, nego se čita iz registra.
OIB (osobni identifikacijski broj) ima 11 znamenki: deset ih je određeno slučajnim odabirom i ne nosi nikakvu informaciju o tvrtki, a jedanaesta je kontrolna znamenka (Zakon o osobnom identifikacijskom broju, članak 3.). Porezna uprava ga dodjeljuje na temelju upisa nove pravne osobe u službenu evidenciju; ne mijenja se kad tvrtka promijeni naziv ili adresu i ne dodjeljuje se ponovo (članci 4. i 8.). Služi i kao porezni broj. OIB nije MBS i jedan se ne može izračunati iz drugoga:
| Broj | Što je | Primjer (INA d.d.) |
|---|---|---|
| OIB | 11 znamenki; dodjeljuje ga Porezna uprava | 27759560625 |
| MBS | 9 znamenki; broj upisa u Sudski registar | 080000604 |
| PDV broj | HR i OIB; za Hrvatsku izveden pravilom, registraciju potvrđuje VIES | HR27759560625 |
Tvrtku po MBS-u tražite u pretrazi Sudskog registra, a o tome što registar sadrži čitajte u vodiču o Sudskom registru.
Pravilnik o osobnom identifikacijskom broju (Narodne novine 1/09, članak 3.) propisuje da se kontrolna znamenka određuje po međunarodnoj normi ISO 7064 »Modul 11,10«. Korake ne navodi Pravilnik, nego norma; za OIB izgledaju ovako:
t postavite na 10.t i uzmite ostatak pri dijeljenju s 10 (ostatak 0 zamijenite s 10); taj broj pomnožite s 2 i uzmite ostatak pri dijeljenju s 11. Rezultat je novi t.11 - t; ako je to 10, kontrolna znamenka je 0.OIB 27759560625 evidentiran je za INA-Industriju nafte d.d. Prvih deset znamenki je 2775956062; jedanaesta, 5, mora se slagati s izračunom:
| Znamenka | t + znamenka | mod 10 (0 postaje 10) | × 2, mod 11 = novi t |
|---|---|---|---|
| 2 | 10 + 2 = 12 | 2 | 4 → 4 |
| 7 | 4 + 7 = 11 | 1 | 2 → 2 |
| 7 | 2 + 7 = 9 | 9 | 18 → 7 |
| 5 | 7 + 5 = 12 | 2 | 4 → 4 |
| 9 | 4 + 9 = 13 | 3 | 6 → 6 |
| 5 | 6 + 5 = 11 | 1 | 2 → 2 |
| 6 | 2 + 6 = 8 | 8 | 16 → 5 |
| 0 | 5 + 0 = 5 | 5 | 10 → 10 |
| 6 | 10 + 6 = 16 | 6 | 12 → 1 |
| 2 | 1 + 2 = 3 | 3 | 6 → 6 |
Na kraju je t = 6, pa je kontrolna znamenka 11 - 6 = 5: broj je ispravno napisan. Kod OIB-a Hrvatskog Telekoma d.d., 81793146560, na kraju je t = 1, 11 - 1 = 10, pa je kontrolna znamenka 0.
| OIB | Kontrolna znamenka treba biti | Rezultat |
|---|---|---|
27759560625 | 5 | ispravan (INA d.d.) |
81793146560 | 0 (11 - 1 = 10) | ispravan (Hrvatski Telekom d.d.) |
18928523252 | 2 | ispravan (Podravka d.d.) |
27759560626 | 5 | neispravan: zadnja znamenka je 6 |
import re
def oib_ok(oib: str) -> bool:
if not re.fullmatch(r'[0-9]{11}', oib):
return False
t = 10
for ch in oib[:10]:
t = (int(ch) + t) % 10 or 10
t = t * 2 % 11
return (11 - t) % 10 == int(oib[10])
Kontrolna znamenka otkriva svaku pogrešku u jednoj znamenki i većinu zamjena susjednih znamenki, ali ne sve. Za bilo kojih prvih deset znamenki točno jedna jedanaesta znamenka prolazi provjeru, pa nasumičan jedanaestoznamenkasti broj prolazi u jednom slučaju od deset.
Ispravna kontrolna znamenka ne dokazuje da je broj nekome dodijeljen: provjeru prolazi svaki deseti nasumični broj. Ne dokazuje ni da je to OIB tvrtke, jer se OIB dodjeljuje i pravnim i fizičkim osobama. Ne dokazuje ni da tvrtka postoji i posluje: i tvrtka u likvidaciji, u stečaju ili brisana iz registra ima broj koji prolazi provjeru. Zato prije prve uplate ili potpisa ugovora usporedite naziv i OIB iz dokumenta s onim što vraća registar.
Dva javna izvora odgovaraju na dva različita pitanja:
OIB tvrtke nalazi se i na njezinim računima (Zakon o OIB-u u članku 6. obvezuje da se OIB navodi na računima i drugim ispravama), u Sudskom registru i na Potvrdi o OIB-u; kako se OIB partnera koristi na e-računima, opisuje stranica E-računi i Fiskalizacija 2.0. Ovaj alat ne zamjenjuje nijedan od tih izvora: nismo Sudski registar ni Porezna uprava, a odgovor nije ovjereni izvadak.
Za jednokratnu provjeru jedne tvrtke dovoljna je javna pretraga Sudskog registra. Naša pretraga dodaje:
vat_number (HR + OIB, izvor rule: oblik je ispravan, registracija nije potvrđena); potvrdu daje GET /vat/HR27759560625, koji provjerava broj u sustavu VIES.Što ne dobivate:
Parametar oib prima 11 znamenki i provjerava kontrolnu znamenku prije pretrage: neispravan OIB vraća 400 validation_error, a ne prazan odgovor, pa pogreška pri prepisivanju ne izgleda kao »tvrtka ne postoji«. Ispravan OIB koji nijedna tvrtka ne nosi vraća 200 s praznim popisom data. Tvrtka je u polju data: company_name, company_number (MBS), identifiers (mbs, oib, vat), status, legal_form i adresa.
# po OIB-u (kontrolna znamenka se provjerava prije pretrage) curl 'https://api.prometiam.com/functions/v1/risk-api/companies/search?country=HR&oib=27759560625' \ -H 'Authorization: Bearer rk_live_...' # isti zapis po MBS-u ili po PDV broju curl 'https://api.prometiam.com/functions/v1/risk-api/companies/search?country=HR&company_number=080000604' \ -H 'Authorization: Bearer rk_live_...' curl 'https://api.prometiam.com/functions/v1/risk-api/companies/search?country=HR&vat=HR27759560625' \ -H 'Authorization: Bearer rk_live_...'
import os, requests
API = 'https://api.prometiam.com/functions/v1/risk-api'
HEAD = {'Authorization': f'Bearer {os.environ["PROMETIAM_API_KEY"]}'}
def tvrtka_po_oibu(oib):
r = requests.get(f'{API}/companies/search', headers=HEAD,
params={'country': 'HR', 'oib': oib})
if r.status_code == 400: # neispravan OIB: duljina ili kontrolna znamenka
return None
r.raise_for_status()
podaci = r.json()['data']
return podaci[0] if podaci else None
Uspješna pretraga košta 1 kredit, i kad ne nađe tvrtku; pogreške, uključujući 400 zbog neispravne kontrolne znamenke, ne naplaćuju se. Provjera PDV broja (GET /vat/{broj}) košta 1 kredit, a događaji promjena u registru (GET /company-events/search) 2 kredita. Za popis dobavljača POST /companies/lookup prima do 100 stavki po 1 kredit; OIB se u stavci šalje u polju vat s prefiksom HR.
Da saznate kad se tvrtka promijeni, uključite praćenje (id je iz rezultata pretrage):
curl -X POST 'https://api.prometiam.com/functions/v1/risk-api/monitor' \
-H 'Authorization: Bearer rk_live_...' \
-H 'Content-Type: application/json' \
-d '{"company_id": 10000080000604, "country": "HR", "webhook_url": "https://example.com/hook"}'
Praćenje obuhvaća do 25 tvrtki u planu Starter (9,99 € mjesečno, 1.000 kredita), 250 u planu Professional i 2.500 u planu Scale. Probno razdoblje traje 14 dana i uključuje 500 kredita; kartica je obavezna, a tijekom probnog razdoblja ništa se ne naplaćuje, nakon čega slijedi Starter ako ne otkažete.
Izvor: Sudski registar, Ministarstvo pravosuđa, uprave i digitalne transformacije (Otvorena dozvola). Prometiam standardizira podatke; odgovor nije ovjereni izvadak iz registra.
Posljednji pregled: 16. listopada 2026. Navodi o Zakonu, Pravilniku, Sudskom registru i usluzi Porezne uprave provjereni su toga dana.
Pokreni besplatno probno razdoblje od 14 dana · Dokumentacija API-ja
Probno razdoblje traje 14 dana i uključuje 500 kredita. Kartica je obavezna, tijekom probnog razdoblja ništa se ne naplaćuje; nakon toga slijedi paket Starter (9,99 € mjesečno) ako ne otkažete.