---
title: "Lësho fletë shoqëruese"
operation_id: "api.v2.invoice.wtn.create"
method: POST
path: "/api/v2/invoice/wtn"
group: "Fletët shoqëruese"
api_version: "v2"
authenticated: true
canonical: "https://fature.al/api-reference/endpoints/api-v2-invoice-wtn-create.html"
---

# Lësho fletë shoqëruese

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

## POST /api/v2/invoice/wtn

Lëshon një fletë shoqëruese (WTN) dhe e fiskalizon te CIS-i. Fleta nuk është shitje: shoqëron
mallin që lëviz nga një pikë në tjetrën, dhe ligji e kërkon edhe kur asgjë nuk shitet.

Rreshtat dërgohen si `invoice_lines`, jo `lines` si te faturat, dhe çdo rresht ka
`product_name`, `product_code`, `unit` dhe `quantity`.

### Fushat e detyrueshme

- `internalId`, identifikuesi i fletës në sistemin tuaj;
- `vehPlates`, targa e automjetit;
- `valueOfGoods`, vlera e mallit që udhëton;
- `invoice_lines`, të paktën një rresht.

### internalId

Ky është ndryshimi i vetëm nga [`POST /api/v1/invoice/wtn`](/docs/api), ku fusha është
opsionale. Mbajeni unik brenda kompanisë për vitin: një kërkesë e dytë me të njëjtin
`internalId` nuk lëshon fletë të dytë, kthen fletën e parë me `200`. Kështu riprovimi pas një
timeout-i është i sigurt, dhe fleta lexohet më vonë me
`GET /invoice/wtn/details/{internalId}`.

### Vlerat e lejuara

| Fusha | Vlerat | Parazgjedhja |
| --- | --- | --- |
| `type` | `WTN`, `SALE` | `WTN` |
| `transaction` | `TRANSFER`, `EXAMINATION`, `SALES`, `DOOR` | `TRANSFER` |
| `vehOwnership` | `OWNER`, `THIRDPARTY` | `OWNER` |
| `startPoint`, `destinPoint` | `ANOTHER`, `CUSTOMS`, `EXHIBITION`, `OTHER`, `SALE`, `STORE`, `WAREHOUSE` | `WAREHOUSE`, `STORE` |
| `carrier_id_type` | `NUIS`, `ID` | `NUIS` |

Adresat e nisjes dhe të mbërritjes (`startCity`, `startAddr`, `destinCity`, `destinAddr`) dhe
transportuesi (`carrier_name`, `carrier_id_num`, `carrier_town`, `carrier_address`) merren nga
njësia dhe kompania juaj kur nuk dërgohen. `startDateTime` dhe `destinDateTime` marrin kohën e
lëshimit kur mungojnë.

### Pas lëshimit

Përgjigja mban `id`, `internalId`, `number`, `iic`, `fic`, `fiscalStatus`, `verifyURL` dhe
`print`. Kur CIS-i nuk arrihet, fleta ruhet e pafiskalizuar, me `fic: null` dhe
`fiscalStatus: UNFISCALIZED`; fiskalizimi kryhet më vonë nga paneli i fature.al, dhe gjendjen
e lexoni te `fiscal.status` me `GET /invoice/wtn/details/{internalId}`. Kur CIS-i e refuzon
fletën, ajo nuk ruhet dhe përgjigja është `500` me arsyen te `message`.

Një kërkesë e dytë nga i njëjti token, ndërsa e para nuk ka mbaruar, refuzohet menjëherë me
`429`. Vendi lirohet sapo kthehet përgjigja, ose pas 30 sekondash nëse kërkesa u ndërpre.

Ndryshuar që nga `v1`:

| What changed | v1 | v2 |
| --- | --- | --- |
| body `internalId` | — | string, maxLength 255, required |
| 200 `data.invoice.internalId` | — | string |

URL-ja e plotë: `https://fature.al/api/v2/invoice/wtn`

Versioni i API-t: `v2`.

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

### Fushat e body-t

