/api/v1/invoice/noncash
Requires authentication
Rate limited by the `api-global` limiter
v1
Send a bearer token in the Authorization header.
Perdoret per transaksione me transferte bankare, cek dhe cdo pagese qe nuk kryhet ne arke.
Bleresi#
Klienti identifikohet me client.name dhe, kur e dergoni, me client.id. Adresa dhe qyteti
shkojne ne sistemin fiskal, prandaj duhen njera nga dy rruget:
client.addressdheclient.cityne vete kerkesen;- ose te ruajtura me pare tek klienti ne fature.al.
Kur mungon nje e dhene e nevojshme, kerkesa refuzohet me 400 dhe fusha errors thote sakte
cfare duhet plotesuar.
Llogaria bankare#
Shkruhet ne fature ne tri menyra, sipas asaj qe keni ne dore:
| Fusha | Kuptimi |
|---|---|
bank_account |
ID e nje llogarie te ruajtur ne fature.al |
bank_account_iban |
Gjendet me IBAN |
bankAccount |
Shkruhet e plote dhe ruhet si llogari e kompanise; nje IBAN ekzistues riperdoret |
Zbritja mbi faturen#
invoice_discount_type me invoice_discount_value dergohen gjithmone bashke, dhe zbresin
te gjithe faturen. Nje rresht i vetem zbritet me lines[].discount, dhe te dyja mund te
jene ne te njejten fature.
invoice_discount_type |
Si lexohet invoice_discount_value |
Kufiri |
|---|---|---|
percent |
perqindje mbi totalin me TVSH | 100 |
amount |
vlere me TVSH, ne monedhen e fatures | totali i fatures |
Zbritja shperndahet mbi grupet e TVSH-se sipas peshes se secilit ne total, dhe TVSH-ja
rillogaritet mbi vleren e ulur, keshtu qe nje fature me disa norma TVSH-je mbetet e sakte.
lines[].discount eshte perqindje mbi cmimin e njesise se atij rreshti. price mbetet
cmimi i plote dhe total vjen tashme i ulur: price here quantity, me zbritjen e hequr.
Tarifa fee mbetet jashte bazes se zbritjes: zbritet shuma e rreshtave, dhe tarifa i
shtohet totalit te ulur.
Note krediti dhe note debiti#
Nje fature jo-cash korrigjohet nga nje fature tjeter jo-cash. Dergoni doc_type bashke me
original_invoice_iic, IIC-ne qe ju ktheu fatura origjinale:
doc_type |
Dokumenti | Efekti |
|---|---|---|
mungon ose 380 |
Fature e zakonshme | asnje |
381 |
Note krediti | ul vleren qe bleresi ju detyrohet |
383 |
Note debiti | rrit vleren qe bleresi ju detyrohet |
Origjinali duhet te jete fature jo-cash e fiskalizuar, e paanuluar dhe ende e korrigjueshme.
Rreshtat qe dergoni jane rreshtat e korrigjimit, me vlerat pozitive: drejtimin e percakton
doc_type, jo shenja e numrave. Kur korrigjimet e mbulojne te gjithe faturen, origjinali
shenohet si i kthyer.
Per te kthyer nje fature te plote perdorni endpoint-in e anulimit, jo nje note krediti.
Full URL: https://fature.al/api/v1/invoice/noncash
Body parameters
| Name | Type | Required | Description |
|---|---|---|---|
| internalId | string | yes | ID unike e fatures ne sistemin tuaj. Sherben edhe si celes idempotence: i njejti `internalId` brenda te njejtit vit kthen `409` ne vend qe te leshoje nje fature te dyte, prandaj nje riprovim pas nje lidhjeje qe u nderpre eshte i sigurt. |
| client | object, nullable | no | Pa te, ose me vlere bosh, fatura leshohet per klientin e rastit. |
| client.internal_id | integer, nullable | no | ID e nje klienti te ruajtur ne fature.al. Kur e dergoni, klienti gjendet me te dhe fushat me poshte nuk lexohen. |
| client.name | string | no | Emri i bleresit. |
| client.id | object, nullable | no | Dokumenti i identifikimit te bleresit, si objekt me `type` dhe `id`. |
| client.id.id | string, nullable | no | Numri i dokumentit te identifikimit. |
| client.address | string, nullable | no | Adresa e bleresit qe shkon ne fiskalizim. Nje klient i emeruar e kerkon, ose ne kete kerkese ose e ruajtur me pare ne fature.al. |
| client.city | string, nullable | no | Qyteti i bleresit qe shkon ne fiskalizim. Nje klient i emeruar e kerkon, ose ne kete kerkese ose e ruajtur me pare ne fature.al. |
| client.country | string | no | ISO 3166-1 alpha-3 country code (e.g. RKS, ALB, USA). ALB when absent. |
| lines | array | yes | Rreshtat e fatures, te pakten nje. |
| lines[].product_name | string | yes | Emri i produktit ose i sherbimit. |
| lines[].product_code | string | yes | Kodi i produktit ne katalogun tuaj. |
| lines[].unit | string | yes | Njesia matese si tekst, ajo qe lexon njeriu. |
| lines[].quantity | number | yes | Sasia. |
| lines[].price | number | yes | Cmimi per njesi, me TVSH. |
| lines[].total | number | yes | Totali i rreshtit, me TVSH. |
| lines[].discount | number, min 0, max 100, nullable | no | Zbritja e ketij rreshti, ne perqindje mbi cmimin e njesise. Eshte opsionale: pa te, ose me vlere bosh, rreshti kalon pikerisht si me pare dhe mungesa e saj nuk kthen kurre gabim. `price` mbetet cmimi i plote i njesise, ndersa `total` vjen tashme i ulur: `price` here `quantity`, me zbritjen e hequr. Nje `total` qe nuk perputhet me ate shifer e refuzon kerkesen me `400`, dhe `errors` tregon cili eshte rreshti dhe cila vlere pritej. |
| lines[].vat | integer, one of 0, 6, 10, 20, nullable | no | Norma e TVSH-se ne perqindje: `0`, `6`, `10` ose `20`. Kur biznesi juaj nuk eshte ne skemen e TVSH-se, rreshti regjistrohet me TVSH `0` dhe me perjashtim `TAX_FREE` sido qe ta dergoni kete fushe. Kerkesa nuk refuzohet. |
| lines[].vat_exempt_type | string, one of TYPE_1, TYPE_2, EXPORT_OF_GOODS, TAX_FREE, nullable | no | Arsyeja e perjashtimit nga TVSH, kur rreshti eshte i perjashtuar. |
| invoice_discount_type | string, one of percent, amount, nullable | no | Si lexohet `invoice_discount_value`: `percent` si perqindje, `amount` si vlere fikse me TVSH. Zbritja zbatohet mbi te gjithe faturen, kurre mbi nje rresht te vetem: rreshtat ruhen ashtu si i dergoni dhe ulet vetem totali. Punon vetem ne cift me `invoice_discount_value`. Njera pa tjetren injorohet ne heshtje, dhe fatura del pa zbritje. |
| invoice_discount_value | number, min 0, nullable | no | Vlera e zbritjes, e lexuar sipas `invoice_discount_type`: perqindje kur tipi eshte `percent`, e kufizuar ne 100; vlere me TVSH ne monedhen e fatures kur tipi eshte `amount`, e kufizuar ne totalin e fatures. Zeroja e le faturen pa zbritje. Baza e zbritjes eshte shuma e rreshtave. Tarifa `fee` mbetet jashte saj dhe nuk zbritet. Detajet dhe shembujt: faqja Zbritjet ne fature. |
| bank_account | integer, nullable | no | ID e nje llogarie bankare te ruajtur ne fature.al. |
| bank_account_iban | string, nullable | no | IBAN-i i llogarise. Alternative ndaj `bank_account`, kur mbani IBAN-in dhe jo ID-ne. |
| bankAccount | object, nullable | no | Llogaria bankare e shkruar e plote, kur nuk e keni ende ne fature.al. Ruhet si llogari e kompanise suaj, dhe nje IBAN qe ekziston tashme riperdoret ne vend qe te dyfishohet. |
| bankAccount.name | string, nullable | no | Emri i bankes. |
| bankAccount.iban | string, nullable | no | IBAN-i i llogarise. |
| bankAccount.currency | string, nullable | no | Monedha e llogarise. |
| bankAccount.swift | string, nullable | no | Kodi SWIFT/BIC i bankes. |
| bankAccount.notes | string, nullable | no | Shenime qe shoqerojne llogarine ne fature. |
| bankAccount.holder | string, nullable | no | Mbajtesi i llogarise. |
| fee | object, nullable | no | Tarife shtese qe shkon vecmas nga rreshtat e fatures. |
| fee.fee_type | string, nullable | no | Lloji i tarifes: OTHER, COMMISSION, PACK ose BOTTLE. |
| fee.fee_amount | number, nullable | no | Vlera e tarifes. |
| currency | string, nullable | no | Monedha e fatures. Pa te merret ALL. |
| exchange_rate | number, nullable | no | Sa leke vlen nje njesi e monedhes se fatures. Pa te, ose me nje vlere jo pozitive, merret 1. Per monedha qe vlejne me pak se nje lek, si JPY ose HUF, dergoni vlere nen 1. |
| due_date | string, nullable | no | Afati i pageses, ne formatin `YYYY-MM-DD`. |
| supply_start_date | string, nullable | no | Fillimi i periudhes se furnizimit, per fatura qe mbulojne nje interval. |
| supply_end_date | string, nullable | no | Fundi i periudhes se furnizimit. |
| reverse_charge | boolean, nullable | no | Ngarkesa e kundert: TVSH-ja deklarohet nga bleresi, jo nga shitesi. |
| notes | string, nullable | no | Shenime qe shfaqen ne fature. |
| periodic_invoice | boolean, nullable | no | Shenon nje fature qe i perket nje cikli te perseritur faturimi. |
| self_issue_type | string, one of DOMESTIC, ABROAD, OTHER, nullable | no | Vetefaturim. Kur e dergoni, `client` eshte shitesi. |
| doc_type | string, nullable | no | E ben faturen dokument korrigjues mbi nje fature tjeter jo-cash: `381` note krediti, `383` note debiti. Pa te, ose me `380`, fatura eshte e zakonshme. Nje note kerkon `original_invoice_iic`, dhe rreshtat qe dergoni jane rreshtat e korrigjimit, jo ata te fatures origjinale. Vlerat shkojne pozitive: eshte `doc_type` qe percakton drejtimin, jo shenja e numrave. |
| original_invoice_iic | string, nullable | no | IIC-ja e fatures jo-cash qe ky dokument korrigjon, ajo qe ju ktheu fatura origjinale. E detyrueshme kur `doc_type` eshte `381` ose `383`, dhe e papranueshme ne cdo rast tjeter. Origjinali duhet te jete fature jo-cash e fiskalizuar, e paanuluar dhe ende e korrigjueshme. Per te kthyer nje fature te plote perdorni endpoint-in e anulimit, jo nje note krediti. |
Responses
201 Created
| Field | Type | Description |
|---|---|---|
| status | boolean | |
| data | object | |
| data.invoice | object | |
| data.invoice.id | integer | Fatureal invoice id. Store it next to your own internalId |
| data.invoice.number | string, nullable | Fiscal invoice number |
| data.invoice.iic | string, nullable | IIC / NSLF |
| data.invoice.fic | string, nullable | FIC / NIVF. Null while the invoice waits for a deferred fiscalisation |
| data.invoice.tcrCode | string, nullable | TCR code of the fiscal device that issued it |
| data.invoice.businessCode | string, nullable | Business unit code the invoice was issued under |
| data.invoice.operatorCode | string, nullable | Operator code the invoice was issued under |
| data.invoice.fiscalizedAt | string | Creation timestamp (YYYY-MM-DD HH:MM:SS) |
| data.invoice.verifyURL | string, nullable | Government verification URL, the one behind the QR code |
| data.invoice.pdf | string | Direct download URL for the document. On an e-invoice that already has an EIC this points at the official e-invoice PDF instead of ours |
| data.invoice.eic | string, nullable | EIC. The key is present only on an e-invoice that already has one, so treat it as absent rather than null on every other invoice |
400 Te dhena te paplota ose te pavlefshme. `errors` thote sakte cfare duhet plotesuar.
| Field | Type | Description |
|---|---|---|
| status | boolean | Always false. A successful response carries `status: true` and a `data` object instead |
| message | string | The exception message. Empty when the failure carries no exception of its own |
| errors | array | Messages to show the operator or to log. Absent when the failure has nothing to add beyond `message` |
403 Abonimi ka mbaruar, ose veprimi nuk lejohet per kete llogari.
| Field | Type | Description |
|---|---|---|
| status | boolean | Always false. A successful response carries `status: true` and a `data` object instead |
| message | string | The exception message. Empty when the failure carries no exception of its own |
| errors | array | Messages to show the operator or to log. Absent when the failure has nothing to add beyond `message` |
409 Nje fature me kete `internalId` po procesohet ose ekziston tashme per kete vit.
| Field | Type | Description |
|---|---|---|
| status | boolean | Always false. A successful response carries `status: true` and a `data` object instead |
| message | string | The exception message. Empty when the failure carries no exception of its own |
| errors | array | Messages to show the operator or to log. Absent when the failure has nothing to add beyond `message` |
422 Te dhenat nuk kaluan validimin. Kjo pergjigje perdor fushen `success`, jo `status`. `internalId` qe mungon kthehet me zarfin standard te gabimit.
| Field | Type | Description |
|---|---|---|
| success | boolean | Always false |
| message | string | A single summary line, the same for every validation failure |
| errors | object | The failing fields, each with the messages for it. Dotted keys point into nested objects and array items, e.g. `lines.0.quantity` |
429 Kufiri i kerkesave u arrit. Kufiri per endpoint kthen zarfin standard te gabimit; kufiri i pergjithshem kthen vetem `message` bashke me header-in `Retry-After`.
| Field | Type | Description |
|---|---|---|
| status | boolean | Always false. A successful response carries `status: true` and a `data` object instead |
| message | string | The exception message. Empty when the failure carries no exception of its own |
| errors | array | Messages to show the operator or to log. Absent when the failure has nothing to add beyond `message` |
500 Gabim i papritur ne server.
| Field | Type | Description |
|---|---|---|
| status | boolean | Always false. A successful response carries `status: true` and a `data` object instead |
| message | string | The exception message. Empty when the failure carries no exception of its own |
| errors | array | Messages to show the operator or to log. Absent when the failure has nothing to add beyond `message` |
503 Sherbimi i fiskalizimit eshte i paarritshem. Fatura ruhet dhe fiskalizohet automatikisht me vone.
| Field | Type | Description |
|---|---|---|
| status | boolean | Always false. A successful response carries `status: true` and a `data` object instead |
| message | string | The exception message. Empty when the failure carries no exception of its own |
| errors | array | Messages to show the operator or to log. Absent when the failure has nothing to add beyond `message` |
Example request
curl -X POST 'https://fature.al/api/v1/invoice/noncash' \
-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": "NONCASH-2026-000412",
"client": {
"internal_id": 1,
"name": "Alpha SHPK",
"id": {
"id": "L62221018T"
},
"address": "1 Example Street",
"city": "Berlin",
"country": "US"
},
"lines": [
{
"product_name": "Kafe",
"product_code": "KAF-001",
"unit": "cope",
"quantity": 2,
"price": 150,
"total": 300,
"discount": 10,
"vat": 20,
"vat_exempt_type": "EXPORT_OF_GOODS"
}
],
"invoice_discount_type": "percent",
"invoice_discount_value": 10,
"bank_account": 42,
"bank_account_iban": "AL35202111090000000001234567",
"bankAccount": {
"name": "BKT",
"iban": "AL35202111090000000001234567",
"currency": "ALL",
"swift": "NCBAALTX",
"notes": "notes",
"holder": "Ei3 Software Solution shpk"
},
"fee": {
"fee_type": "PACK",
"fee_amount": 50
},
"currency": "ALL",
"exchange_rate": 100.5,
"due_date": "2026-10-04",
"supply_start_date": "2026-09-01",
"supply_end_date": "2026-09-30",
"reverse_charge": false,
"notes": "Faleminderit per blerjen",
"periodic_invoice": false,
"self_issue_type": "DOMESTIC",
"doc_type": 381,
"original_invoice_iic": "8FE72E2ACD1C500A83F8C89B4E2E3E1D"
}'
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/v1/invoice/noncash', [
'internalId' => 'NONCASH-2026-000412',
'client' => [
'internal_id' => 1,
'name' => 'Alpha SHPK',
'id' => [
'id' => 'L62221018T',
],
'address' => '1 Example Street',
'city' => 'Berlin',
'country' => 'US',
],
'lines' => [
[
'product_name' => 'Kafe',
'product_code' => 'KAF-001',
'unit' => 'cope',
'quantity' => 2,
'price' => 150,
'total' => 300,
'discount' => 10,
'vat' => 20,
'vat_exempt_type' => 'EXPORT_OF_GOODS',
],
],
'invoice_discount_type' => 'percent',
'invoice_discount_value' => 10,
'bank_account' => 42,
'bank_account_iban' => 'AL35202111090000000001234567',
'bankAccount' => [
'name' => 'BKT',
'iban' => 'AL35202111090000000001234567',
'currency' => 'ALL',
'swift' => 'NCBAALTX',
'notes' => 'notes',
'holder' => 'Ei3 Software Solution shpk',
],
'fee' => [
'fee_type' => 'PACK',
'fee_amount' => 50,
],
'currency' => 'ALL',
'exchange_rate' => 100.5,
'due_date' => '2026-10-04',
'supply_start_date' => '2026-09-01',
'supply_end_date' => '2026-09-30',
'reverse_charge' => false,
'notes' => 'Faleminderit per blerjen',
'periodic_invoice' => false,
'self_issue_type' => 'DOMESTIC',
'doc_type' => 381,
'original_invoice_iic' => '8FE72E2ACD1C500A83F8C89B4E2E3E1D',
]);
$data = $response->json();
use GuzzleHttp\Client;
$client = new Client();
$response = $client->request('POST', 'https://fature.al/api/v1/invoice/noncash', [
'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' => 'NONCASH-2026-000412',
'client' => [
'internal_id' => 1,
'name' => 'Alpha SHPK',
'id' => [
'id' => 'L62221018T',
],
'address' => '1 Example Street',
'city' => 'Berlin',
'country' => 'US',
],
'lines' => [
[
'product_name' => 'Kafe',
'product_code' => 'KAF-001',
'unit' => 'cope',
'quantity' => 2,
'price' => 150,
'total' => 300,
'discount' => 10,
'vat' => 20,
'vat_exempt_type' => 'EXPORT_OF_GOODS',
],
],
'invoice_discount_type' => 'percent',
'invoice_discount_value' => 10,
'bank_account' => 42,
'bank_account_iban' => 'AL35202111090000000001234567',
'bankAccount' => [
'name' => 'BKT',
'iban' => 'AL35202111090000000001234567',
'currency' => 'ALL',
'swift' => 'NCBAALTX',
'notes' => 'notes',
'holder' => 'Ei3 Software Solution shpk',
],
'fee' => [
'fee_type' => 'PACK',
'fee_amount' => 50,
],
'currency' => 'ALL',
'exchange_rate' => 100.5,
'due_date' => '2026-10-04',
'supply_start_date' => '2026-09-01',
'supply_end_date' => '2026-09-30',
'reverse_charge' => false,
'notes' => 'Faleminderit per blerjen',
'periodic_invoice' => false,
'self_issue_type' => 'DOMESTIC',
'doc_type' => 381,
'original_invoice_iic' => '8FE72E2ACD1C500A83F8C89B4E2E3E1D',
],
]);
$data = json_decode((string) $response->getBody(), true);
const response = await fetch('https://fature.al/api/v1/invoice/noncash', {
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": "NONCASH-2026-000412",
"client": {
"internal_id": 1,
"name": "Alpha SHPK",
"id": {
"id": "L62221018T"
},
"address": "1 Example Street",
"city": "Berlin",
"country": "US"
},
"lines": [
{
"product_name": "Kafe",
"product_code": "KAF-001",
"unit": "cope",
"quantity": 2,
"price": 150,
"total": 300,
"discount": 10,
"vat": 20,
"vat_exempt_type": "EXPORT_OF_GOODS"
}
],
"invoice_discount_type": "percent",
"invoice_discount_value": 10,
"bank_account": 42,
"bank_account_iban": "AL35202111090000000001234567",
"bankAccount": {
"name": "BKT",
"iban": "AL35202111090000000001234567",
"currency": "ALL",
"swift": "NCBAALTX",
"notes": "notes",
"holder": "Ei3 Software Solution shpk"
},
"fee": {
"fee_type": "PACK",
"fee_amount": 50
},
"currency": "ALL",
"exchange_rate": 100.5,
"due_date": "2026-10-04",
"supply_start_date": "2026-09-01",
"supply_end_date": "2026-09-30",
"reverse_charge": false,
"notes": "Faleminderit per blerjen",
"periodic_invoice": false,
"self_issue_type": "DOMESTIC",
"doc_type": 381,
"original_invoice_iic": "8FE72E2ACD1C500A83F8C89B4E2E3E1D"
})
});
const data = await response.json();
Example response
{
"status": true,
"data": {
"invoice": {
"id": 1,
"number": "number",
"iic": "iic",
"fic": "fic",
"tcrCode": "tcrCode",
"businessCode": "businessCode",
"operatorCode": "operatorCode",
"fiscalizedAt": "fiscalizedAt",
"verifyURL": "https://example.com",
"pdf": "pdf",
"eic": "eic"
}
}
}
{
"status": true,
"message": "Hello there",
"errors": [
"errors"
]
}
{
"status": true,
"message": "Hello there",
"errors": [
"errors"
]
}
{
"status": true,
"message": "Hello there",
"errors": [
"errors"
]
}
{
"success": true,
"message": "Hello there",
"errors": []
}
{
"status": true,
"message": "Hello there",
"errors": [
"errors"
]
}
{
"status": true,
"message": "Hello there",
"errors": [
"errors"
]
}
{
"status": true,
"message": "Hello there",
"errors": [
"errors"
]
}