API IceFact
Structura JSON pentru endpoint de generare factură
{
"factura": opțional {
"serie": "FV", opțional
"numar": 1, opțional
"data": "2020-01-01", opțional
"scadenta": "2020-01-31", opțional
"moneda": "RON", opțional ISO 4217
"metoda_plata": "1", opțional Payment means code (UNCL4461)
"observatii": "Observatii factura" opțional
},
"curs_valutar": opțional obligatoriu dacă factura este în valută {
"moneda": "EUR", ISO 4217
"multiplicator": 1, opțional
"curs": 1.0000
},
"cumparator": {
"denumire": "Firma SRL",
"cif": "RO123456", pentru PF - opțional sau CNP
"nr_regcom": "J40/1234/2019", opțional
"adresa": "Str. Principala, nr. 1", opțional
"localitate": "Bucuresti",
"judet": "RO-B", ISO 3166-2:RO
"sector": "1", 1 ... 6 dacă judet=="RO-B"
"tara": "RO", ISO 3166-1:Alpha2 Country codes
"cod_postal": "123456", opțional
"iban": "RO12BTRL1234567890123456", opțional
"banca": "Banca Transilvania", opțional
"contact": opțional {
"nume": "Popescu Ion", opțional
"telefon": "0722123456", opțional
"email": "office@firma.ro" opțional
}
},
"articole": [
{
"sku": "SKU123", opțional
"cpv": "45233220-3", opțional
"nc": "NC123", opțional
"denumire": "Produs 1",
"descriere": "Descriere produs 1", opțional
"observatii": "Observatii produs 1", opțional
"um": "buc", coduri UBL
"cantitate": 1,
"pret_unitar_max_zecimale": 8, opțional
"pret_unitar_cu_tva": 100, sau pret_unitar_fara_tva
"pret_unitar_fara_tva": 84.03, sau pret_unitar_cu_tva
"valoare_fara_tva": 100, opțional
"valoare_tva": 119, opțional
"cota_tva": "19%" obligatoriu dacă CIF-ul prestatorului este
} prefixat cu "RO"
],
"total": opțional {
"valoare_fara_tva": 100, opțional
"valoare_tva": 19, opțional
"valoare_cu_tva": 119 opțional
}
}
Reguli de validare:
-
factura opțional
-
serie
- dacă este specificat, trebuie să aibă maximum 10 caractere
-
numar
- câmp obligatoriu dacă este prezent serie
- dacă este specificat, trebuie să aibă maximum 200 de cifre, conform BR-RO-L155
-
data
- dacă este specificat, formatul trebuie să fie 'YYYY-MM-DD'
-
scadenta
- dacă este specificat, formatul trebuie să fie 'YYYY-MM-DD'
-
moneda
- dacă este specificat, trebuie să fie conform ISO
4217
-
metoda_plata
- dacă este specificat, trebuie să fie conform UNCL4461
-
observatii
- dacă este specificat, trebuie să aibă maximum 6000 caractere, conform BR-RO-A020
-
curs_valutar opțional obligatoriu dacă factura este în valută
-
moneda
-
multiplicator
- dacă este specificat, trebuie să fie un număr întreg între 1 și 1000
-
curs
- trebuie să fie un număr cu maxim 4 zecimale
- partea întreagă trebuie să nu fie negativă
-
cumparator
-
denumire
- trebuie să aibă maximum 200 de caractere, conform BR-RO-L203
-
cif pentru PF - opțional sau CNP
-
nr_regcom
- dacă este specificat, trebuie să fie valid
- trebuie să aibă maximum 50 de caractere
-
adresa
- dacă este specificat, trebuie să aibă maximum 150 de caractere, conform BR-RO-L151
-
localitate
- trebuie să fie 'București' dacă judet este 'RO-B'
- trebuie să aibă maximum 50 de caractere, conform BR-RO-L0502
-
judet
- daca tara este 'RO', trebuie sa fie conform ISO 3166-2:RO
- trebuie să aibă maximum 50 de caractere
-
sector dacă judet=="RO-B"
- trebuie să fie un număr întreg de la 1 la 6
-
tara
-
cod_postal
- dacă este specificat, trebuie să aibă maximum 20 de caractere, conform BR-RO-L0202
-
iban
- dacă este specificat, trebuie să fie valid
-
banca
- dacă este specificat, trebuie să aibă maximum 30 de caractere
-
contact
-
nume
- dacă este specificat, trebuie să aibă maximum 100 de caractere, conform BR-RO-L1008
-
telefon
- trebuie să aibă maximum 100 de caractere,
conform BR-RO-L1010
-
email
- dacă este specificat, trebuie să aibă maximum 100 de caractere, conform BR-RO-L1011
-
articole
-
sku
- dacă este specificat, trebuie să aibă maximum 50 de caractere
-
cpv
- dacă este specificat, trebuie să aibă maximum 50 de caractere
-
nc
- dacă este specificat, trebuie să aibă maximum 50 de caractere
-
denumire
- trebuie să aibă maximum 100 de caractere, conform BR-RO-L1024
-
descriere
- dacă este specificat, trebuie să aibă maximum 200 de caractere, conform BR-RO-L212
-
observatii
- dacă este specificat, trebuie să aibă maximum 300 de caractere, conform BR-RO-L303
-
um
-
cantitate
- poate avea maximum 3 zecimale
-
pret_unitar_max_zecimale opțional
- număr întreg pozitiv, între 0 și 8
- daca nu este specificat, se va considera default "8"
-
pret_unitar_fara_tva mutual exclusiv
- nu este permis să apară odată cu pret_unitar_cu_tva
- nu este permis ca prețul unitar să fie negativ (dacă se stornează, minus se pune la cantitate)
- poate avea maximum pret_unitar_max_zecimale zecimale
-
pret_unitar_cu_tva mutual exclusiv
- nu este permis să apară odată cu pret_unitar_fara_tva
- nu este permis ca prețul unitar să fie negativ (dacă se stornează, minus se pune la cantitate)
- poate avea maximum pret_unitar_max_zecimale zecimale
-
valoare_fara_tva
- poate avea maximum 2 zecimale
-
valoare_tva
- poate avea maximum 2 zecimale
-
cota_tva obligatoriu dacă CIF-ul prestatorului este prefixat cu 'RO'
- procentul se exprimă de forma 19% - adică trebuie să conțină inclusiv simbolul "%" (procent).
- procentul nu poate fi negativ și trebuie să aibă maximum 2 zecimale
- dacă produsul nu face obiectul TVA, trebuie specificat un cod de categorie de TVA conform UNCL5305 - cu excepția codului "S" (standard rate), care înseamnă că ar trebui să avem procent
-
total opțional
-
valoare_fara_tva
- poate avea maximum 2 zecimale
-
valoare_tva
- poate avea maximum 2 zecimale
-
valoare_cu_tva
- poate avea maximum 2 zecimale
Observații secțiune "factura":
- Dacă se omite serie/număr, API-ul va aloca automat
următorul număr disponibil
- Dacă se omite data, API-ul va folosi data curentă
- Dacă se omite scadenta, API-ul va folosi data curentă + numărul de zile setat de
utilizator în IceFact
- Dacă se omite moneda, API-ul va folosi RON
- Dacă se omite curs_valutar, API-ul va folosi 1
- Dacă se omite metoda_plata, instrumentul de plată va fi setat ca "nedefinit"
Observatii secțiune "cumparator":
- Câmpul cif este obligatoriu pentru persoanele juridice și opțional pentru persoanele
fizice
- Câmpul sector este opțional și necesar doar dacă "judet"=="B"
Observații secțiune "articole":
- sku - stock keeping unit - codul intern al produsului
- cpv - codul de clasificare al produsului, pentru cumpărători instituții bugetare
- nc - nomenclatură combinată - pentru produse cu risc fiscal ridicat
- denumire - limita de 100 de caractere este impusă de ANAF
- descriere - momentan nu este implementat în IceFact
- observatii - momentan nu este implementat în IceFact
- um - unitatea de măsură - se pot utiliza coduri UBL (efactura) - link
- cota_tva - obligatoriu dacă cif este prefixat cu "RO"
Observații calcule
- Dacă se specifică pret_unitar_cu_tva, pret_unitar_fara_tva va fi calculat automat pe baza cotei de TVA, fiind rotunjit la numărul de zecimale specificat în pret_unitar_max_zecimale
- Pentru preț unitar se pot folosi maximum 8 zecimale
- Totalurile sunt rotunjite la 2 zecimale, limită impusă de ANAF
- Dacă totalurile sunt omise, vor fi calculate de API, altfel rămân intacte ca în JSON (chiar dacă sunt greșite)
Pagină actualizată la 02.12.2024 11:03