---
title: "Anulo një faturë sipas id"
operation_id: "api.v1.invoice.cancel"
method: POST
path: "/api/v1/invoice/cancel/{id}"
group: "Faturat"
api_version: "v1"
authenticated: true
canonical: "https://fature.al/api-reference/endpoints/api-v1-invoice-cancel.html"
---

# Anulo një faturë sipas id

Pjesë e dokumentacionit [fature.al API](/api-reference/index.html).

## POST /api/v1/invoice/cancel/{id}

Anulon faturën duke lëshuar te CIS-i një dokument korrigjues, i cili merr numër të ri rendor.
Origjinali shënohet i anuluar vetëm kur anulimet e mbulojnë të gjithin.

### I plotë ose i pjesshëm

| Body | Çfarë ndodh |
| --- | --- |
| Bosh | Anulohet e gjithë fatura, sido që të jetë lloji i saj |
| Me `lines` | Anulohet vetëm pjesa e dërguar. **Vetëm për faturat cash** |

### Rregullat e anulimit të pjesshëm

- Çdo rresht duhet të ekzistojë në faturën origjinale me të njëjtin `product_code` dhe
  `product_name`.
- Sasia mund vetëm të ulet ose të mbetet e njëjtë; produktet që nuk i dërgoni mbeten të shitura.
- Kur i njëjti produkt është faturuar në dy rreshta me çmime të ndryshme, shtoni `price` për
  të zgjedhur rreshtin.
- Një faturë me zbritje mbi të gjithë faturën anulohet vetëm e plotë: zbritja është shpërndarë
  mbi të gjitha normat e TVSH-së, dhe një pjesë e rreshtave nuk e mban dot pjesën e vet pa e
  gabuar TVSH-në.

Përgjigja është dokumenti korrigjues, me `iic` dhe `fic` të vetat. Kur CIS-i nuk arrihet,
anulimi ruhet me `fic: null` dhe fiskalizohet vetë më vonë. Anulimet kanë kufirin e tyre të
kërkesave: 30 në minutë dhe 600 në orë për token.

URL-ja e plotë: `https://fature.al/api/v1/invoice/cancel/{id}`

Versioni i API-t: `v1`.

Identifikimi: i detyrueshëm (bearer token, plus the `X-Client-Id` and `X-Client-Secret` headers).

### Parametrat në path

| Fusha | Tipi | E detyrueshme | Përshkrimi |
| --- | --- | --- | --- |
| `id` | integer | po | Id-ja e faturës në fature.al. |

### Fushat e body-t

| Fusha | Tipi | E detyrueshme | Përshkrimi |
| --- | --- | --- | --- |
| `lines` | array | jo | Rreshtat që anulohen. Pa të anulohet e gjithë fatura; me të anulohet vetëm pjesa e dërguar, e mundur vetëm për faturat cash. Çdo rresht duhet të ekzistojë në faturën origjinale me të njëjtin `product_code` dhe `product_name`, dhe sasia mund vetëm të ulet. Një faturë e lëshuar me zbritje mbi të gjithë faturën nuk pranon anulim të pjesshëm: dërgojeni kërkesën pa `lines`, që të anulohet e plotë. |
| `lines[].product_name` | string | po | Emri i produktit, siç është në faturën origjinale. |
| `lines[].product_code` | string | po | Kodi i produktit, siç është në faturën origjinale. |
| `lines[].quantity` | number | po | Sasia që kthehet, më e madhe se 0 dhe jo më e madhe se ajo e faturës origjinale. |
| `lines[].price` | number, nullable | jo | Çmimi për njësi, me TVSH. Duhet vetëm kur i njëjti produkt është faturuar në dy rreshta me çmime të ndryshme, që të dallohet cili rresht anulohet. |

### Shembull kërkese

```bash
curl -X POST 'https://fature.al/api/v1/invoice/cancel/403' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'X-Client-Id: YOUR_CLIENT_ID' \
  -H 'X-Client-Secret: YOUR_CLIENT_SECRET' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
    "lines": [
        {
            "product_name": "Jane Doe",
            "product_code": "product code",
            "quantity": 2,
            "price": 1999
        }
    ]
}'
```

### Përgjigjet

**200**: Dokumenti korrigjues, me `iic` dhe `fic` të vetat; `fic` është `null` kur CIS-i nuk u arrit dhe fiskalizimi do të përfundojë vetë.

