Emitere factura
Emite o factura noua. Poti emite factura ca ciorna (draft), pe care o finalizezi ulterior din interfata SmartBill.
Ai primit o eroare la emiterea facturii?
Erorile de autentificare si autorizare sunt comune tuturor endpoint-urilor V1. Pentru email/token, companyVatCode, drepturi pe firma sau pe serie, vezi Erori API V1. Mai jos gasesti doar erorile specifice emiterii de factura.
<details> <summary><strong>Date document si serii</strong></summary> <table> <thead> <tr> <th>Situatie</th> <th>Eroare</th> <th>Sugestie</th> </tr> </thead> <tbody> <tr> <td>Serie inexistenta in cont</td> <td><code>Seria nu a fost gasita! Folositi o serie creata in contul de cloud.</code></td> <td>Seria trebuie definita in SmartBill Cloud. Trimite in `seriesName` seria facturii, exact cum e configurata in cont.</td> </tr> <tr> <td>Contul a atins numarul maxim de documente permis de pachetul de abonament</td> <td><code>Pentru acest pachet s-a emis numarul maxim de documente permis</code></td> <td>Limita vine din abonamentul contului SmartBill Cloud, nu din API, deci nu se ridica din integrare. Verifica pachetul in cont.</td> </tr> <tr> <td>Moneda inexistenta sau scrisa gresit</td> <td><code>Moneda nu a fost gasita pe server!</code></td> <td>Verifica moneda trimisa in `currency`. Valorile acceptate sunt listate in schema campului.</td> </tr> <tr> <td>Data documentului in format gresit</td> <td><code>Data documentului trebuie sa fie de forma yyyy-MM-dd.</code></td> <td>Trimite `issueDate` in format `yyyy-MM-dd`, de exemplu `2026-06-15`.</td> </tr> <tr> <td><code>sendEmail</code> fara adresa destinatar</td> <td><code>Trebuie specificata adresa de email a clientului.</code></td> <td>Cand `sendEmail` e `true`, completeaza adresa destinatarului in `email.to` sau in `client.email`.</td> </tr> <tr> <td><code>sendEmail</code> fara server de email</td> <td><code>Server-ul de email nu a fost configurat.</code></td> <td>Contul nu are un server de email configurat. Intra in SmartBill Cloud si configureaza-ti propriul server de email din <a href="https://cloud.smartbill.ro/core/configurare_mailuri/">Configurare > Email</a>.</td> </tr> </tbody> </table> </details> <details> <summary><strong>Client</strong></summary> <table> <thead> <tr> <th>Situatie</th> <th>Eroare</th> <th>Sugestie</th> </tr> </thead> <tbody> <tr> <td>Obiectul <code>client</code> lipseste</td> <td><code>tara trebuie specificata</code></td> <td>Trimite `client` cu cel putin `name` si `country`.</td> </tr> <tr> <td><code>client.name</code> gol sau <code>null</code></td> <td><code>Client invalid!</code></td> <td>Trimite un `client.name` valid (nu gol, nu `null`).</td> </tr> <tr> <td><code>client.country</code> lipseste</td> <td><code>tara trebuie specificata</code></td> <td>Completeaza `client.country`, ex. `Romania`.</td> </tr> <tr> <td>Client duplicat in nomenclator</td> <td><code>Clientul exista deja pe server</code></td> <td>Exista deja un client cu acelasi nume dar alt CIF. Sterge duplicatul din nomenclator.</td> </tr> </tbody> </table> </details> <details> <summary><strong>Produse, TVA si discounturi</strong></summary> <table> <thead> <tr> <th>Situatie</th> <th>Eroare</th> <th>Sugestie</th> </tr> </thead> <tbody> <tr> <td>Lista `products` goala</td> <td><code>invoiceProducts trebuie specificat si trebuie sa contina cel putin un element</code></td> <td>Trimite cel putin un produs in `products`.</td> </tr> <tr> <td><code>products[].name</code> lipsa</td> <td><code>name trebuie specificat pentru fiecare produs</code></td> <td>Trimite `name` la fiecare produs.</td> </tr> <tr> <td><code>products[].measuringUnitName</code> lipsa</td> <td><code>measuringUnitName trebuie specificat pentru fiecare produs</code></td> <td>Trimite `measuringUnitName` (case-sensitive, sa existe in cont).</td> </tr> <tr> <td>Cota TVA a produsului inexistenta</td> <td><code>Cota tva a produsului ... nu a fost gasita pe server!</code></td> <td>Foloseste o cota TVA existenta in cont.</td> </tr> <tr> <td>Produs fara cota TVA setata</td> <td><code>Trebuie sa setezi o cota tva pentru produsul ...</code></td> <td>Seteaza `taxPercentage` la fiecare produs.</td> </tr> <tr> <td>Document doar cu discount</td> <td><code>Nu poti sa emiti un document care contine doar un discount. Trebuie sa ai si produse / servicii adaugate.</code></td> <td>Adauga si produse, nu doar linie de discount.</td> </tr> <tr> <td>Discount procentual fara procent</td> <td><code>Trebuie sa introduceti valoarea procentului!</code></td> <td>Trimite `discountPercentage` pe linia de discount.</td> </tr> <tr> <td>Produs fara cod</td> <td><code>Produsul ... nu are codul specificat.</code></td> <td>Daca firma foloseste cod produs, trimite `code` la fiecare produs.</td> </tr> <tr> <td>Produs fara cota TVA in nomenclator</td> <td><code>Produsul ... nu are cota tva setata in cloud. Setati o cota din nomenclatorul de produse.</code></td> <td>Seteaza cota TVA a produsului in <a href="https://cloud.smartbill.ro/nomenclator/produse/">Nomenclatoare > Produse</a>.</td> </tr> <tr> <td>Fara cota TVA implicita</td> <td><code>Cota default nu a fost gasita pe server!</code></td> <td>Marcheaza o cota TVA ca implicita in <a href="https://cloud.smartbill.ro/core/configurare/cote-tva/">Configurare > Cote TVA</a>.</td> </tr> <tr> <td>Cota discountului inexistenta</td> <td><code>Cota ... nu a fost gasita pe server!</code></td> <td>Foloseste o cota TVA predefinita in cont.</td> </tr> <tr> <td>Discount pe produse cu cote TVA diferite</td> <td><code>La aplicarea unui discount pentru produse cu cote tva diferite, trebuie sa specifici si cota tva a discountului.</code></td> <td>Specifica si cota TVA a discountului.</td> </tr> <tr> <td>Discount valoric fara valoare</td> <td><code>discountValue trebuie specificat pentru fiecare produs de tip discount</code></td> <td>Trimite `discountValue` pe linia de discount.</td> </tr> <tr> <td>Moneda produsului inexistenta</td> <td><code>Moneda nu a fost gasita pe server!</code></td> <td>Trimite o valoare acceptata de schema campului `products[].currency` sau omite campul.</td> </tr> <tr> <td>Moneda de referinta diferita</td> <td><code>Nu puteti emite documente in ... cu moneda de referinta a produselor in ... !</code></td> <td>Moneda documentului si cea de referinta trebuie sa coincida (cand nu e RON).</td> </tr> <tr> <td>Pret in alta moneda decat documentul</td> <td><code>Aveti produse care au pretul in alta moneda decat cea a facturii.</code></td> <td>Activeaza in cont lucrul cu pret de referinta in valuta.</td> </tr> <tr> <td>Peste 400 de linii pe document</td> <td><code>Numarul maxim acceptat de 400 intrari pe document a fost depasit.</code></td> <td>Maxim 400 de pozitii pe document.</td> </tr> </tbody> </table> </details> <details> <summary><strong>Incasare</strong></summary> <table> <thead> <tr> <th>Situatie</th> <th>Eroare</th> <th>Sugestie</th> </tr> </thead> <tbody> <tr> <td>Incasare fara tip (<code>payment.type</code> lipseste)</td> <td><code>type trebuie specificat pentru incasare</code></td> <td>Trimite tipul incasarii in `payment.type`.</td> </tr> <tr> <td>Incasare fara <code>isCash</code></td> <td><code>isCash trebuie specificat pentru incasare</code></td> <td>Trimite `payment.isCash` (`true`/`false`) cand adaugi o incasare.</td> </tr> <tr> <td>Incasare fara valoare (<code>payment.value</code> lipseste)</td> <td><code>value trebuie specificat pentru incasare</code></td> <td>Trimite valoarea incasarii in `payment.value`.</td> </tr> <tr> <td>Tip de incasare inexistent</td> <td><code>Tipul documentului nu a fost gasit pe server!</code></td> <td>Tipul de incasare trimis nu exista. Foloseste un tip valid (de exemplu `Chitanta`, `Ordin de plata`, `Card`).</td> </tr> <tr> <td>Serie de incasare inexistenta in cont</td> <td><code>Seria nu a fost gasita! Folositi o serie creata in contul de cloud.</code></td> <td>Seria incasarii trebuie definita in contul SmartBill Cloud.</td> </tr> </tbody> </table> </details> <details> <summary><strong>Din proforma</strong></summary> <table> <thead> <tr> <th>Situatie</th> <th>Eroare</th> <th>Sugestie</th> </tr> </thead> <tbody> <tr> <td>Proforma sursa inexistenta</td> <td><code>Factura proforma ... nu a fost gasita!</code></td> <td>Proforma pe baza careia vrei sa emiti factura nu a fost gasita. Verifica in SmartBill Cloud daca documentul mai exista si daca ai trimis corect seria si numarul proformei.</td> </tr> <tr> <td>Proforma sursa fara produse</td> <td><code>Proforma nu contine produse!</code></td> <td>Proforma pe baza careia emiti factura nu are produse adaugate. Verifica in SmartBill Cloud daca proforma respectiva are produse.</td> </tr> </tbody> </table> </details> <details> <summary><strong>Stoc si gestiuni</strong></summary> <table> <thead> <tr> <th>Situatie</th> <th>Eroare</th> <th>Sugestie</th> </tr> </thead> <tbody> <tr> <td>Gestiune lipsa pe produs (cu <code>useStock</code>)</td> <td><code>Gestiunea predatoare nu este setata pentru produsul Produs Test API Erori.</code></td> <td>Cand `useStock` este `true`, trimite o gestiune existenta in `products[].warehouseName`.</td> </tr> <tr> <td>Gestiune inexistenta in cont</td> <td><code>Gestiunea predatoare GESTIUNE_INEXISTENTA a produsului Produs Test API Erori nu a fost gasita.</code></td> <td>Verifica ca `warehouseName` este scrisa corect si ca gestiunea a fost creata in prealabil in contul Cloud.</td> </tr> <tr> <td>Gestiune invalida</td> <td><code>Gestiunea predatoare este invalida!</code></td> <td>Gestiunea trimisa nu este valida. Verifica `warehouseName` si gestiunile definite in contul Cloud.</td> </tr> <tr> <td>Modulul de stoc inactiv pe cont</td> <td><code>Modulul stoc nu este activ!</code></td> <td>Contul pe care emiti nu are activat modulul de gestiune. Contacteaza-ne la api@smartbill.ro.</td> </tr> <tr> <td>Produs fara stoc (nicio achizitie)</td> <td><code>Nu ai facut nicio achizitie pentru produsul ...</code></td> <td>Incarca intai stoc pentru produs sau emite documentul fara descarcare de gestiune. Verifica codul si numele produsului (case-sensitive).</td> </tr> <tr> <td>Stoc insuficient pe gestiune</td> <td><code>Cantitate stoc insuficienta ...</code></td> <td>Nu exista stoc suficient pe gestiunea aleasa. Schimba gestiunea sau emite cu `useStock` `false` si descarca stocul ulterior din contul Cloud.</td> </tr> <tr> <td>Cod produs care nu coincide cu cel din stoc</td> <td><code>Exista deja pe stoc un produs cu numele ... si codul ...</code></td> <td>Codul produsului trimis nu coincide exact cu cel din SmartBill. Codul este case-sensitive (de exemplu `25xl` vs `25XL`).</td> </tr> <tr> <td>Unitate de masura fara factor de conversie</td> <td><code>Unitatea de masura ... nu are factor de conversie setat.</code></td> <td>Unitatea de masura trebuie trecuta exact ca in contul Cloud pentru produs. Parametrul este case-sensitive.</td> </tr> <tr> <td>Data document anterioara importului de stoc initial</td> <td><code>Nu poti adauga documente cu tranzactii pe stoc la data anterioara datei importului de stoc initial ...</code></td> <td>Alege o `issueDate` ulterioara datei importului de stoc initial pentru gestiunea respectiva.</td> </tr> </tbody> </table> </details>Tipuri de emitere
<details> <summary><strong>1. Emitere factura simpla</strong></summary>Campurile minime obligatorii pentru o factura valida. Punct de start recomandat pentru integrari noi sau cazuri simple.
{
"companyVatCode": "CIF_FIRMA",
"seriesName": "SERIA_FACTURII",
"issueDate": "2026-06-15",
"client": {
"name": "Client SRL",
"country": "Romania"
},
"products": [{
"name": "Produs 1",
"code": "PRD001",
"quantity": 1,
"measuringUnitName": "buc",
"taxPercentage": 21,
"price": 10
}]
}
</details>
<details>
<summary><strong>2. Emitere factura completa</strong></summary>
Un payload complex care combina mai multe optiuni intr-un singur apel - util ca referinta cand integrezi scenarii care depasesc factura simpla.
{
"companyVatCode": "CIF_FIRMA",
"seriesName": "SERIA_FACTURII",
"isDraft": false,
"issueDate": "2026-06-15",
"dueDate": "2026-07-15",
"deliveryDate": "2026-06-20",
"paymentDate": "2026-06-15",
"language": "RO",
"currency": "RON",
"precision": 2,
"useStock": false,
"useIntraCif": false,
"usePaymentTax": false,
"useEstimateDetails": false,
"delegateName": "Ion Popescu",
"delegateIdentityCard": "AB 123456",
"delegateAuto": "B-123-ABC",
"issuerCnp": "1234567890123",
"issuerName": "Maria Ionescu",
"client": {
"name": "Client SRL",
"vatCode": "RO22222222",
"code": "CLI001",
"regCom": "J40/1234/2020",
"isTaxPayer": true,
"address": "Str. Lalelei 1",
"city": "Sector 1",
"county": "Bucuresti",
"country": "Romania",
"email": "client@example.com",
"phone": "0722000000",
"contact": "Andrei Popa",
"iban": "RO49AAAA1B31007593840000",
"bank": "BCR",
"saveToDb": false
},
"products": [
{
"name": "Servicii consultanta",
"code": "SRV001",
"productDescription": "Servicii de consultanta IT",
"translatedName": "Consulting services",
"measuringUnitName": "ora",
"translatedMeasuringUnit": "hour",
"quantity": 1,
"price": 100,
"taxName": "Normala",
"taxPercentage": 21,
"isService": true,
"saveToDb": false
},
{
"name": "Discount valoric",
"isDiscount": true,
"numberOfItems": 1,
"discountType": 1,
"discountValue": -10,
"measuringUnitName": "buc",
"taxPercentage": 21
},
{
"name": "Produs 1",
"code": "PRD001",
"quantity": 2,
"price": 200,
"measuringUnitName": "buc",
"taxName": "Normala",
"taxPercentage": 21,
"isService": false,
"saveToDb": false
},
{
"name": "Discount procentual 10%",
"isDiscount": true,
"numberOfItems": 1,
"discountType": 2,
"discountPercentage": 10,
"measuringUnitName": "buc",
"taxPercentage": 21
}
],
"payment": {
"value": 450,
"type": "Ordin plata",
"isCash": false
},
"paymentUrl": "",
"sendEmail": false,
"email": {
"to": "client@example.com",
"cc": "",
"bcc": ""
},
"observations": "Marfa se ridica de la sediu in termen de 5 zile lucratoare",
"mentions": "Plata se face in contul IBAN specificat in contract"
}
</details>
<details>
<summary><strong>3. Emitere factura cu link de plata</strong></summary>
Emite factura cu un link de plata asociat butonului 'Plateste cu cardul' de pe document. Necesita un cont Netopia, euPlatesc sau Stripe configurat in <a href="https://cloud.smartbill.ro/core/integrari/">Configurare > Integrari</a>. Seteaza paymentUrl: "Generate URL" pentru a activa generarea link-ului.
{
"companyVatCode": "CIF_FIRMA",
"seriesName": "SERIA_FACTURII",
"issueDate": "2026-06-15",
"client": { "name": "Client SRL", "vatCode": "RO22222222", "isTaxPayer": true, "address": "Str. Lalelei 1", "city": "Sector 1", "county": "Bucuresti", "country": "Romania", "email": "client@example.com" },
"products": [{ "name": "Produs 1", "code": "PRD001", "quantity": 1, "price": 100, "measuringUnitName": "buc", "taxPercentage": 21 }],
"paymentUrl": "Generate URL"
}
</details>
<details>
<summary><strong>4. Emitere factura cu descarcare de gestiune</strong></summary>
Emite factura si scade stocul produselor din gestiune. Gestiunea trebuie sa existe deja in SmartBill Cloud si sa aiba stoc disponibil pentru produsele facturate. Seteaza useStock: true si specifica warehouseName pe fiecare produs.
Denumirea produsului la descarcarea de gestiune. Produsul este identificat prin code. Daca valoarea din name difera de denumirea din nomenclator, aceasta suprascrie automat numele produsului in nomenclator, indiferent de valoarea saveToDb.
Exemplu: produsul Apa minerala (cod A1) exista in nomenclator. La emiterea unei facturi cu descarcare de gestiune pe codul A1, transmitand "name": "Apa minerala 1.5", denumirea produsului din nomenclator devine Apa minerala 1.5.
Pentru a pastra denumirea din SmartBill, astfel incat numele transmis prin API sa fie folosit doar pe factura fara a modifica nomenclatorul, seteaza useSBProductName: true in parametrii produsului. Necesita setarea "Foloseste cod produs" activata pe firma.
{
"companyVatCode": "CIF_FIRMA",
"seriesName": "SERIA_FACTURII",
"issueDate": "2026-06-15",
"client": { "name": "Client SRL", "vatCode": "RO22222222", "isTaxPayer": true, "address": "Str. Lalelei 1", "city": "Sector 1", "county": "Bucuresti", "country": "Romania", "email": "client@example.com" },
"useStock": true,
"products": [{
"name": "Produs 1",
"code": "PRD001",
"quantity": 1,
"price": 100,
"measuringUnitName": "buc",
"warehouseName": "NUME_GESTIUNE",
"taxPercentage": 21
}]
}
</details>
<details>
<summary><strong>5. Emitere factura ciorna (draft)</strong></summary>
Emite factura in stare de ciorna, fara numar atribuit. Documentul ramane ca ciorna pana la finalizare manuala din SmartBill Cloud. Seteaza isDraft: true.
{
"companyVatCode": "CIF_FIRMA",
"isDraft": true,
"seriesName": "SERIA_FACTURII",
"issueDate": "2026-06-15",
"client": { "name": "Client SRL", "vatCode": "RO22222222", "isTaxPayer": true, "address": "Str. Lalelei 1", "city": "Sector 1", "county": "Bucuresti", "country": "Romania", "email": "client@example.com" },
"products": [{ "name": "Produs 1", "code": "PRD001", "quantity": 1, "price": 100, "measuringUnitName": "buc", "taxPercentage": 21 }]
}
</details>
<details>
<summary><strong>6. Emitere factura cu discounturi</strong></summary>
Discounturile se adauga ca linii separate cu isDiscount: true. numberOfItems stabileste pe cate produse imediat anterioare se aplica discountul. Pentru discount valoric, seteaza discountType: 1 si foloseste discountValue. Pentru discount procentual, seteaza discountType: 2 si foloseste discountPercentage; valoarea procentului trebuie sa fie mai mare decat 0.
{
"companyVatCode": "CIF_FIRMA",
"seriesName": "SERIA_FACTURII",
"issueDate": "2026-06-15",
"client": { "name": "Client SRL", "vatCode": "RO22222222", "isTaxPayer": true, "address": "Str. Lalelei 1", "city": "Sector 1", "county": "Bucuresti", "country": "Romania", "email": "client@example.com" },
"products": [
{
"name": "Produs 1",
"code": "PRD001",
"quantity": 1,
"price": 100,
"measuringUnitName": "buc",
"taxPercentage": 21
},
{
"name": "Discount valoric",
"isDiscount": true,
"numberOfItems": 1,
"discountType": 1,
"discountValue": -10,
"measuringUnitName": "buc",
"taxPercentage": 21
},
{
"name": "Produs 2",
"code": "PRD002",
"quantity": 1,
"price": 200,
"measuringUnitName": "buc",
"taxPercentage": 21
},
{
"name": "Discount procentual 10%",
"isDiscount": true,
"numberOfItems": 1,
"discountType": 2,
"discountPercentage": 10,
"measuringUnitName": "buc",
"taxPercentage": 21
}
]
}
</details>
<details>
<summary><strong>7. Emitere factura cu servicii</strong></summary>
Marcheaza produsele de tip serviciu cu isService: true. Serviciile sunt excluse automat din descarcarea de gestiune atunci cand useStock: true este setat la nivel de factura.
{
"companyVatCode": "CIF_FIRMA",
"seriesName": "SERIA_FACTURII",
"issueDate": "2026-06-15",
"client": { "name": "Client SRL", "vatCode": "RO22222222", "isTaxPayer": true, "address": "Str. Lalelei 1", "city": "Sector 1", "county": "Bucuresti", "country": "Romania", "email": "client@example.com" },
"products": [{
"name": "Servicii consultanta",
"code": "SRV001",
"quantity": 1,
"price": 100,
"measuringUnitName": "ora",
"taxPercentage": 21,
"isService": true
}]
}
</details>
<details>
<summary><strong>8. Emitere factura cu data scadenta</strong></summary>
Adauga dueDate pentru a specifica data scadentei facturii.
{
"companyVatCode": "CIF_FIRMA",
"seriesName": "SERIA_FACTURII",
"issueDate": "2026-06-15",
"dueDate": "2026-07-15",
"client": { "name": "Client SRL", "vatCode": "RO22222222", "isTaxPayer": true, "address": "Str. Lalelei 1", "city": "Sector 1", "county": "Bucuresti", "country": "Romania", "email": "client@example.com" },
"products": [{ "name": "Produs 1", "code": "PRD001", "quantity": 1, "price": 100, "measuringUnitName": "buc", "taxPercentage": 21 }]
}
</details>
<details>
<summary><strong>9. Emitere factura ca incasata</strong></summary>
Emite factura si inregistreaza plata simultan, intr-un singur apel, prin obiectul payment. Util atunci cand clientul a platit comanda in magazinul tau online.
{
"companyVatCode": "CIF_FIRMA",
"seriesName": "SERIA_FACTURII",
"issueDate": "2026-06-15",
"client": { "name": "Client SRL", "vatCode": "RO22222222", "isTaxPayer": true, "address": "Str. Lalelei 1", "city": "Sector 1", "county": "Bucuresti", "country": "Romania", "email": "client@example.com" },
"products": [{ "name": "Produs 1", "code": "PRD001", "quantity": 1, "price": 100, "measuringUnitName": "buc", "taxPercentage": 21 }],
"payment": {
"value": 100,
"paymentSeries": "SERIA_CHITANTEI",
"type": "Chitanta",
"isCash": true
}
}
</details>
<details>
<summary><strong>10. Emitere factura cu trimitere pe email</strong></summary>
Emite factura si o trimite automat pe email clientului. Seteaza sendEmail: true si specifica adresa in email.to. Adresa de expeditor si template-ul se configureaza din Configurare > Email.
{
"companyVatCode": "CIF_FIRMA",
"seriesName": "SERIA_FACTURII",
"issueDate": "2026-06-15",
"sendEmail": true,
"email": {
"to": "client@example.com",
"cc": "",
"bcc": ""
},
"client": { "name": "Client SRL", "vatCode": "RO22222222", "isTaxPayer": true, "address": "Str. Lalelei 1", "city": "Sector 1", "county": "Bucuresti", "country": "Romania", "email": "client@example.com" },
"products": [{ "name": "Produs 1", "code": "PRD001", "quantity": 1, "price": 100, "measuringUnitName": "buc", "taxPercentage": 21 }]
}
</details>
<details>
<summary><strong>11. Emitere factura in valuta</strong></summary>
Emite factura in valuta. Seteaza currency si exchangeRate la nivel de factura, si currency pe fiecare produs cu aceeasi valuta - cursul apare pe factura alaturi de echivalentul in RON. exchangeRate este optional - daca nu e specificat, se foloseste cursul din Preferinte personale (sectiunea "Curs valutar preluat de pe Internet": cursul de azi sau de ieri, cu adaos procentual optional).
{
"companyVatCode": "CIF_FIRMA",
"seriesName": "SERIA_FACTURII",
"issueDate": "2026-06-15",
"currency": "EUR",
"exchangeRate": 4.97,
"client": { "name": "Client SRL", "vatCode": "RO22222222", "isTaxPayer": true, "address": "Str. Lalelei 1", "city": "Sector 1", "county": "Bucuresti", "country": "Romania", "email": "client@example.com" },
"products": [
{
"name": "Produs 1",
"code": "PRD001",
"quantity": 1,
"price": 100,
"measuringUnitName": "buc",
"taxPercentage": 21,
"currency": "EUR"
}
]
}
</details>
<details>
<summary><strong>12. Emitere factura cu pret referinta in valuta</strong></summary>
Util cand contractele sunt in valuta dar facturezi in RON - de exemplu, un abonament de mentenanta de 100 EUR facturat la cursul zilei. Necesita activarea optiunii "Am preturi cu moneda de referinta in valuta" din Configurare > Generale in SmartBill Cloud. Seteaza currency la nivel de produs cu valuta contractului si currency la nivel de factura cu moneda de emitere. exchangeRate pe produs este optional - daca nu e specificat, se foloseste cursul din Preferinte personale (sectiunea "Curs valutar preluat de pe Internet": cursul de azi sau de ieri, cu adaos procentual optional).
{
"companyVatCode": "CIF_FIRMA",
"seriesName": "SERIA_FACTURII",
"issueDate": "2026-06-15",
"currency": "RON",
"client": { "name": "Client SRL", "vatCode": "RO22222222", "isTaxPayer": true, "address": "Str. Lalelei 1", "city": "Sector 1", "county": "Bucuresti", "country": "Romania", "email": "client@example.com" },
"products": [
{
"name": "Produs 1",
"code": "PRD001",
"quantity": 1,
"price": 497,
"measuringUnitName": "buc",
"taxPercentage": 21,
"currency": "EUR",
"exchangeRate": 4.97
}
]
}
</details>
<details>
<summary><strong>13. Emitere factura cu CIF intracomunitar</strong></summary>
Daca esti inregistrat in sistemul electronic One Stop Shop, intra in contul SmartBill la Configurare > Date Firma si completeaza campul CIF intracomunitar. Daca ai nevoie de CIF OSS, foloseste optiunea Genereaza CIF OSS afisata langa camp. Dupa configurare, seteaza useIntraCif: true pentru a emite factura cu acest CIF.
{
"companyVatCode": "CIF_FIRMA",
"useIntraCif": true,
"seriesName": "SERIA_FACTURII",
"issueDate": "2026-06-15",
"client": { "name": "Company GmbH", "vatCode": "DE123456789", "address": "Musterstrasse 1", "city": "Berlin", "county": "Berlin", "country": "Germania" },
"products": [{ "name": "Servicii consultanta", "code": "SRV001", "quantity": 1, "price": 100, "measuringUnitName": "buc", "taxPercentage": 0, "taxName": "Taxare inversa", "isService": true }]
}
</details>
<details>
<summary><strong>14. Emitere factura - emitent neplatitor de TVA</strong></summary>
Daca firma ta nu este platitoare de TVA, nu este necesar sa completezi campurile legate de TVA pe produse.
{
"companyVatCode": "CIF_FIRMA",
"seriesName": "SERIA_FACTURII",
"issueDate": "2026-06-15",
"client": { "name": "Client SRL", "vatCode": "RO22222222", "isTaxPayer": true, "address": "Str. Lalelei 1", "city": "Sector 1", "county": "Bucuresti", "country": "Romania", "email": "client@example.com" },
"products": [{ "name": "Produs 1", "code": "PRD001", "quantity": 1, "price": 100, "measuringUnitName": "buc" }]
}
</details>
<details>
<summary><strong>15. Emitere factura cu cote TVA diferite</strong></summary>
Adauga produse cu cote TVA diferite ca linii separate cu taxPercentage corespunzator - SmartBill grupeaza automat pe cote in document. La cota 0%, specifica intotdeauna si un taxName existent in cont, de exemplu Taxare inversa, TVA Inclus, SDD sau SFDD - fara el, API-ul alege implicit Taxare inversa, indiferent de regimul fiscal corect.
{
"companyVatCode": "CIF_FIRMA",
"seriesName": "SERIA_FACTURII",
"issueDate": "2026-06-15",
"client": { "name": "Client SRL", "vatCode": "RO22222222", "isTaxPayer": true, "address": "Str. Lalelei 1", "city": "Sector 1", "county": "Bucuresti", "country": "Romania", "email": "client@example.com" },
"products": [
{ "name": "Produs standard", "code": "PRD001", "quantity": 1, "price": 100, "measuringUnitName": "buc", "taxPercentage": 21 },
{ "name": "Aliment", "code": "PRD002", "quantity": 1, "price": 100, "measuringUnitName": "buc", "taxPercentage": 11 },
{ "name": "Produs scutit", "code": "PRD003", "quantity": 1, "price": 100, "measuringUnitName": "buc", "taxPercentage": 0, "taxName": "SDD" }
]
}
</details>
<details>
<summary><strong>16. Emitere factura in limba straina</strong></summary>
Factura se emite implicit in limba romana (RO). Pentru emiterea intr-o alta limba, seteaza parametrul language la nivelul facturii.
Poti folosi o limba predefinita in SmartBill Cloud sau o limba definita de administrator in cont. Valoarea trimisa in language trebuie sa corespunda unei limbi disponibile in cont.
language controleaza limba documentului, dar denumirea produselor si unitatile de masura trebuie traduse explicit pe fiecare produs, prin translatedName si translatedMeasuringUnit.
{
"companyVatCode": "CIF_FIRMA",
"seriesName": "SERIA_FACTURII",
"issueDate": "2026-06-15",
"language": "EN",
"client": { "name": "Client SRL", "vatCode": "RO22222222", "isTaxPayer": true, "address": "Str. Lalelei 1", "city": "Sector 1", "county": "Bucuresti", "country": "Romania", "email": "client@example.com" },
"products": [{
"name": "Produs 1",
"translatedName": "Product 1",
"code": "PRD001",
"quantity": 1,
"price": 100,
"measuringUnitName": "buc",
"translatedMeasuringUnit": "piece",
"taxPercentage": 21
}]
}
</details>
<details>
<summary><strong>17. Emitere factura din proforma</strong></summary>
Creeaza factura pe baza unei proforme existente. Nu e nevoie de client sau produse - se preiau din proforma.
{
"companyVatCode": "CIF_FIRMA",
"issueDate": "2026-06-15",
"seriesName": "SERIA_FACTURII",
"useEstimateDetails": true,
"estimate": {
"seriesName": "SERIA_PROFORMEI",
"number": "0001"
},
"useStock": false
}
</details>
<details>
<summary><strong>18. Emitere factura cu observatii si mentiuni</strong></summary>
Foloseste observations si mentions pentru textele afisate pe factura.
{
"companyVatCode": "CIF_FIRMA",
"seriesName": "SERIA_FACTURII",
"issueDate": "2026-06-15",
"client": { "name": "Client SRL", "vatCode": "RO22222222", "isTaxPayer": true, "address": "Str. Lalelei 1", "city": "Sector 1", "county": "Bucuresti", "country": "Romania", "email": "client@example.com" },
"products": [{ "name": "Produs 1", "code": "PRD001", "quantity": 1, "price": 100, "measuringUnitName": "buc", "taxPercentage": 21 }],
"observations": "Marfa se ridica de la sediu in termen de 5 zile lucratoare",
"mentions": "Plata se face in contul IBAN specificat in contract"
}
</details>Request body
Example request
{
"companyVatCode": "CIF_FIRMA",
"seriesName": "SERIA_FACTURII",
"issueDate": "2026-06-15",
"dueDate": "2026-07-15",
"client": {
"name": "Acme SRL",
"vatCode": "RO22222222",
"regCom": "J40/1234/2020",
"address": "Str. Exemplu 1",
"city": "Sector 1",
"county": "Bucuresti",
"country": "Romania",
"email": "client@example.com"
},
"products": [
{
"name": "Produs 1",
"quantity": 1,
"measuringUnitName": "buc",
"price": 100,
"taxName": "Normala",
"taxPercentage": 21
}
],
"aviz": "AV-1908"
}Response
Raspuns V1. errorText gol inseamna succes; errorText completat inseamna eroare functionala.