---
title: "Emitere NIR"
method: POST
path: "/v3/companies/{cif}/goods-receipts"
tags: ["NIR-uri (Beta)"]
---

# Emitere NIR

`POST /v3/companies/{cif}/goods-receipts`

## Request

- Base URL: `https://ws.smartbill.ro/SBORO/api`
- URL: `https://ws.smartbill.ro/SBORO/api/v3/companies/{cif}/goods-receipts`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/smartbill/apis/smartbill-api/docs/v3/companies/:cif/goods-receipts/post.ts> (a function with typed inputs; its response is checked against the schema)

Emite o Nota de Intrare Receptie (NIR) pe baza documentului primit de la furnizor.

> ⚠️ **Deocamdata NIR-ul se emite doar ca ciorna.** Se trimite `status: "draft"`; orice alta valoare este respinsa. NIR-ul ramane ciorna, fara numar alocat, pana la finalizarea din SmartBill Cloud. Emiterea directa a unui NIR finalizat va fi adaugata ulterior.

> ℹ️ **Deocamdata emiterea NIR-urilor prin API nu consuma din numarul de documente inclus in abonament.** In curand, fiecare NIR emis prin API, inclusiv ciornele, va fi luat in calcul.

**Drepturi necesare**

Drepturile utilizatorului caruia ii apartine cheia API se seteaza din meniul [Utilizatori](https://cloud.smartbill.ro/core/utilizatori/) in SmartBill Cloud, pe una din cele doua variante:

<details>
<summary><strong>Drepturi simple (varianta Simplu)</strong></summary>

<table class="sb-op-table">
  <thead>
    <tr>
      <th>Drept</th>
      <th>Ce acopera</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>Emitere</strong></td>
      <td>Emiterea NIR-ului si adaugarea produselor in nomenclator</td>
    </tr>
  </tbody>
</table>

</details>


<details>
<summary><strong>Drepturi avansate (varianta Detaliat)</strong></summary>

<table class="sb-op-table">
  <thead>
    <tr>
      <th>Sectiune</th>
      <th>Drept</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Acces aplicatii</td>
      <td><strong>API / Magazin online</strong></td>
    </tr>
    <tr>
      <td>Generale</td>
      <td><strong>Are acces la gestiune</strong>, cu bifa pe fiecare gestiune folosita in <code>destination<span class="sb-brk"></span>Warehouse<span class="sb-brk"></span>Id</code></td>
    </tr>
    <tr>
      <td>Generale</td>
      <td><strong>Are acces la documente din trecut</strong> / <strong>din viitor</strong> - <code>issue<span class="sb-brk"></span>Date</code> trebuie sa se incadreze in limitele setate pentru utilizator</td>
    </tr>
    <tr>
      <td>Generale</td>
      <td><strong>Poate schimba preturile de vanzare</strong> - necesar la orice emitere, inclusiv ciorne, indiferent de tipul gestiunii sau de pretul de vanzare trimis</td>
    </tr>
    <tr>
      <td>Documente → Receptii</td>
      <td><strong>Emitere</strong> si <strong>Vizualizare</strong>, plus seria NIR in <strong>Acces la seriile</strong></td>
    </tr>
    <tr>
      <td>Nomenclatoare → Produse</td>
      <td><strong>Adaugare</strong> si <strong>Editare/stergere</strong> - necesare si cand toate produsele exista deja in nomenclator</td>
    </tr>
    <tr>
      <td>Nomenclatoare → Furnizori</td>
      <td><strong>Vizualizare</strong></td>
    </tr>
  </tbody>
</table>

</details>


Firma trebuie sa aiba si modulul de gestiune activ. Fara un drept necesar, fara acces la serie sau la o gestiune ori cu o data in afara limitelor utilizatorului, raspunsul este `403 insufficient_permissions`, iar NIR-ul nu se creeaza; mesajul nu spune care drept lipseste.

**ID-uri necesare**

Pentru emiterea NIR-ului se trimit ID-ul furnizorului, ID-ul gestiunii si ID-urile cotelor de TVA. Toate se obtin din API V3:

| ID | Camp in cerere | Se obtine din |
|---|---|---|
| ID-ul furnizorului | `supplierId` | [Listare furnizori](#api-1/tag/furnizori/GET/v3/companies/{cif}/suppliers) |
| ID-ul gestiunii | `products[].destinationWarehouseId` | [Listare gestiuni](#api-1/tag/gestiuni/GET/v3/companies/{cif}/warehouses) |
| ID-urile cotelor de TVA | `products[].purchaseVatRateId`, `products[].sellingVatRateId` | [Listare cote TVA](#api-1/tag/cote-tva/GET/v3/companies/{cif}/vat-rates) |

**Moneda si cursul de schimb**

- `currency` este moneda documentului furnizorului, de exemplu `EUR`. Daca lipseste, se foloseste `RON`.
- Campurile care se termina in `InDocumentCurrency` sunt in moneda din `currency`.
- Campurile care se termina in `InRON` sunt mereu in lei.
- `exchangeRate` arata cati lei valoreaza 1 unitate din `currency`. Este obligatoriu pentru alte monede decat RON. Pentru RON se omite sau se trimite `1`.

Exemplu: factura furnizorului este in euro, iar cursul este 5 lei pentru 1 euro.

| Se trimite | Rezultat |
|---|---|
| `currency: "EUR"`, `exchangeRate: 5` | NIR-ul este in euro, la cursul de 5 lei |
| `purchasePriceWithoutVatInDocumentCurrency: 100` | 100 EUR. Serverul calculeaza `purchasePriceWithoutVatInRON: 500` (100 x 5) |
| `sellingPriceWithoutVatInRON: 615` | 615 lei. Nu se converteste |

**Valori calculate**

Se trimit preturile unitare fara TVA; raspunsul adauga preturile cu TVA, preturile de achizitie in RON si totalurile NIR-ului:

<table class="sb-op-table sb-op-table--calc">
  <thead>
    <tr>
      <th>Camp din raspuns</th>
      <th>Cum se obtine</th>
      <th>Exemplu (10 buc x 100 EUR, curs 5, TVA 21%)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code>products<span class="sb-brk"></span>[].purchase<span class="sb-brk"></span>Price<span class="sb-brk"></span>Without<span class="sb-brk"></span>Vat<span class="sb-brk"></span>In<span class="sb-brk"></span>RON</code></td>
      <td>pret in <code>currency</code> x <code>exchange<span class="sb-brk"></span>Rate</code></td>
      <td>100 x 5 = <code>500</code></td>
    </tr>
    <tr>
      <td><code>products<span class="sb-brk"></span>[].purchase<span class="sb-brk"></span>Price<span class="sb-brk"></span>With<span class="sb-brk"></span>Vat<span class="sb-brk"></span>In<span class="sb-brk"></span>Document<span class="sb-brk"></span>Currency</code></td>
      <td>pret fara TVA + TVA de achizitie</td>
      <td><code>121</code></td>
    </tr>
    <tr>
      <td><code>products<span class="sb-brk"></span>[].purchase<span class="sb-brk"></span>Price<span class="sb-brk"></span>With<span class="sb-brk"></span>Vat<span class="sb-brk"></span>In<span class="sb-brk"></span>RON</code></td>
      <td>pret cu TVA in RON</td>
      <td><code>605</code></td>
    </tr>
    <tr>
      <td><code>products<span class="sb-brk"></span>[].selling<span class="sb-brk"></span>Price<span class="sb-brk"></span>With<span class="sb-brk"></span>Vat<span class="sb-brk"></span>In<span class="sb-brk"></span>RON</code></td>
      <td>pret de vanzare + TVA de vanzare</td>
      <td>615 -> <code>744<span class="sb-brk"></span>.15</code></td>
    </tr>
    <tr>
      <td><code>total<span class="sb-brk"></span>Without<span class="sb-brk"></span>Vat<span class="sb-brk"></span>Calculated<span class="sb-brk"></span>In<span class="sb-brk"></span>Document<span class="sb-brk"></span>Currency</code></td>
      <td>suma pe produse</td>
      <td>10 x 100 = <code>1000</code></td>
    </tr>
    <tr>
      <td><code>total<span class="sb-brk"></span>Vat<span class="sb-brk"></span>Calculated<span class="sb-brk"></span>In<span class="sb-brk"></span>Document<span class="sb-brk"></span>Currency</code></td>
      <td>TVA pe produse</td>
      <td><code>210</code></td>
    </tr>
    <tr>
      <td><code>total<span class="sb-brk"></span>With<span class="sb-brk"></span>Vat<span class="sb-brk"></span>Calculated<span class="sb-brk"></span>In<span class="sb-brk"></span>Document<span class="sb-brk"></span>Currency</code></td>
      <td>total cu TVA</td>
      <td><code>1210</code></td>
    </tr>
  </tbody>
</table>

**Erori la emiterea NIR-ului**

**Erorile de autentificare si autorizare sunt comune tuturor endpoint-urilor V3.** Pentru cheia API, drepturi, abonament sau formatul corpului JSON, detalii in [Erori API V3](#api-1/description/erori-api-v3). Mai jos sunt doar erorile specifice emiterii NIR-ului.

<details>
<summary><strong>Structura cererii</strong></summary>

<table class="sb-op-table sb-op-table--3">
  <thead>
    <tr>
      <th>Situatie</th>
      <th>Eroare</th>
      <th>Sugestie</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Corpul cererii este <code>null</code></td>
      <td><code>missing_<span class="sb-brk"></span>required_<span class="sb-brk"></span>field</code><span class="sb-err-msg">The document is required.</span></td>
      <td>NIR-ul se trimite ca obiect JSON. Eroarea nu are <code>param</code>.</td>
    </tr>
    <tr>
      <td>Camp repetat in acelasi obiect JSON</td>
      <td><code>duplicate_<span class="sb-brk"></span>field</code><span class="sb-err-msg">Property 'products[0].receivedQuantity' must appear only once.</span></td>
      <td>Fiecare camp trebuie sa apara o singura data. Regula se aplica si campurilor necunoscute, chiar cu valori identice. <code>param</code> arata calea completa, de exemplu <code>acquisition<span class="sb-brk"></span>.number</code>.</td>
    </tr>
    <tr>
      <td>Valoare de alt tip decat cel asteptat</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>type</code><span class="sb-err-msg">Invalid type for property: 'precision'.</span></td>
      <td>Valoarea trebuie sa aiba tipul din schema: de exemplu, un text in loc de numar e respins, iar <code>precision</code> trebuie sa fie numar intreg (<code>2</code>, nu <code>2<span class="sb-brk"></span>.0</code>).</td>
    </tr>
  </tbody>
</table>

</details>

<details>
<summary><strong>Date NIR si serie</strong></summary>

<table class="sb-op-table sb-op-table--3">
  <thead>
    <tr>
      <th>Situatie</th>
      <th>Eroare</th>
      <th>Sugestie</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code>status</code> lipsa</td>
      <td><code>missing_<span class="sb-brk"></span>required_<span class="sb-brk"></span>field</code><span class="sb-err-msg">The document status is required.</span></td>
      <td>Se trimite <code>status: "draft"</code>.</td>
    </tr>
    <tr>
      <td><code>status</code> diferit de <code>draft</code></td>
      <td><code>document_<span class="sb-brk"></span>status_<span class="sb-brk"></span>not_<span class="sb-brk"></span>allowed</code><span class="sb-err-msg">Invalid status. Allowed values: draft.</span></td>
      <td>Deocamdata NIR-ul se emite doar ca ciorna: se trimite <code>draft</code>, iar finalizarea se face din SmartBill Cloud.</td>
    </tr>
    <tr>
      <td><code>series<span class="sb-brk"></span>Name</code> lipsa</td>
      <td><code>missing_<span class="sb-brk"></span>required_<span class="sb-brk"></span>field</code><span class="sb-err-msg">The document series name is required.</span></td>
      <td>Denumirea seriei de NIR este obligatorie.</td>
    </tr>
    <tr>
      <td><code>series<span class="sb-brk"></span>Name</code> cu peste 50 de caractere</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The series name cannot be longer than 50 characters.</span></td>
      <td>Denumirea seriei are maximum 50 de caractere.</td>
    </tr>
    <tr>
      <td>Serie inexistenta sau de alt tip</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The document series is not valid.</span></td>
      <td>Se trimite denumirea completa a unei serii de tip NIR din cont. Literele mari si mici nu conteaza.</td>
    </tr>
    <tr>
      <td><code>issue<span class="sb-brk"></span>Date</code> lipsa</td>
      <td><code>missing_<span class="sb-brk"></span>required_<span class="sb-brk"></span>field</code><span class="sb-err-msg">The document issue date is required.</span></td>
      <td>Data NIR-ului este obligatorie.</td>
    </tr>
    <tr>
      <td>Data in format gresit</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">Invalid date format. Expected format: 'yyyy-MM-dd'.</span></td>
      <td><code>issue<span class="sb-brk"></span>Date</code>, <code>acquisition<span class="sb-brk"></span>.issue<span class="sb-brk"></span>Date</code> si <code>acquisition<span class="sb-brk"></span>.due<span class="sb-brk"></span>Date</code> se trimit in format <code><span class="sb-nobr">yyyy-MM-dd</span></code>, de exemplu <code><span class="sb-nobr">2026-10-01</span></code>.</td>
    </tr>
    <tr>
      <td>Data in afara intervalului 1970-01-01 – 9999-12-31</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The minimum issue date is '1970-01-01'.</span></td>
      <td>Datele acceptate sunt intre <code><span class="sb-nobr">1970-01-01</span></code> si <code><span class="sb-nobr">9999-12-31</span></code>, inclusiv. Pentru limita de sus mesajul este <code>The maximum issue date is '9999-12-31'.</code>; la documentul de achizitie mesajele numesc campul.</td>
    </tr>
    <tr>
      <td><code>precision</code> in afara intervalului</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The precision value must be between 2 and 4.</span></td>
      <td>Valori acceptate: <code>2</code>, <code>3</code> sau <code>4</code>. Daca lipseste, se foloseste <code>2</code>.</td>
    </tr>
    <tr>
      <td>Text prea lung in <code>mentions</code>, <code>observations</code> sau <code>committee</code></td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The mentions cannot be longer than 500 characters.</span></td>
      <td>Maximum 500 de caractere pentru <code>mentions</code> si <code>observations</code>, 200 pentru <code>committee</code>. Se numara si spatiile de la capete. Mesajul numeste campul.</td>
    </tr>
  </tbody>
</table>

</details>

<details>
<summary><strong>Moneda si curs</strong></summary>

<table class="sb-op-table sb-op-table--3">
  <thead>
    <tr>
      <th>Situatie</th>
      <th>Eroare</th>
      <th>Sugestie</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Moneda inexistenta in firma</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The document currency is not valid.</span></td>
      <td>Se trimite simbolul unei monede disponibile firmei, de exemplu <code>RON</code> sau <code>EUR</code>.</td>
    </tr>
    <tr>
      <td>Simbolul monedei are peste 20 de caractere</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The currency symbol cannot be longer than 20 characters.</span></td>
      <td>Se trimite doar simbolul monedei.</td>
    </tr>
    <tr>
      <td>Moneda straina fara curs</td>
      <td><code>missing_<span class="sb-brk"></span>required_<span class="sb-brk"></span>field</code><span class="sb-err-msg">The exchange rate is required for currencies other than RON.</span></td>
      <td>Se trimite <code>exchange<span class="sb-brk"></span>Rate</code>: cati lei valoreaza o unitate din <code>currency</code>.</td>
    </tr>
    <tr>
      <td>RON cu un curs diferit de 1</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The document exchange rate must be 1 or missing when currency is RON.</span></td>
      <td>Pentru RON, <code>exchange<span class="sb-brk"></span>Rate</code> se omite sau se trimite <code>1</code>.</td>
    </tr>
    <tr>
      <td>Curs zero sau negativ</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The exchange rate must be greater than zero.</span></td>
      <td>Cursul trebuie sa fie strict pozitiv.</td>
    </tr>
    <tr>
      <td>Curs cu prea multe cifre</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The exchange rate must have at most 6 decimal digits.</span></td>
      <td>Maximum 8 cifre in partea intreaga si 6 zecimale.</td>
    </tr>
  </tbody>
</table>

</details>

<details>
<summary><strong>Furnizor si document de achizitie</strong></summary>

<table class="sb-op-table sb-op-table--3">
  <thead>
    <tr>
      <th>Situatie</th>
      <th>Eroare</th>
      <th>Sugestie</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code>supplier<span class="sb-brk"></span>Id</code> lipsa</td>
      <td><code>missing_<span class="sb-brk"></span>required_<span class="sb-brk"></span>field</code><span class="sb-err-msg">The supplier ID is required.</span></td>
      <td>Se trimite id-ul furnizorului, din <a href="#api-1/tag/furnizori">Furnizori</a>.</td>
    </tr>
    <tr>
      <td><code>supplier<span class="sb-brk"></span>Id</code> cu prefix sau format gresit</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The 'supplierId' field must start with 'sup_'.</span></td>
      <td>Id-ul se trimite integral, cu prefixul <code>sup_</code>.</td>
    </tr>
    <tr>
      <td>Furnizor inexistent in firma</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The supplier with ID 'sup_01a0ee341fb17d8da8df382a41dcebaf' was not found.</span></td>
      <td>Id-ul trebuie sa apartina firmei din URL. Un id al altei firme nu e gasit.</td>
    </tr>
    <tr>
      <td><code>acquisition</code> fara <code>type</code></td>
      <td><code>missing_<span class="sb-brk"></span>required_<span class="sb-brk"></span>field</code><span class="sb-err-msg">The acquisition document type is required. Allowed values: 'Invoice', 'Delivery note', 'Fiscal receipt', 'Sales booklet'.</span></td>
      <td>Se completeaza <code>acquisition<span class="sb-brk"></span>.type</code> sau se omite tot obiectul <code>acquisition</code>.</td>
    </tr>
    <tr>
      <td><code>acquisition<span class="sb-brk"></span>.type</code> necunoscut</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">Invalid acquisition type. Allowed values: 'Invoice', 'Delivery note', 'Fiscal receipt', 'Sales booklet'.</span></td>
      <td>Se foloseste una din valorile din mesaj. Pentru un NIR fara document de achizitie, <code>acquisition</code> se omite.</td>
    </tr>
    <tr>
      <td><code>acquisition</code> fara <code>issue<span class="sb-brk"></span>Date</code></td>
      <td><code>missing_<span class="sb-brk"></span>required_<span class="sb-brk"></span>field</code><span class="sb-err-msg">The acquisition document issue date is required.</span></td>
      <td>Data documentului furnizorului este obligatorie.</td>
    </tr>
    <tr>
      <td>Scadenta inainte de data documentului</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The acquisition document due date must be on or after the issue date.</span></td>
      <td><code>acquisition<span class="sb-brk"></span>.due<span class="sb-brk"></span>Date</code> trebuie sa fie cel putin egala cu <code>acquisition<span class="sb-brk"></span>.issue<span class="sb-brk"></span>Date</code>.</td>
    </tr>
    <tr>
      <td>TVA-ul declarat mai mare decat totalul cu TVA</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The acquisition document total VAT cannot be greater than total with VAT.</span></td>
      <td>Totalurile trebuie sa corespunda documentului furnizorului. La un document de retur (ambele totaluri negative) se compara valorile absolute.</td>
    </tr>
    <tr>
      <td>Totaluri de achizitie cu prea multe cifre</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The acquisition document total with VAT must have at most 4 decimal digits.</span></td>
      <td>Maximum 15 cifre in partea intreaga si 4 zecimale.</td>
    </tr>
    <tr>
      <td>Text prea lung in <code>acquisition</code></td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The acquisition document number cannot be longer than 50 characters.</span></td>
      <td>Maximum 50 de caractere pentru <code>number</code> si <code>delegate<span class="sb-brk"></span>Vehicle<span class="sb-brk"></span>Registration</code>, 100 pentru <code>delegate<span class="sb-brk"></span>Name</code>. Mesajul numeste campul.</td>
    </tr>
  </tbody>
</table>

</details>

<details>
<summary><strong>Produse si cantitati</strong></summary>

<table class="sb-op-table sb-op-table--3">
  <thead>
    <tr>
      <th>Situatie</th>
      <th>Eroare</th>
      <th>Sugestie</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code>products</code> lipsa sau gol</td>
      <td><code>missing_<span class="sb-brk"></span>required_<span class="sb-brk"></span>field</code><span class="sb-err-msg">The document must contain at least one product.</span></td>
      <td>Este necesar cel putin un produs. Lista goala intoarce acelasi mesaj, cu <code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code>.</td>
    </tr>
    <tr>
      <td>Element <code>null</code> in <code>products</code></td>
      <td><code>missing_<span class="sb-brk"></span>required_<span class="sb-brk"></span>field</code><span class="sb-err-msg">The product details are required.</span></td>
      <td>Elementul <code>null</code> trebuie eliminat. <code>param</code> arata pozitia, de exemplu <code>products<span class="sb-brk"></span>[1]</code>.</td>
    </tr>
    <tr>
      <td>Peste 400 de pozitii</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">You can only add 400 products per document.</span></td>
      <td>Receptia se imparte in mai multe NIR-uri.</td>
    </tr>
    <tr>
      <td><code>name</code> sau <code>measuring<span class="sb-brk"></span>Unit<span class="sb-brk"></span>Name</code> lipsa</td>
      <td><code>missing_<span class="sb-brk"></span>required_<span class="sb-brk"></span>field</code><span class="sb-err-msg">The product name is required.</span></td>
      <td>Denumirea (maximum 5.000 de caractere) si unitatea de masura (maximum 200) sunt obligatorii.</td>
    </tr>
    <tr>
      <td>Cod lipsa cand firma foloseste coduri</td>
      <td><code>product_<span class="sb-brk"></span>code_<span class="sb-brk"></span>required</code><span class="sb-err-msg">The product 'Widget' does not have a specified code.</span></td>
      <td><code>code</code> este obligatoriu la fiecare produs si serviciu.</td>
    </tr>
    <tr>
      <td>Cod cu peste 100 de caractere</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The product code cannot be longer than 100 characters.</span></td>
      <td>Codul are maximum 100 de caractere.</td>
    </tr>
    <tr>
      <td>Cantitate lipsa</td>
      <td><code>missing_<span class="sb-brk"></span>required_<span class="sb-brk"></span>field</code><span class="sb-err-msg">The product received quantity is required.</span></td>
      <td>Sunt obligatorii atat <code>document<span class="sb-brk"></span>Quantity</code>, cat si <code>received<span class="sb-brk"></span>Quantity</code>.</td>
    </tr>
    <tr>
      <td>Cantitate zero</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The received quantity cannot be zero.</span></td>
      <td>Cantitatile trebuie sa fie diferite de zero. Pentru retur se folosesc valori negative.</td>
    </tr>
    <tr>
      <td>Cantitate cu prea multe cifre</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The received quantity must have at most 4 decimal digits.</span></td>
      <td>Maximum 15 cifre in partea intreaga si 4 zecimale.</td>
    </tr>
    <tr>
      <td>Unitate de masura fara factor de conversie</td>
      <td><code>product_<span class="sb-brk"></span>measuring_<span class="sb-brk"></span>unit_<span class="sb-brk"></span>conversion_<span class="sb-brk"></span>missing</code><span class="sb-err-msg">Measuring unit 'set' for product 'Widget' does not have a conversion factor. ...</span></td>
      <td>Se foloseste unitatea configurata pentru produs, scrisa exact (case-sensitive), sau se defineste conversia in Nomenclatoare &gt; Produse.</td>
    </tr>
    <tr>
      <td>Conversia face cantitatea zero</td>
      <td><code>product_<span class="sb-brk"></span>converted_<span class="sb-brk"></span>measuring_<span class="sb-brk"></span>unit_<span class="sb-brk"></span>quantity_<span class="sb-brk"></span>rounds_<span class="sb-brk"></span>to_<span class="sb-brk"></span>zero</code><span class="sb-err-msg">For product 'Widget', rounding the quantity expressed in measuring unit 'set' to 4 decimal places results in an invalid quantity of zero ...</span></td>
      <td>Factorii de conversie ai unitatii de masura trebuie verificati.</td>
    </tr>
    <tr>
      <td>Produsul nu poate fi identificat</td>
      <td><code>product_<span class="sb-brk"></span>with_<span class="sb-brk"></span>name_<span class="sb-brk"></span>not_<span class="sb-brk"></span>found</code><span class="sb-err-msg">Product 'Widget' was not found.</span></td>
      <td><code>name</code>, <code>code</code> si <code>is<span class="sb-brk"></span>Service</code> trebuie sa corespunda nomenclatorului.</td>
    </tr>
    <tr>
      <td>Produsul corespunde mai multor inregistrari</td>
      <td><code>duplicate_<span class="sb-brk"></span>stock_<span class="sb-brk"></span>product</code><span class="sb-err-msg">Product 'Widget' has multiple stock entries on the document.</span></td>
      <td>Nomenclatorul de produse contine dubluri care trebuie eliminate.</td>
    </tr>
  </tbody>
</table>

</details>

<details>
<summary><strong>Preturi si TVA</strong></summary>

<table class="sb-op-table sb-op-table--3">
  <thead>
    <tr>
      <th>Situatie</th>
      <th>Eroare</th>
      <th>Sugestie</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Pret de achizitie lipsa</td>
      <td><code>missing_<span class="sb-brk"></span>required_<span class="sb-brk"></span>field</code><span class="sb-err-msg">The product purchase price is required.</span></td>
      <td><code>purchase<span class="sb-brk"></span>Price<span class="sb-brk"></span>Without<span class="sb-brk"></span>Vat<span class="sb-brk"></span>In<span class="sb-brk"></span>Document<span class="sb-brk"></span>Currency</code> este obligatoriu la fiecare pozitie.</td>
    </tr>
    <tr>
      <td>Pret de achizitie negativ</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The product purchase price must be greater than or equal to zero.</span></td>
      <td>Pretul ramane pozitiv si la retur (linie cu cantitate negativa); semnul se da prin cantitate.</td>
    </tr>
    <tr>
      <td>Pret cu mai multe zecimale decat <code>precision</code></td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">Price cannot have more than 2 decimal places for this document.</span></td>
      <td>Pretul se rotunjeste sau se mareste <code>precision</code>. <code>param</code> arata pozitia si campul.</td>
    </tr>
    <tr>
      <td>Pret de vanzare lipsa pe gestiune en detail</td>
      <td><code>missing_<span class="sb-brk"></span>required_<span class="sb-brk"></span>field</code><span class="sb-err-msg">The selling price must be provided for a retail destination warehouse.</span></td>
      <td><code>selling<span class="sb-brk"></span>Price<span class="sb-brk"></span>Without<span class="sb-brk"></span>Vat<span class="sb-brk"></span>In<span class="sb-brk"></span>RON</code> este obligatoriu pentru produsele receptionate in gestiuni en detail. Serviciile si liniile cu cantitate negativa (retur) il pot omite.</td>
    </tr>
    <tr>
      <td>Pret de vanzare negativ</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The product selling price must be greater than or equal to zero.</span></td>
      <td>Pretul de vanzare trebuie sa fie pozitiv sau zero. Regula se aplica serviciilor (inclusiv la retur) si produselor cu cantitate pozitiva, pe orice tip de gestiune.</td>
    </tr>
    <tr>
      <td>Pret de vanzare sub pretul de achizitie (firma platitoare de TVA)</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The selling price without VAT must be greater than or equal to the purchase price without VAT.</span></td>
      <td>Pe gestiune en detail, pretul de vanzare fara TVA al unui produs trebuie sa fie cel putin pretul de achizitie fara TVA convertit in RON. Nu se aplica serviciilor.</td>
    </tr>
    <tr>
      <td>Pret de vanzare sub pretul de achizitie (firma neplatitoare de TVA)</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The selling price must be greater than or equal to the purchase price with VAT.</span></td>
      <td>Pe gestiune en detail, pretul de vanzare al unui produs trebuie sa fie cel putin pretul de achizitie cu TVA-ul furnizorului, convertit in RON. Nu se aplica serviciilor.</td>
    </tr>
    <tr>
      <td>Preturi de vanzare diferite pentru acelasi produs</td>
      <td><code>product_<span class="sb-brk"></span>selling_<span class="sb-brk"></span>price_<span class="sb-brk"></span>inconsistent</code><span class="sb-err-msg">Product 'Widget' cannot have multiple selling prices in warehouse 'Main' on the same document.</span></td>
      <td>Pozitiile aceluiasi produs din aceeasi gestiune en detail trebuie sa aiba acelasi pret de vanzare.</td>
    </tr>
    <tr>
      <td>Cote TVA de vanzare diferite pentru acelasi produs</td>
      <td><code>product_<span class="sb-brk"></span>vat_<span class="sb-brk"></span>rate_<span class="sb-brk"></span>inconsistent</code><span class="sb-err-msg">Product 'Widget' cannot have multiple VAT rates in warehouse 'Main' on the same document.</span></td>
      <td>Se foloseste aceeasi cota de vanzare pe pozitiile aceluiasi produs din aceeasi gestiune en detail.</td>
    </tr>
    <tr>
      <td>Cota de achizitie lipsa (furnizor platitor de TVA)</td>
      <td><code>missing_<span class="sb-brk"></span>required_<span class="sb-brk"></span>field</code><span class="sb-err-msg">The purchase VAT rate is required.</span></td>
      <td>Se trimite <code>purchase<span class="sb-brk"></span>Vat<span class="sb-brk"></span>Rate<span class="sb-brk"></span>Id</code>, din <a href="#api-1/tag/cote-tva">Cote TVA</a>.</td>
    </tr>
    <tr>
      <td>Cota de vanzare lipsa (firma platitoare de TVA)</td>
      <td><code>missing_<span class="sb-brk"></span>required_<span class="sb-brk"></span>field</code><span class="sb-err-msg">The selling VAT rate is required.</span></td>
      <td><code>selling<span class="sb-brk"></span>Vat<span class="sb-brk"></span>Rate<span class="sb-brk"></span>Id</code> este obligatoriu pe fiecare pozitie, inclusiv pe gestiuni en gros, servicii si linii cu cantitate negativa.</td>
    </tr>
    <tr>
      <td>Cota cu taxare inversa peste 0% la vanzare, pe gestiune global-valorica</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The selling VAT rate cannot be a reverse-charge rate with the reverse charge percentage greater than 0.</span></td>
      <td>Pe gestiunile global-valorice, la vanzare se foloseste o cota fara taxare inversa sau cota cu taxare inversa care are <code>reverse<span class="sb-brk"></span>Charge<span class="sb-brk"></span>Percentage</code> 0. Cotele cu taxare inversa de 5%, 11%, 21% etc. se folosesc doar la achizitie.</td>
    </tr>
    <tr>
      <td>Cota TVA inexistenta in firma</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The purchase VAT rate could not be found.</span></td>
      <td>Id-ul trebuie sa existe in <a href="#api-1/tag/cote-tva">Cote TVA</a>. Pentru cota de vanzare mesajul este <code>The selling VAT rate could not be found<span class="sb-brk"></span>.</code></td>
    </tr>
    <tr>
      <td>Id de cota cu prefix gresit</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The 'products[0].purchaseVatRateId' field must start with 'vat_'.</span></td>
      <td>Id-ul se trimite integral, cu prefixul <code>vat_</code>.</td>
    </tr>
  </tbody>
</table>

</details>

<details>
<summary><strong>Gestiuni si stoc</strong></summary>

<table class="sb-op-table sb-op-table--3">
  <thead>
    <tr>
      <th>Situatie</th>
      <th>Eroare</th>
      <th>Sugestie</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code>destination<span class="sb-brk"></span>Warehouse<span class="sb-brk"></span>Id</code> lipsa</td>
      <td><code>missing_<span class="sb-brk"></span>required_<span class="sb-brk"></span>field</code><span class="sb-err-msg">The product destination warehouse ID is required.</span></td>
      <td>Gestiunea este obligatorie pe fiecare pozitie, inclusiv la servicii.</td>
    </tr>
    <tr>
      <td>Id de gestiune cu prefix gresit</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The 'products[0].destinationWarehouseId' field must start with 'ware_'.</span></td>
      <td>Id-ul se trimite integral, cu prefixul <code>ware_</code>.</td>
    </tr>
    <tr>
      <td>Gestiune inexistenta in firma</td>
      <td><code>invalid_<span class="sb-brk"></span>field_<span class="sb-brk"></span>value</code><span class="sb-err-msg">The warehouse with ID 'ware_01a0ee341fb17d8da8df382a41dcebaf' was not found.</span></td>
      <td>Id-ul trebuie sa existe in <a href="#api-1/tag/gestiuni">Gestiuni</a>.</td>
    </tr>
    <tr>
      <td>Data inaintea importului de stoc initial</td>
      <td><code>document_<span class="sb-brk"></span>date_<span class="sb-brk"></span>before_<span class="sb-brk"></span>initial_<span class="sb-brk"></span>stock</code><span class="sb-err-msg">The document date cannot precede the initial stock import. Initial stock was imported into warehouse 'Main' on 2026-09-01.</span></td>
      <td><code>issue<span class="sb-brk"></span>Date</code> trebuie sa fie ulterioara importului de stoc initial in gestiunile folosite.</td>
    </tr>
    <tr>
      <td>Linie cu cantitate negativa (retur) pe gestiune en gros cu CMP, fara cost mediu ponderat</td>
      <td><code>reversal_<span class="sb-brk"></span>weighted_<span class="sb-brk"></span>average_<span class="sb-brk"></span>cost_<span class="sb-brk"></span>not_<span class="sb-brk"></span>found</code><span class="sb-err-msg">Product 'Widget' has no weighted average cost in warehouse 'Main' on 2026-09-03, so it cannot be reversed.</span></td>
      <td>Produsul trebuie sa aiba o intrare pe un document finalizat si neanulat in acea gestiune, cel tarziu la data NIR-ului.</td>
    </tr>
    <tr>
      <td>Fara metoda de evaluare a stocului la data NIR-ului</td>
      <td><code>stock_<span class="sb-brk"></span>mode_<span class="sb-brk"></span>not_<span class="sb-brk"></span>found</code><span class="sb-err-msg">The company does not have a stock valuation method configured for the document date.</span></td>
      <td>Configurarea gestiunii firmei din SmartBill Cloud trebuie verificata.</td>
    </tr>
  </tbody>
</table>

</details>

- --

## Tipuri de emitere

<details>
<summary><strong>1. Emitere NIR pe gestiune global-valorica</strong></summary>

NIR pe o gestiune global-valorica, care apare cu `type: "en detail"` in [Listare gestiuni](#api-1/tag/gestiuni/GET/v3/companies/{cif}/warehouses). Pe acest tip de gestiune `sellingPriceWithoutVatInRON` este obligatoriu si trebuie sa fie cel putin pretul de achizitie convertit in RON. Raspunsul calculeaza si pretul de vanzare cu TVA.

```json
{
  "status": "draft",
  "seriesName": "NIR",
  "issueDate": "2026-10-01",
  "currency": "RON",
  "supplierId": "sup_019f0000000070008000000000000001",
  "acquisition": {
    "type": "Invoice",
    "number": "FURN1024",
    "issueDate": "2026-10-01",
    "dueDate": "2026-10-31",
    "totalWithVatInDocumentCurrency": 1210,
    "totalVatInDocumentCurrency": 210
  },
  "products": [
    {
      "name": "Produs exemplu",
      "code": "PROD-001",
      "measuringUnitName": "buc",
      "documentQuantity": 10,
      "receivedQuantity": 10,
      "purchasePriceWithoutVatInDocumentCurrency": 100,
      "sellingPriceWithoutVatInRON": 150,
      "isService": false,
      "destinationWarehouseId": "ware_019f0000000070008000000000000002",
      "purchaseVatRateId": "vat_019f0000000070008000000000000003",
      "sellingVatRateId": "vat_019f0000000070008000000000000003"
    }
  ]
}
```

</details>

<details>
<summary><strong>2. Emitere NIR pe gestiune cantitativ-valorica</strong></summary>

Aceeasi factura, pe o gestiune cantitativ-valorica, care apare cu `type: "en gros"` in [Listare gestiuni](#api-1/tag/gestiuni/GET/v3/companies/{cif}/warehouses). Pretul de vanzare nu se trimite: pe acest tip de gestiune nu se foloseste, iar in raspuns ambele preturi de vanzare sunt `null`. `sellingVatRateId` ramane obligatoriu daca firma este platitoare de TVA.

```json
{
  "status": "draft",
  "seriesName": "NIR",
  "issueDate": "2026-10-01",
  "currency": "RON",
  "supplierId": "sup_019f0000000070008000000000000001",
  "acquisition": {
    "type": "Invoice",
    "number": "FURN1024",
    "issueDate": "2026-10-01",
    "dueDate": "2026-10-31",
    "totalWithVatInDocumentCurrency": 1210,
    "totalVatInDocumentCurrency": 210
  },
  "products": [
    {
      "name": "Produs exemplu",
      "code": "PROD-001",
      "measuringUnitName": "buc",
      "documentQuantity": 10,
      "receivedQuantity": 10,
      "purchasePriceWithoutVatInDocumentCurrency": 100,
      "isService": false,
      "destinationWarehouseId": "ware_019f0000000070008000000000000005",
      "purchaseVatRateId": "vat_019f0000000070008000000000000003",
      "sellingVatRateId": "vat_019f0000000070008000000000000003"
    }
  ]
}
```

</details>

<details>
<summary><strong>3. Emitere NIR in valuta</strong></summary>

NIR pentru o factura de furnizor in EUR, pe o gestiune global-valorica. Pretul de achizitie se trimite in `currency`, pretul de vanzare in RON, iar `exchangeRate` face conversia. Exemplul completeaza si delegatul, mentiunile si observatiile.

```json
{
  "status": "draft",
  "seriesName": "NIR",
  "issueDate": "2026-09-16",
  "currency": "EUR",
  "precision": 2,
  "exchangeRate": 5,
  "mentions": "Receptie conform facturii furnizorului",
  "observations": "Marfa verificata la descarcare",
  "committee": "Comisia de receptie",
  "supplierId": "sup_01a0d9032d8c782d91ddf1d151aec44c",
  "acquisition": {
    "type": "Invoice",
    "number": "FACT123",
    "issueDate": "2026-09-18",
    "dueDate": "2026-10-18",
    "totalWithVatInDocumentCurrency": 1210,
    "totalVatInDocumentCurrency": 210,
    "delegateName": "Ion Popescu",
    "delegateVehicleRegistration": "B-123-ABC"
  },
  "products": [
    {
      "name": "Example product",
      "code": "PROD-001",
      "measuringUnitName": "buc",
      "documentQuantity": 10,
      "receivedQuantity": 10,
      "purchasePriceWithoutVatInDocumentCurrency": 100,
      "sellingPriceWithoutVatInRON": 615,
      "isService": false,
      "destinationWarehouseId": "ware_01a0d9042da672d58723cba68ab04d8b",
      "purchaseVatRateId": "vat_01a0af2cdabd7c39a0750098e11b9960",
      "sellingVatRateId": "vat_01a0af2cdabd7c39a0750098e11b9960"
    }
  ]
}
```

</details>

## Path parameters

- `cif` string, required

## Request body

- GoodsReceiptRequestV3
  - `status` 'draft', required: Starea NIR-ului emis. Deocamdata se accepta doar `draft`; orice alta valoare este respinsa.
  - `seriesName` string, required: Denumirea completa a unei serii de tip NIR din SmartBill. Literele mari si mici nu conteaza.
  - `issueDate` string, date, required: Data NIR-ului, in format `YYYY-MM-DD`, intre `1970-01-01` si `9999-12-31`.
  - `currency` string: Moneda documentului de achizitie. Campurile `...InDocumentCurrency` sunt in aceasta moneda.
  - `precision` 2 | 3 | 4: Numarul de zecimale folosit pentru preturi. Se trimite ca numar intreg - `2`, nu `2.0`.
  - `exchangeRate` number: Cati lei valoreaza o unitate din `currency` (`5` = 1 EUR = 5 RON). Obligatoriu pentru alte monede decat RON. Pentru RON se poate omite sau se trimite `1`.
  - `mentions` string: Mentiuni afisate pe document.
  - `observations` string: Observatii vizibile doar in contul SmartBill, nu apar pe document.
  - `committee` string: Comisia de receptie.
  - `supplierId` string, required: ID-ul furnizorului, din [Furnizori](#api-1/tag/furnizori).
  - `acquisition` GoodsReceiptAcquisitionV3: Documentul furnizorului pe baza caruia se face receptia.
    - `type` 'Invoice' | 'Delivery note' | 'Fiscal receipt' | 'Sales booklet', required: Tipul documentului furnizorului - `Invoice` (factura), `Delivery note` (aviz), `Fiscal receipt` (bon fiscal) sau `Sales booklet` (carnet de comercializare). La emitere, literele mari si mici nu conteaza; in raspuns apare in forma din lista.
    - `number` string: Numarul documentului furnizorului; `""` daca nu e completat
    - `issueDate` string, date, required: Data documentului furnizorului, intre `1970-01-01` si `9999-12-31`
    - `dueDate` string, date: Data scadentei, cel putin egala cu `issueDate` si cel mult `9999-12-31`; `""` daca nu e completata
    - `totalWithVatInDocumentCurrency` number: Totalul cu TVA declarat de furnizor, in moneda NIR-ului, cu maximum 4 zecimale. Nu intra in calculul NIR-ului. `0` daca nu e completat.
    - `totalVatInDocumentCurrency` number: TVA-ul total declarat de furnizor, in moneda NIR-ului, cu maximum 4 zecimale. Nu intra in calculul NIR-ului. `0` daca nu e completat.
    - `delegateName` string: Numele delegatului
    - `delegateVehicleRegistration` string: Numarul de inmatriculare al vehiculului delegatului
  - `products` GoodsReceiptProductRequestV3[], required: Liniile NIR-ului.
    - `name` string, required
    - `code` string: Cod produs. Obligatoriu daca firma foloseste coduri de produs.
    - `measuringUnitName` string, required: Unitatea de masura
    - `documentQuantity` number, required: Cantitatea de pe documentul furnizorului
    - `receivedQuantity` number, required: Cantitatea efectiv receptionata
    - `purchasePriceWithoutVatInDocumentCurrency` number, required: Pretul unitar de achizitie fara TVA, in `currency`.
    - `sellingPriceWithoutVatInRON` number: Pretul unitar de vanzare fara TVA, in RON. Obligatoriu pe gestiunile global-valorice (en detail), unde trebuie sa fie cel putin pretul de achizitie convertit in RON. Ignorat pe gestiunile cantitativ-valorice (en gros) si pe liniile de produse cu cantitate negativa (retur). La servicii este optional.
    - `isService` boolean: Este serviciu
    - `destinationWarehouseId` string, required: ID-ul gestiunii in care intra marfa, din [Gestiuni](#api-1/tag/gestiuni).
    - `purchaseVatRateId` string: ID-ul cotei TVA de achizitie, din [Cote TVA](#api-1/tag/cote-tva). Obligatoriu daca furnizorul este platitor de TVA.
    - `sellingVatRateId` string: ID-ul cotei TVA de vanzare, din [Cote TVA](#api-1/tag/cote-tva). Obligatoriu daca firma este platitoare de TVA. Pe gestiunile global-valorice nu se poate folosi o cota cu taxare inversa care are `reverseChargePercentage` mai mare decat 0.

## Response `201`

NIR creat ca ciorna. `number` este gol pana la finalizarea NIR-ului.

- GoodsReceiptV3
  - `id` string: ID unic NIR
  - `status` 'active' | 'draft' | 'annulled': Starea NIR-ului
  - `seriesName` string: Denumirea seriei NIR
  - `number` string: Numarul NIR-ului. Gol (`""`) la o ciorna nenumerotata. Trebuie tratat ca text, nu ca numar.
  - `issueDate` string, date: Data NIR-ului
  - `currency` string: Moneda documentului
  - `precision` integer: Precizia documentului pentru preturi si totaluri, in zecimale
  - `exchangeRate` number: Cursul in RON pentru o unitate din moneda documentului, cu maximum 6 zecimale
  - `mentions` string: Mentiuni; `""` daca nu sunt completate
  - `observations` string: Observatii; `""` daca nu sunt completate
  - `committee` string: Comisia de receptie; `""` daca nu e completata
  - `totalWithoutVatCalculatedInDocumentCurrency` number: Total calculat fara TVA, in moneda documentului
  - `totalWithVatCalculatedInDocumentCurrency` number: Total calculat cu TVA, in moneda documentului
  - `totalVatCalculatedInDocumentCurrency` number: TVA total calculat, in moneda documentului
  - `supplier` GoodsReceiptSupplierV3: Datele furnizorului salvate pe NIR. Aceleasi campuri ca in [Furnizori](#api-1/tag/furnizori), fara `id`.
    - `name` string
    - `vatCode` string: CIF furnizor
    - `regCom` string
    - `code` string: Cod intern furnizor
    - `address` string
    - `city` string
    - `county` string
    - `country` string
    - `bank` string
    - `iban` string
    - `email` string, email
    - `contact` string
    - `phone` string
    - `isVatPayer` boolean: Platitor TVA
  - `acquisition` GoodsReceiptAcquisitionV3: Documentul furnizorului pe baza caruia se face receptia.
    - `type` 'Invoice' | 'Delivery note' | 'Fiscal receipt' | 'Sales booklet', required: Tipul documentului furnizorului - `Invoice` (factura), `Delivery note` (aviz), `Fiscal receipt` (bon fiscal) sau `Sales booklet` (carnet de comercializare). La emitere, literele mari si mici nu conteaza; in raspuns apare in forma din lista.
    - `number` string: Numarul documentului furnizorului; `""` daca nu e completat
    - `issueDate` string, date, required: Data documentului furnizorului, intre `1970-01-01` si `9999-12-31`
    - `dueDate` string, date: Data scadentei, cel putin egala cu `issueDate` si cel mult `9999-12-31`; `""` daca nu e completata
    - `totalWithVatInDocumentCurrency` number: Totalul cu TVA declarat de furnizor, in moneda NIR-ului, cu maximum 4 zecimale. Nu intra in calculul NIR-ului. `0` daca nu e completat.
    - `totalVatInDocumentCurrency` number: TVA-ul total declarat de furnizor, in moneda NIR-ului, cu maximum 4 zecimale. Nu intra in calculul NIR-ului. `0` daca nu e completat.
    - `delegateName` string: Numele delegatului
    - `delegateVehicleRegistration` string: Numarul de inmatriculare al vehiculului delegatului
  - `products` GoodsReceiptProductV3[]: Pozitiile de produse si servicii, in ordinea din document. Poate fi goala. Liniile de cheltuieli si discount nu apar aici.
    - `name` string
    - `code` string: Cod produs; poate fi `""`
    - `measuringUnitName` string: Unitatea de masura
    - `documentQuantity` number, nullable: Cantitatea de pe documentul furnizorului, cu maximum 4 zecimale
    - `receivedQuantity` number, nullable: Cantitatea receptionata, cu maximum 4 zecimale. Poate fi negativa pe o linie de retur.
    - `purchasePriceWithoutVatInDocumentCurrency` number, nullable: Pret unitar de achizitie fara TVA, in moneda NIR-ului
    - `purchasePriceWithVatInDocumentCurrency` number, nullable: Pret unitar de achizitie cu TVA, in moneda NIR-ului
    - `purchasePriceWithoutVatInRON` number, nullable: Pret unitar de achizitie fara TVA, in RON. Poate avea mai multe zecimale decat `precision`.
    - `purchasePriceWithVatInRON` number, nullable: Pret unitar de achizitie cu TVA, in RON. Poate avea mai multe zecimale decat `precision`.
    - `sellingPriceWithoutVatInRON` number, nullable: Pret unitar de vanzare fara TVA, in RON. `null` daca gestiunea nu este en detail.
    - `sellingPriceWithVatInRON` number, nullable: Pret unitar de vanzare cu TVA, in RON. `null` daca gestiunea nu este en detail.
    - `isService` boolean: Este serviciu
    - `destinationWarehouseId` string: ID-ul gestiunii in care a intrat marfa; `""` cand nu exista o gestiune asociata
    - `purchaseVatRateId` string: ID-ul cotei TVA de achizitie; `""` cand nu exista o cota asociata
    - `sellingVatRateId` string: ID-ul cotei TVA de vanzare; `""` cand nu exista o cota asociata

## Other responses

- `400`: Eroare de validare. Exemplele de mai jos arata doar forma raspunsului; lista completa de erori si rezolvarea lor sunt in tabelele din descrierea endpoint-ului (sectiunea "Erori la emiterea NIR-ului").
- `401`: Autentificare esuata
- `403`: Permisiuni insuficiente
- `405`: Metoda HTTP nepermisa
- `406`: Format neacceptat (Accept header invalid)

## Changes

- **2026-10-10** `b79a53e24b9d`: 1 warning, 1 info
  - removed the optional property `supplierId` from the response with the `201` status
  - added the optional property `supplier` to the response with the `201` status
- **2026-10-07** `c4fae8d32eea`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/smartbill/apis/smartbill-api/changes/v3/companies/:cif/goods-receipts/post.md)

---

[API](https://skmtc.dev/smartbill/apis/smartbill-api.md) - [All operations](https://skmtc.dev/smartbill/apis/smartbill-api/llms.txt) - [OpenAPI document](https://skmtc.dev/smartbill/apis/smartbill-api/revisions/b79a53e24b9d?raw)