| Fusha | Tipi | Përshkrimi |
| --- | --- | --- |
| `status` | boolean |  |
| `data` | object |  |
| `data.invoice` | object, or OrderInvoiceIssueResult, SummaryInvoiceIssueResult |  |
| `data.invoice.id` | integer | Id-ja e faturës në fature.al. Ruajeni pranë `internalId` tuaj |
| `data.invoice.number` | string, nullable | Numri i faturës, si `12/2026` |
| `data.invoice.iic` | string, nullable | Kodi identifikues i faturës, IIC (NSLF) |
| `data.invoice.fic` | string, nullable | Kodi që kthen CIS-i kur regjistron faturën, FIC (NIVF). Null sa kohë fatura pret fiskalizimin e shtyrë |
| `data.invoice.tcrCode` | string, nullable | Kodi TCR i pajisjes fiskale që e lëshoi; null te faturat që nuk lëshohen nga një TCR |
| `data.invoice.businessCode` | string, nullable | Kodi i njësisë së biznesit nën të cilën u lëshua fatura |
| `data.invoice.operatorCode` | string, nullable | Kodi i operatorit që e lëshoi faturën |
| `data.invoice.fiscalizedAt` | string | Data dhe ora e krijimit të faturës, `YYYY-MM-DD HH:MM:SS`, orë lokale |
| `data.invoice.verifyURL` | string, nullable | URL-ja e verifikimit te administrata tatimore, ajo që hap kodi QR |
| `data.invoice.pdf` | string | URL-ja për të shkarkuar dokumentin. Te një e-faturë që ka tashmë EIC, tregon PDF-në zyrtare të platformës së e-faturave në vend të asaj të fature.al |
| `data.invoice.eic` | string, nullable | Kodi i e-faturës në platformën e e-faturave, EIC. Çelësi është i pranishëm vetëm te një e-faturë që e ka tashmë; te çdo faturë tjetër mungon fare, nuk vjen null |

```json
{
    "status": true,
    "data": {
        "invoice": {
            "id": 40323,
            "number": "12/2026",
            "iic": "3C7E9A1F52B84D0E6A2C4F8B1D9E7A35",
            "fic": "2f6c1e8a-9b3d-4c7e-a5f1-0d8b6e4c2a91",
            "tcrCode": "xb131xb131",
            "businessCode": "bb123bb123",
            "operatorCode": "aa123aa123",
            "fiscalizedAt": "2026-09-13 10:15:00",
            "verifyURL": "https://efiskalizimi-app.tatime.gov.al/invoice-check/#/verify?iic=3C7E9A1F52B84D0E6A2C4F8B1D9E7A35&tin=L81306019C&crtd=2026-09-13T10:15:00+02:00&prc=53190.00",
            "pdf": "https://fature.al/api/v1/invoice/print/40323",
            "eic": "9b4e2d1c-6f7a-4b3c-8d2e-1f0a9c8b7d65"
        }
    }
}
```

**401**: Unauthenticated

| Fusha | Tipi | Përshkrimi |
| --- | --- | --- |
| `message` | string |  |

```json
{
    "message": "Unauthenticated."
}
```

**404**: Fatura nuk u gjet, ose nuk i përket kompanisë suaj.

| Fusha | Tipi | Përshkrimi |
| --- | --- | --- |
| `status` | boolean | Gjithmonë false. Një përgjigje e suksesshme mban `status: true` dhe objektin `data` |
| `message` | string | Përshkrimi i gabimit. Bosh kur dështimi nuk mban ndonjë mesazh të vetin |
| `errors` | array | Mesazhe për t'u shfaqur te përdoruesi ose për t'u ruajtur në log. Mungon kur nuk ka gjë për të shtuar përtej `message` |

```json
{
    "status": false,
    "message": "Te dhenat jo te sakta.",
    "errors": [
        "errors"
    ]
}
```

**422**: Fatura nuk mund të anulohet në gjendjen e saj aktuale, ose rreshtat e dërguar nuk përputhen me origjinalin. `errors` thotë pse.

| Fusha | Tipi | Përshkrimi |
| --- | --- | --- |
| `status` | boolean | Gjithmonë false. Një përgjigje e suksesshme mban `status: true` dhe objektin `data` |
| `message` | string | Përshkrimi i gabimit. Bosh kur dështimi nuk mban ndonjë mesazh të vetin |
| `errors` | array | Mesazhe për t'u shfaqur te përdoruesi ose për t'u ruajtur në log. Mungon kur nuk ka gjë për të shtuar përtej `message` |

```json
{
    "status": false,
    "message": "Te dhenat jo te sakta.",
    "errors": [
        "errors"
    ]
}
```

**429**: Kufiri i anulimeve u arrit, ose një anulim tjetër i të njëjtit tip është ende në proces. Nga kufiri i anulimeve përgjigja mban vetëm `message` dhe header-in `Retry-After`.

| Fusha | Tipi | Përshkrimi |
| --- | --- | --- |
| `status` | boolean | Gjithmonë false. Një përgjigje e suksesshme mban `status: true` dhe objektin `data` |
| `message` | string | Përshkrimi i gabimit. Bosh kur dështimi nuk mban ndonjë mesazh të vetin |
| `errors` | array | Mesazhe për t'u shfaqur te përdoruesi ose për t'u ruajtur në log. Mungon kur nuk ka gjë për të shtuar përtej `message` |

```json
{
    "status": false,
    "message": "Te dhenat jo te sakta.",
    "errors": [
        "errors"
    ]
}
```

**500**: Gabim i papritur në server, përfshirë rastin kur anulimi nuk u regjistrua dot te CIS-i.

| Fusha | Tipi | Përshkrimi |
| --- | --- | --- |
| `status` | boolean | Gjithmonë false. Një përgjigje e suksesshme mban `status: true` dhe objektin `data` |
| `message` | string | Përshkrimi i gabimit. Bosh kur dështimi nuk mban ndonjë mesazh të vetin |
| `errors` | array | Mesazhe për t'u shfaqur te përdoruesi ose për t'u ruajtur në log. Mungon kur nuk ka gjë për të shtuar përtej `message` |

```json
{
    "status": false,
    "message": "Te dhenat jo te sakta.",
    "errors": [
        "errors"
    ]
}
```