| Fusha | Tipi | E detyrueshme | Përshkrimi |
| --- | --- | --- | --- |
| `vehPlates` | string | po | Targa e automjetit. E detyrueshme. |
| `valueOfGoods` | number | po | Vlera e mallit që udhëton, në ALL. E detyrueshme. |
| `invoice_lines` | array | po | Rreshtat e mallit, të paktën një. |
| `invoice_lines[].product_name` | string, maxLength 255 | po | Emri ose përshkrimi i mallit. |
| `invoice_lines[].product_code` | string, maxLength 50 | po | Kodi i mallit. |
| `invoice_lines[].unit` | string, maxLength 50 | po | Njësia matëse. |
| `invoice_lines[].quantity` | number | po | Sasia, gjithmonë më e madhe se 0. |
| `internalId` | string, maxLength 255 | po | Identifikuesi i fletës në sistemin tuaj, unik brenda kompanisë për vitin; shërben edhe si çelës idempotence. I detyrueshëm. |
| `type` | string, one of WTN, SALE, nullable | jo | Lloji i fletës: `WTN` për mall që lëviz pa shitje, `SALE` për mall që shoqëron një shitje. Pa të merret `WTN`. |
| `transaction` | string, one of TRANSFER, EXAMINATION, SALES, DOOR, nullable | jo | Lloji i transaksionit: `TRANSFER` zhvendosje malli, `EXAMINATION` dërgim për ekzaminim ose provë, `SALES` shitje, `DOOR` shitje derë më derë. Pa të merret `TRANSFER`. |
| `vehOwnership` | string, one of OWNER, THIRDPARTY, nullable | jo | Pronësia e automjetit: `OWNER` automjet i kompanisë, `THIRDPARTY` automjet i një pale të tretë. Pa të merret `OWNER`. |
| `startPoint` | string, one of ANOTHER, CUSTOMS, EXHIBITION, OTHER, SALE, STORE, WAREHOUSE, nullable | jo | Pika e nisjes, si lloj vendi: `WAREHOUSE` magazinë, `STORE` dyqan, `SALE` pikë shitjeje, `EXHIBITION` panair, `CUSTOMS` doganë, `ANOTHER` magazinë e një personi tjetër, `OTHER` tjetër. Pa të merret `WAREHOUSE`. |
| `destinPoint` | string, one of ANOTHER, CUSTOMS, EXHIBITION, OTHER, SALE, STORE, WAREHOUSE, nullable | jo | Pika e mbërritjes, si lloj vendi, me të njëjtat vlera si `startPoint`. Pa të merret `STORE`. |
| `carrier_id_type` | string, one of NUIS, ID, nullable | jo | Lloji i identifikuesit të transportuesit: `NUIS` për një biznes, `ID` për një person. Pa të merret `NUIS`. |
| `startCity` | string, nullable | jo | Qyteti i nisjes. Pa të merret qyteti i kompanisë. |
| `startAddr` | string, nullable | jo | Adresa e nisjes. Pa të merret adresa e njësisë së biznesit. |
| `destinCity` | string, nullable | jo | Qyteti i mbërritjes. Pa të merret qyteti i kompanisë. |
| `destinAddr` | string, nullable | jo | Adresa e mbërritjes. Pa të merret adresa e njësisë së biznesit. |
| `carrier_id_num` | string, nullable | jo | NIPT-i ose numri i dokumentit të transportuesit, sipas `carrier_id_type`. Pa të merret NIPT-i i kompanisë. |
| `carrier_name` | string, nullable | jo | Emri i transportuesit. Pa të merret emri i përdoruesit të token-it. |
| `carrier_town` | string, nullable | jo | Qyteti i transportuesit. Pa të merret qyteti i kompanisë. |
| `carrier_address` | string, nullable | jo | Adresa e transportuesit. Pa të merret adresa e njësisë së biznesit. |
| `startDateTime` | string<date-time>, nullable | jo | Data dhe ora e nisjes, `YYYY-MM-DD HH:MM`. Pa të merret çasti i lëshimit. |
| `destinDateTime` | string<date-time>, nullable | jo | Data dhe ora e mbërritjes, `YYYY-MM-DD HH:MM`. Pa të merret çasti i lëshimit. |

### Shembull kërkese

```bash
curl -X POST 'https://fature.al/api/v2/invoice/wtn' \
  -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 '{
    "vehPlates": "AA123BB",
    "valueOfGoods": 10000,
    "invoice_lines": [
        {
            "product_name": "Kafe",
            "product_code": "K1",
            "unit": "cope",
            "quantity": 5
        }
    ],
    "internalId": "WTN-2026-000412",
    "type": "WTN",
    "transaction": "TRANSFER",
    "vehOwnership": "OWNER",
    "startPoint": "WAREHOUSE",
    "destinPoint": "STORE",
    "carrier_id_type": "NUIS",
    "startCity": "Tirane",
    "startAddr": "Rruga X",
    "destinCity": "Durres",
    "destinAddr": "Rruga Y",
    "carrier_id_num": "L01234567A",
    "carrier_name": "Transport SHPK",
    "carrier_town": "Tirane",
    "carrier_address": "Rruga Z",
    "startDateTime": "2025-01-15 10:30",
    "destinDateTime": "2025-01-15 14:30"
}'
```

