---
title: "Emitere factura storno"
method: POST
path: "/invoice/reverse"
tags: ["Facturi"]
---

# Emitere factura storno

`POST /invoice/reverse`

Storneaza o factura existenta. Trimite seria si numarul facturii originale; `issueDate` este optional.

**Ai primit o eroare la emiterea facturii storno?**

**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](#api-1/description/erori-api-v1). Mai jos gasesti doar erorile specifice stornarii.

<details>
<summary><strong>Erori la emiterea facturii storno</strong></summary>

<table>
  <thead>
    <tr>
      <th>Situatie</th>
      <th>Eroare</th>
      <th>Sugestie</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code>number</code> lipseste</td>
      <td><code>Numarul facturii trebuie specificat in parametrul 'number'!</code></td>
      <td>Trimite `number` cu numarul facturii de stornat, exact ca in cont, de exemplu `3738`.</td>
    </tr>
    <tr>
      <td><code>seriesName</code> lipseste</td>
      <td><code>Seria facturii trebuie specificata in parametrul 'seriesname'!</code></td>
      <td>Trimite `seriesName` cu seria facturii de stornat, de exemplu `fac`.</td>
    </tr>
    <tr>
      <td>Factura de stornat nu exista</td>
      <td><code>Factura cu seria si numarul fac99999999 nu a fost gasita!</code></td>
      <td>Verifica `seriesName` si `number`. Combinatia serie plus numar trebuie sa existe in cont.</td>
    </tr>
    <tr>
      <td>Factura a fost deja stornata</td>
      <td><code>Factura este deja stornata.</code></td>
      <td>O factura poate fi stornata o singura data. Verifica daca exista deja o factura storno pentru acest document.</td>
    </tr>
    <tr>
      <td>Factura de stornat este anulata</td>
      <td><code>Factura fac3830 este anulata.</code></td>
      <td>Nu poti storna o factura anulata. Restaureaz-o intai (daca chiar vrei sa o stornezi) sau storneaza o factura activa.</td>
    </tr>
    <tr>
      <td>Incerci sa stornezi o factura care e ea insasi storno</td>
      <td><code>Factura fac3739 este de tip storno. Nu se poate storna.</code></td>
      <td>Nu se poate storna un document de tip storno. Trimite in `number` factura originala, nu factura storno.</td>
    </tr>
    <tr>
      <td><code>issueDate</code> anterioara datei facturii originale</td>
      <td><code>Data emiterii facturii storno nu poate fi anterioara datei emiterii facturii stornate.</code></td>
      <td>Trimite `issueDate` egala sau ulterioara datei facturii stornate.</td>
    </tr>
    <tr>
      <td><code>issueDate</code> in format gresit</td>
      <td><code>Could not map property: issueDate.</code></td>
      <td>Trimite `issueDate` in format `yyyy-MM-dd`, de exemplu `2026-07-15`.</td>
    </tr>
  </tbody>
</table>

</details>

- --

## Tipuri de stornare

<details>
<summary><strong>1. Storno simplu</strong></summary>

Stornarea unei facturi existente. Storno-ul preia automat seria facturii originale si primeste data curenta.

```json
{
  "companyVatCode": "CIF_FIRMA",
  "seriesName": "SERIA_FACTURII",
  "number": "3738"
}
```

</details>

<details>
<summary><strong>2. Storno cu data specifica</strong></summary>

Seteaza `issueDate` cand vrei ca factura storno sa aiba o data diferita de cea curenta. Data nu poate fi anterioara datei facturii originale.

```json
{
  "companyVatCode": "CIF_FIRMA",
  "seriesName": "SERIA_FACTURII",
  "number": "3738",
  "issueDate": "2026-07-15"
}
```

</details>

## Request body

- object
  - `companyVatCode` string, required — CIF-ul firmei tale.
  - `seriesName` string, required — Seria facturii originale.
  - `number` string, required — Numarul facturii originale.
  - `issueDate` string, date — Data facturii storno. Daca lipseste, se foloseste data curenta.

## Response `200`

Factura storno creata cu succes

- InvoiceResponse
  - `errorText` string — Mesaj de eroare (gol la succes)
  - `message` string
  - `number` string — Numarul facturii
  - `series` string — Seria facturii
  - `url` string — URL de plata (daca a fost generat)
  - `documentUrl` string — URL de editare in SmartBill Cloud
  - `documentId` string — ID intern document
  - `documentViewUrl` string — URL public de vizualizare

## Other responses

- `400` — Operatiune invalida - factura negasita sau storno imposibil
- `401` — Autentificare esuata
- `500` — Eroare interna de server. Poate aparea cand numele campurilor sunt trimise cu casing gresit (ex. `Price` in loc de `price`). Raspunsul este `text/html`, nu JSON - nu poate fi parsat programatic.

---

[API](https://skmtc.dev/smartbill/apis/smartbill-api.md) · [All operations](https://skmtc.dev/smartbill/apis/smartbill-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/smartbill/smartbill-api/revisions/29940a27d41c/schema)
