/api/v2/purchase-invoices
Requires authentication
Rate limited by the `api-global` limiter
v2
Send a bearer token, plus the X-Client-Id and X-Client-Secret headers in the Authorization header.
Kthen faturat që furnitorët i kanë lëshuar kompanisë suaj, të lexuara nga CIS-i. Furnitori nuk ju dërgon gjë: dokumentet merren nga sistemi qendror i fiskalizimit, secila me të dhënat e plota, shitësin, blerësin, artikujt, TVSH-në dhe mënyrat e pagesës.
Përdoreni për rakordimin e blerjeve dhe të TVSH-së së zbritshme pa asnjë hap manual.
- Pagination me
page, që fillon nga1, jo melimitdheoffset, sepse lista vjen nga CIS-i dhe jo nga fature.al. Përsëritni mepage + 1sa kohëpagination.hasMoreështëtrue. - Mos u ndalni te një
itemsbosh. Një dokument që nuk arrihet për detaje hiqet ngaitemspa gabim, prandaj një faqe mund të vijë bosh edhe kur pas saj ka të tjera. - Periudha përfshin të dyja ditët, nga ora 00:00:00 e
fromDatederi në 23:59:59 tëtoDate, sipas orës së Shqipërisë. - Data që mungon merr ditën e sotme, prandaj pa asnjërën lexohet vetëm sot. Për një periudhë të
kaluar dërgoni të dyja: vetëm një
toDatee kaluar e nis periudhën sot, pas mbarimit të saj, dhe nuk kthen faturat e asaj periudhe. fickërkon brenda periudhës, jo në gjithë historinë. Dërgojeni bashkë me njëfromDatedhetoDateqë përfshijnë datën e faturës, ndryshe kërkohet vetëm te faturat e sotme.- Një faqe kushton një thirrje te CIS-i për listën dhe një për çdo faturë në të. Detajet e çdo fature ruhen në cache për një orë, dhe endpoint-i ka kufirin fiskal të kërkesave.
Ruani iic dhe fic: me to fatura gjendet përsëri, dhe fic shërben edhe si filtër këtu.
URL-ja e plotë: https://fature.al/api/v2/purchase-invoices
Query parameters
| Name | Tipi | E detyrueshme | Përshkrimi |
|---|---|---|---|
| fic | string | no | Kthe vetëm faturën me këtë FIC, nëse është brenda periudhës. |
| page | integer | no | Faqja e listës nga CIS-i, duke filluar nga 1. Një vlerë më e vogël se 1 ose jo numër lexohet si 1. Përsëritni me `page + 1` sa kohë `pagination.hasMore` është `true`. Defaults to `1`. |
| fromDate | string | no | Data e fillimit, `YYYY-MM-DD`, e përfshirë. Pa të merret dita e sotme. |
| toDate | string | no | Data e mbarimit, `YYYY-MM-DD`, e përfshirë. Pa të merret dita e sotme. |
Përgjigjet
200 Faturat e blerjes të faqes te `items`, secila e plotë, me `pagination`.
| Field | Tipi | Përshkrimi |
|---|---|---|
| status | boolean | |
| data | object | |
| data.items | array | |
| data.items[].iic | string | Kodi identifikues i faturës, IIC (NSLF), 32 shifra hex. Me të fatura gjendet përsëri |
| data.items[].fic | string | Kodi që ktheu CIS-i kur regjistroi faturën, FIC (NIVF). Shërben edhe si filtër `fic` i listës |
| data.items[].invoiceNumber | string | Numri i faturës siç e lëshoi furnitori: numri rendor dhe viti te një faturë jo-cash, si `152/2026`; me kodin TCR në fund te një faturë cash, si `152/2026/cc123cc123` |
| data.items[].invoiceOrderNumber | integer | Numri rendor i faturës në serinë e furnitorit |
| data.items[].dateTimeCreated | string | Data dhe ora e lëshimit të faturës, siç e kthen CIS-i: datë-orë ISO 8601 me zonën orare |
| data.items[].payDeadline | string, nullable | Afati i pagesës, siç e kthen CIS-i; `null` kur fatura nuk mban afat |
| data.items[].invoiceType | string | Lloji i faturës: `CASH` ose `NONCASH` |
| data.items[].issuerTaxNumber | string | NIPT-i i lëshuesit, i njëjti me `seller.idNum` |
| data.items[].seller | object | Furnitori që e lëshoi faturën |
| data.items[].seller.idType | string | Tipi i identifikuesit: `NUIS`, `VAT` ose `TAX` te një biznes; `ID`, `PASS` ose `SOC` te një person |
| data.items[].seller.idNum | string | Vlera e identifikuesit, p.sh. NIPT-i |
| data.items[].seller.name | string | Emri i biznesit ose i personit |
| data.items[].seller.address | string, nullable | Adresa, siç e ka CIS-i; `null` kur mungon |
| data.items[].seller.town | string, nullable | Qyteti; `null` kur mungon |
| data.items[].seller.country | string, nullable | Kodi i shtetit me tre shkronja, si `ALB`; `null` kur mungon |
| data.items[].buyer | object | Blerësi, pra kompania juaj |
| data.items[].buyer.idType | string | Tipi i identifikuesit: `NUIS`, `VAT` ose `TAX` te një biznes; `ID`, `PASS` ose `SOC` te një person |
| data.items[].buyer.idNum | string | Vlera e identifikuesit, p.sh. NIPT-i |
| data.items[].buyer.name | string | Emri i biznesit ose i personit |
| data.items[].buyer.address | string, nullable | Adresa, siç e ka CIS-i; `null` kur mungon |
| data.items[].buyer.town | string, nullable | Qyteti; `null` kur mungon |
| data.items[].buyer.country | string, nullable | Kodi i shtetit me tre shkronja, si `ALB`; `null` kur mungon |
| data.items[].items | array | Rreshtat e faturës |
| data.items[].items[].name | string | Emri i produktit ose i shërbimit, siç e shkroi furnitori |
| data.items[].items[].code | any | Kodi i produktit te furnitori; `null` kur ai nuk dërgoi kod |
| data.items[].items[].unit | any | Njësia matëse; `null` kur mungon |
| data.items[].items[].quantity | number | Sasia |
| data.items[].items[].unitPriceAfterVat | number | Çmimi për njësi me TVSH, në lekë |
| data.items[].items[].priceAfterVat | number | Vlera e rreshtit me TVSH, në lekë |
| data.items[].items[].vatAmount | number | TVSH-ja e rreshtit, në lekë |
| data.items[].items[].vatRate | any | Norma e TVSH-së në përqind; `null` kur rreshti nuk mban normë, rast që fature.al e lexon si 0 |
| data.items[].items[].exemptFromVat | any | Tipi i përjashtimit nga TVSH-ja: `TYPE_1` (neni 51 i ligjit për TVSH-në), `TYPE_2` (nenet 53 dhe 54), `EXPORT_OF_GOODS` eksport mallrash, `TAX_FREE` normë zero. `null` kur rreshti ka TVSH |
| data.items[].paymentMethod | array | Mënyrat e pagesës: një element te një faturë e paguar me një mënyrë të vetme, një për çdo pjesë te një pagesë e ndarë |
| data.items[].paymentMethod[].typeCode | string | Mënyra e pagesës: `BANKNOTE`, `CARD`, `CHECK`, `SVOUCHER`, `COMPANY` ose `ORDER` te një faturë cash; `ACCOUNT`, `TRANSFER`, `COMPENSATION`, `FACTORING`, `KIND`, `WAIVER` ose `OTHER` te një faturë jo-cash |
| data.items[].paymentMethod[].compCard | any | Numri i kartës së kompanisë kur `typeCode` është `COMPANY`. Te pagesat me bankë programet e faturimit, edhe fature.al, vendosin këtu IBAN-in e llogarisë. `null` kur mungon |
| data.items[].currency | object, nullable | Monedha dhe kursi i faturës; `null` kur fatura është në lekë |
| data.items[].currency.code | string | Kodi ISO 4217 i monedhës së faturës |
| data.items[].currency.exchangeRate | number | Sa lekë vlen një njësi e monedhës. Shumat e faturës vijnë në lekë; pjesëtuar me këtë kurs japin shumën në monedhën e faturës |
| data.items[].totalPrice | number | Totali i faturës me TVSH, në lekë |
| data.items[].totalPriceWithoutVAT | number | Totali i faturës pa TVSH, në lekë |
| data.items[].reverseCharge | boolean | Ngarkesë e kundërt: TVSH-në e deklaron blerësi |
| data.items[].businessUnit | string, nullable | Kodi i njësisë së biznesit të furnitorit nga u lëshua fatura |
| data.items[].operatorCode | string, nullable | Kodi i operatorit të furnitorit që e lëshoi faturën |
| data.items[].tcrCode | string, nullable | Kodi TCR i pajisjes fiskale të furnitorit; `null` te faturat që nuk lëshohen nga një TCR |
| data.items[].softwareCode | string, nullable | Kodi i programit me të cilin furnitori e lëshoi faturën |
| data.items[].iicSignature | string, nullable | Nënshkrimi i IIC-së me certifikatën e furnitorit, në hex |
| data.pagination | object | |
| data.pagination.records | integer | Numri i faturave që CIS-i gjen për gjithë periudhën dhe filtrat, i njëjtë në çdo faqe. Nuk është numri i `items` të kësaj faqeje |
| data.pagination.page | integer | Parametri `page` i kërkesës, pas rrumbullakimit në të paktën 1 |
| data.pagination.hasMore | boolean | `true` kur kjo faqe kishte fatura dhe CIS-i ka më shumë për periudhën: kërkoni `page + 1`. `false` do të thotë që lista mbaroi. CIS-i nuk e tregon madhësinë e faqes, prandaj faqja e fundit mund të thotë `true` dhe ajo pas saj të vijë bosh me `false` |
401 Token-i mungon ose nuk është i vlefshëm, ose përdoruesi nuk ka të drejtën e faturave të blerjes.
| Field | 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` |
422 Datat nuk janë në formatin `YYYY-MM-DD`.
| Field | 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` |
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.
| Field | 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` |
500 Gabim i papritur në server.
| Field | 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` |
502 CIS-i u përgjigj me një gabim; arsyeja është te `message`.
| Field | 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` |
503 Shërbimi i fiskalizimit nuk u arrit. Riprovoni më vonë. `message` vjen bosh; arsyeja është te `errors`.
| Field | 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` |
Shembull kërkese
curl -X GET 'https://fature.al/api/v2/purchase-invoices' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'X-Client-Id: YOUR_CLIENT_ID' \
-H 'X-Client-Secret: YOUR_CLIENT_SECRET' \
-H 'Accept: application/json'
use Illuminate\Support\Facades\Http;
$response = Http::withHeaders([
'Authorization' => 'Bearer YOUR_TOKEN',
'X-Client-Id' => 'YOUR_CLIENT_ID',
'X-Client-Secret' => 'YOUR_CLIENT_SECRET',
'Accept' => 'application/json',
])->get('https://fature.al/api/v2/purchase-invoices');
$data = $response->json();
use GuzzleHttp\Client;
$client = new Client();
$response = $client->request('GET', 'https://fature.al/api/v2/purchase-invoices', [
'headers' => [
'Authorization' => 'Bearer YOUR_TOKEN',
'X-Client-Id' => 'YOUR_CLIENT_ID',
'X-Client-Secret' => 'YOUR_CLIENT_SECRET',
'Accept' => 'application/json',
],
]);
$data = json_decode((string) $response->getBody(), true);
const response = await fetch('https://fature.al/api/v2/purchase-invoices', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'X-Client-Id': 'YOUR_CLIENT_ID',
'X-Client-Secret': 'YOUR_CLIENT_SECRET',
'Accept': 'application/json'
}
});
const data = await response.json();
Shembull përgjigjeje
{
"status": true,
"data": {
"items": [
{
"iic": "0F1E2D3C4B5A69788796A5B4C3D2E1F0",
"fic": "8a941d47-7d47-4b7e-8f3a-1c2d3e4f5a6b",
"invoiceNumber": "152/2026",
"invoiceOrderNumber": 152,
"dateTimeCreated": "2026-07-01T10:15:23+02:00",
"payDeadline": "2026-07-31T00:00:00+02:00",
"invoiceType": "NONCASH",
"issuerTaxNumber": "K71828301A",
"seller": {
"idType": "NUIS",
"idNum": "K71828301A",
"name": "Furnizimi Alba SHPK",
"address": "Rruga e Durrësit 5",
"town": "Tiranë",
"country": "ALB"
},
"buyer": {
"idType": "NUIS",
"idNum": "K71828301A",
"name": "Furnizimi Alba SHPK",
"address": "Rruga e Durrësit 5",
"town": "Tiranë",
"country": "ALB"
},
"items": [
{
"name": "Kafe e pjekur 1kg",
"code": "K1",
"unit": "kg",
"quantity": 100,
"unitPriceAfterVat": 120,
"priceAfterVat": 12000,
"vatAmount": 2000,
"vatRate": 20,
"exemptFromVat": "TYPE_1"
}
],
"paymentMethod": [
{
"typeCode": "ACCOUNT",
"compCard": "AL47212110090000000235698741"
}
],
"currency": {
"code": "EUR",
"exchangeRate": 100.5
},
"totalPrice": 12000,
"totalPriceWithoutVAT": 10000,
"reverseCharge": false,
"businessUnit": "bb123bb123",
"operatorCode": "oo123oo123",
"tcrCode": "cc123cc123",
"softwareCode": "ss123ss123",
"iicSignature": "3a5f9c1e7b2d4680a1c3e5f7092b4d6e8f0a1b2c3d4e5f60718293a4b5c6d7e8f9a0b1c2d3e4f5061728394a5b6c7d8e9f0a1b2c3d4e5f6"
}
],
"pagination": {
"records": 12,
"page": 1,
"hasMore": true
}
}
}
{
"status": false,
"message": "Te dhenat jo te sakta.",
"errors": [
"errors"
]
}
{
"status": false,
"message": "Te dhenat jo te sakta.",
"errors": [
"errors"
]
}
{
"status": false,
"message": "Te dhenat jo te sakta.",
"errors": [
"errors"
]
}
{
"status": false,
"message": "Te dhenat jo te sakta.",
"errors": [
"errors"
]
}
{
"status": false,
"message": "Te dhenat jo te sakta.",
"errors": [
"errors"
]
}
{
"status": false,
"message": "Te dhenat jo te sakta.",
"errors": [
"errors"
]
}