### Përgjigjet

**200**: Kur CIS-i nuk arrihet, fleta ruhet e pafiskalizuar: përgjigja mban `invoice` me `fic: null` dhe `fiscalStatus: UNFISCALIZED`, dhe fiskalizimi kryhet më vonë.

| Fusha | Tipi | Përshkrimi |
| --- | --- | --- |
| `status` | boolean |  |
| `data` | object |  |
| `data.invoice` | object, nullable |  |
| `data.invoice.id` | integer | Id-ja e fletës në fature.al. Ruajeni: me të lexohen detajet dhe të dhënat për printim |
| `data.invoice.internalId` | string | Identifikuesi i fletës në sistemin tuaj, ai që dërguat te `internalId` |
| `data.invoice.number` | string, nullable | Numri i fletës, si `3/2026`: numri rendor i fletës brenda ditës për njësinë e biznesit, dhe viti |
| `data.invoice.iic` | string, nullable | Kodi identifikues i fletës (WTNIC, në rolin e IIC-së së faturave), 32 shifra hex. Llogaritet nga fature.al para dërgimit te CIS-i, ndaj vjen edhe kur fleta pret fiskalizimin |
| `data.invoice.fic` | string, nullable | Kodi që ktheu CIS-i kur e regjistroi fletën (FWTNIC, në rolin e FIC-ut); `null` sa kohë fleta pret fiskalizimin |
| `data.invoice.tcrCode` | string, nullable | Kodi TCR i pajisjes fiskale të përdoruesit të token-it në çastin e lëshimit |
| `data.invoice.businessCode` | string, nullable | Kodi i njësisë së biznesit nën të cilën u lëshua fleta |
| `data.invoice.operatorCode` | string, nullable | Kodi i operatorit që e lëshoi fletën |
| `data.invoice.fiscalStatus` | string, nullable | `FISCALIZED` kur CIS-i e regjistroi fletën, `UNFISCALIZED` kur ajo u ruajt pa u fiskalizuar |
| `data.invoice.fiscalizedAt` | string, nullable | Data e fiskalizimit, `YYYY-MM-DD HH:MM:SS`, orë lokale. Ora është gjithmonë `00:00:00`, sepse për fletët ruhet vetëm data. `null` sa kohë fleta pret fiskalizimin |
| `data.invoice.verifyURL` | string, nullable | URL-ja e verifikimit të fletës te administrata tatimore, ajo që hap kodi QR; `null` kur fleta nuk ka `iic` |
| `data.invoice.print` | string | URL-ja e `GET /invoice/wtn/print/{id}`, të dhënat e fletës për printim. Vjen nën të njëjtin version që e lëshoi fletën |
| `data.message` | string |  |

```json
{
    "status": true,
    "data": {
        "invoice": {
            "id": 403,
            "internalId": "WTN-2026-000412",
            "number": "3/2026",
            "iic": "A1B2C3D4E5F60718293A4B5C6D7E8F90",
            "fic": "7f1e2d3c-4b5a-4c6d-8e9f-0a1b2c3d4e5f",
            "tcrCode": "cc123cc123",
            "businessCode": "bb123bb123",
            "operatorCode": "oo123oo123",
            "fiscalStatus": "FISCALIZED",
            "fiscalizedAt": "2026-09-13 00:00:00",
            "verifyURL": "https://efiskalizimi-app.tatime.gov.al/invoice-check/#/wtn?wtnic=A1B2C3D4E5F60718293A4B5C6D7E8F90&tin=L01234567A&crtd=2026-09-13T10:30:00+02:00&ord=3&bu=bb123bb123&sw=ss123ss123",
            "print": "https://fature.al/api/v1/invoice/wtn/print/403"
        },
        "message": "Hello there"
    }
}
```

**401**: Unauthenticated

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

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

**403**: Abonimi ka mbaruar, ose veprimi nuk lejohet për këtë llogari.

```json
example
```

**422**: Të dhënat nuk kaluan validimin, `internalId` që mungon përfshirë. Kjo përgjigje përdor fushën `success`, jo `status`, dhe `errors` është objekt sipas fushës.

```json
example
```

**429**: Kufiri i kërkesave u arrit. Nga kufiri i përgjithshëm përgjigja mban vetëm `message` dhe header-in `Retry-After`; nga kufiri i endpoint-it mban formatin standard të gabimit.

```json
example
```

**500**: Gabim i papritur në server, ose CIS-i e refuzoi fletën; arsyeja është te `message`. Fleta nuk u ruajt.

```json
example
```
