/api/v2/invoice/summary
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.
Mbyll pagesën e një ose më shumë faturave porosi me një dokument të vetëm, si te v1, me
pagesën si listë payment_methods. Një tavolinë e paguar gjysmë me para në dorë dhe gjysmë me
kartë dërgon një listë me dy elemente; e paguar e gjitha me kartë, një listë me një element.
Lejohen vetëm BANKNOTE dhe CARD. Rregullat për order_invoices dhe zbritjen janë ato të
POST /api/v1/invoice/summary.
URL-ja e plotë: https://fature.al/api/v2/invoice/summary
Ndryshuar që nga v1:
| What changed | v1 | v2 |
|---|---|---|
body payment_method |
string, one of BANKNOTE, CARD, required | — |
body payment_methods |
— | array, required |
200 data.invoice.payment_methods |
— | array |
200 data.invoice.payment_methods[].type |
— | string |
200 data.invoice.payment_methods[].amount |
— | number |
200 data.invoice.payment_methods[].company_card |
— | any |
200 data.invoice.payment_methods[].vouchers |
— | any |
Body parameters
| Name | Tipi | E detyrueshme | Përshkrimi |
|---|---|---|---|
| internalId | string | yes | Identifikuesi i faturës në sistemin tuaj; shërben edhe si çelës idempotence. I detyrueshëm. |
| order_invoices | array | yes | IIC-të e faturave porosi që po mbyllen, të paktën një. Rreshtat e përmbledhëses merren nga këto porosi, prandaj nuk dërgohen në kërkesë. |
| currency | string, nullable | no | Monedha e faturës, kod ISO 4217; pa të merret ALL. |
| exchange_rate | number, nullable | no | Sa lekë vlen një njësi e monedhës së faturës. Pa të merret 1. |
| supply_start_date | string, nullable | no | Fillimi i periudhës së furnizimit, `YYYY-MM-DD`, për fatura që mbulojnë një interval. |
| supply_end_date | string, nullable | no | Fundi i periudhës së furnizimit, `YYYY-MM-DD`. |
| invoice_discount_type | string, one of percent, amount, nullable | no | Si lexohet `invoice_discount_value`: `percent` si përqindje, `amount` si vlerë fikse me TVSH. Zbritja mbi të gjithë faturën vendoset te përmbledhësja, jo te porositë, të cilat nuk e pranojnë; zbritjet e rreshtave vijnë bashkë me rreshtat që kopjohen nga porositë. Punon vetëm në çift me `invoice_discount_value`. Njëra pa tjetrën injorohet në heshtje dhe fatura del pa zbritje. |
| invoice_discount_value | number, min 0, nullable | no | Vlera e zbritjes, e lexuar sipas `invoice_discount_type`: përqindje deri në 100 kur tipi është `percent`; vlerë me TVSH në monedhën e faturës, deri në totalin e përmbledhëses, kur tipi është `amount`. Zeroja e lë faturën pa zbritje. |
| payment_methods | array | yes | Listë me një element për çdo mënyrë pagese, deri në 10. Një përmbledhëse e paguar me një mënyrë të vetme dërgon një listë me një element. Shumat duhet të mbledhin saktë totalin e përmbledhëses, me zbritjen tashmë të zbatuar, dhe e njëjta mënyrë nuk përsëritet dy herë. |
| payment_methods[].type | string, one of BANKNOTE, CARD | yes | Mënyra e pagesës e këtij elementi: `BANKNOTE` ose `CARD`. |
| payment_methods[].amount | number | yes | Sa paguhet me këtë mënyrë, me TVSH, në monedhën e faturës. Pranon çdo vlerë që pranon CIS-i: edhe 0, për një përmbledhëse me vlerë 0, dhe negative. |
Përgjigjet
200 Kur përdoruesi nuk ka pajisje fiskale, ose kur fatura refuzohet pas validimit nga CIS-i ose gjatë ruajtjes, përgjigja kthehet me HTTP 200 dhe `status: false`; arsyeja është te `message`.
| Field | Tipi | Përshkrimi |
|---|---|---|
| status | boolean | |
| data | object | |
| data.invoice | object | |
| 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 |
| data.invoice.payment_methods | array | Një element për çdo mënyrë pagese, me shumën që u shlye me secilën. E njëjta listë që kthen `GET /invoice/{id}/details` |
| data.invoice.payment_methods[].type | string | Mënyra e pagesës, p.sh. `BANKNOTE` ose `CARD` |
| data.invoice.payment_methods[].amount | number | Shuma e shlyer me këtë mënyrë, me TVSH, në monedhën e faturës |
| data.invoice.payment_methods[].company_card | any | Numri i kartës së kompanisë; i plotësuar vetëm kur `type` është `COMPANY`, përndryshe null |
| data.invoice.payment_methods[].vouchers | any | Numrat serialë të tollonave; të plotësuar vetëm kur `type` është `SVOUCHER`, përndryshe listë bosh |
| data.invoice.isSummaryInvoice | boolean | Gjithmonë true; çelësi e shënon faturën si përmbledhëse |
| data.invoice.settledOrderInvoices | array | Porositë që u mbyllën me këtë faturë |
| data.invoice.settledOrderInvoices[].id | integer | Id-ja e porosisë në fature.al |
| data.invoice.settledOrderInvoices[].number | string, nullable | Numri i faturës së porosisë |
| data.invoice.settledOrderInvoices[].date | string | Kur u lëshua porosia, `YYYY-MM-DD HH:MM:SS` |
| data.invoice.settledOrderInvoices[].amountGross | number | Totali i porosisë me TVSH, në monedhën e saj |
| data.invoice.settledOrderInvoices[].currency | string, nullable | Monedha e porosisë, ISO 4217 |
400 Një porosi nuk u gjet, nuk është faturë porosi, ose është mbyllur tashmë; ose të dhënat janë të paplota për fiskalizim. `errors` thotë saktë cila. Fatura nuk u ruajt; riprovoni me të njëjtin `internalId`.
| 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` |
401 Unauthenticated
| Field | Tipi | Përshkrimi |
|---|---|---|
| message | string |
403 Abonimi ka mbaruar, ose veprimi nuk lejohet për këtë llogari.
| 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` |
409 Një kërkesë me këtë `internalId` është ende në proces. Prisni pak dhe riprovoni, ose lexoni gjendjen me `POST /invoice/details/{internalId}`.
| 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 Të dhënat nuk kaluan validimin. Kjo përgjigje përdor fushën `success`, jo `status`, dhe `errors` është objekt sipas fushës. Vetëm `internalId` që mungon kthehet me formatin standard të gabimit.
| Field | Tipi | Përshkrimi |
|---|---|---|
| success | boolean | Gjithmonë false |
| message | string | Një rresht përmbledhës, i njëjtë për çdo dështim validimi |
| errors | object | Fushat që nuk kaluan validimin, secila me mesazhet e veta. Çelësat me pikë tregojnë brenda objekteve dhe elementëve të array-ve, p.sh. `lines.0.quantity` |
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` |
503 Shërbimi i fiskalizimit nuk u arrit dhe fatura nuk u ruajt. Riprovoni me të njëjtin `internalId`.
| 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 POST 'https://fature.al/api/v2/invoice/summary' \
-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 '{
"internalId": "SUMMARY-2026-000021",
"order_invoices": [
"8FE72E2ACD1C500A83F8C89B4E2E3E1D"
],
"currency": "ALL",
"exchange_rate": 100.5,
"supply_start_date": "2026-09-01",
"supply_end_date": "2026-09-30",
"invoice_discount_type": "percent",
"invoice_discount_value": 10,
"payment_methods": [
{
"type": "BANKNOTE",
"amount": 1200
}
]
}'
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',
'Content-Type' => 'application/json',
])->post('https://fature.al/api/v2/invoice/summary', [
'internalId' => 'SUMMARY-2026-000021',
'order_invoices' => [
'8FE72E2ACD1C500A83F8C89B4E2E3E1D',
],
'currency' => 'ALL',
'exchange_rate' => 100.5,
'supply_start_date' => '2026-09-01',
'supply_end_date' => '2026-09-30',
'invoice_discount_type' => 'percent',
'invoice_discount_value' => 10,
'payment_methods' => [
[
'type' => 'BANKNOTE',
'amount' => 1200,
],
],
]);
$data = $response->json();
use GuzzleHttp\Client;
$client = new Client();
$response = $client->request('POST', 'https://fature.al/api/v2/invoice/summary', [
'headers' => [
'Authorization' => 'Bearer YOUR_TOKEN',
'X-Client-Id' => 'YOUR_CLIENT_ID',
'X-Client-Secret' => 'YOUR_CLIENT_SECRET',
'Accept' => 'application/json',
'Content-Type' => 'application/json',
],
'json' => [
'internalId' => 'SUMMARY-2026-000021',
'order_invoices' => [
'8FE72E2ACD1C500A83F8C89B4E2E3E1D',
],
'currency' => 'ALL',
'exchange_rate' => 100.5,
'supply_start_date' => '2026-09-01',
'supply_end_date' => '2026-09-30',
'invoice_discount_type' => 'percent',
'invoice_discount_value' => 10,
'payment_methods' => [
[
'type' => 'BANKNOTE',
'amount' => 1200,
],
],
],
]);
$data = json_decode((string) $response->getBody(), true);
const response = await fetch('https://fature.al/api/v2/invoice/summary', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'X-Client-Id': 'YOUR_CLIENT_ID',
'X-Client-Secret': 'YOUR_CLIENT_SECRET',
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"internalId": "SUMMARY-2026-000021",
"order_invoices": [
"8FE72E2ACD1C500A83F8C89B4E2E3E1D"
],
"currency": "ALL",
"exchange_rate": 100.5,
"supply_start_date": "2026-09-01",
"supply_end_date": "2026-09-30",
"invoice_discount_type": "percent",
"invoice_discount_value": 10,
"payment_methods": [
{
"type": "BANKNOTE",
"amount": 1200
}
]
})
});
const data = await response.json();
Shembull përgjigjeje
{
"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",
"payment_methods": [
{
"type": "ACCOUNT",
"amount": 540,
"company_card": "company card",
"vouchers": []
}
],
"isSummaryInvoice": true,
"settledOrderInvoices": [
{
"id": 40298,
"number": "9/2026",
"date": "2026-09-12 18:20:00",
"amountGross": 540,
"currency": "EUR"
}
]
}
}
}
{
"status": false,
"message": "Te dhenat jo te sakta.",
"errors": [
"errors"
]
}
{
"message": "Unauthenticated."
}
{
"status": false,
"message": "Te dhenat jo te sakta.",
"errors": [
"errors"
]
}
{
"status": false,
"message": "Te dhenat jo te sakta.",
"errors": [
"errors"
]
}
{
"success": false,
"message": "Te dhena jo te sakta",
"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"
]
}