fature.al është platforma e faturimit dhe fiskalizimit për bizneset në Shqipëri. Hap një llogari
Skip to content
fature.al API Menu

Fatura elektronike

Një faturë elektronike (e-faturë) shkon në platformën e e-faturave, jo vetëm në fiskalizim. Kjo sjell dy gjëra që faturat e tjera nuk i kanë: blerësi duhet të jetë i identifikuar me NIPT dhe me adresë të plotë, dhe dokumenti duhet të thotë se çfarë lloji është.

Lëshohet me POST /api/v1/invoice/e-invoice.

Blerësi duhet të jetë i plotë#

Blerësi shkon i plotë në platformën e e-faturave, prandaj adresa dhe qyteti janë të nevojshme. Mund t'i dërgoni në kërkesë si client.address dhe client.city, ose t'i keni ruajtur më parë te klienti në fature.al. Kur mungon njëra, kërkesa refuzohet me 400 dhe fusha errors thotë saktë çfarë duhet plotësuar.

Kur klienti ekziston tashmë në fature.al, dërgoni vetëm client.internal_id. Atëherë klienti gjendet me të dhe fushat e tjera nuk lexohen fare:

{ "client": { "internal_id": 8812 } }

Ndryshe duhen client.nuis, client.name dhe client.country. country është kod ISO 3166-1 alpha-3, pra ALB, RKS, USA.

doc_type dhe process#

Të dyja janë të detyrueshme; pa to kërkesa refuzohet me 422. process shkon si ProfileID në dokumentin UBL, dhe doc_type si lloji i dokumentit.

Dokumenti doc_type process Kërkon original_invoice_iic
Faturë shitjeje 380 P1 jo
Notë krediti 381 P9 po
Notë debiti 383 P9 po

Për një shitje të zakonshme dërgoni 380 me P1. Një notë krediti ose një notë debiti korrigjon një faturë tjetër, prandaj dërgon 381 ose 383 me P9, bashkë me original_invoice_iic. Për llojet e tjera të dokumentit ajo fushë nuk pranohet.

Për të kthyer një faturë të plotë mos lëshoni notë krediti. Përdorni endpoint-in e anulimit, i cili e shënon origjinalin si të kthyer.

Lista e plotë e vlerave që pranohen për të dyja fushat është në faqen e endpoint-it.

Nota krediti dhe nota debiti#

Të dyja korrigjojnë një faturë që është regjistruar tashmë, dhe të dyja lëshohen nga i njëjti endpoint si një faturë e zakonshme. Ndryshimi është drejtimi: nota krediti e ul vlerën që blerësi ju detyrohet, nota debiti e rrit.

Të dyja kërkojnë original_invoice_iic, IIC-në që ju ktheu fatura origjinale. Ajo shkon si BillingReference në dokumentin UBL dhe si referencë korrigjimi në regjistrimin te CIS-i, kështu që blerësi dhe CIS-i e dinë saktë cilën faturë po korrigjoni. Pa të kërkesa refuzohet me 422.

Rreshtat që dërgoni janë rreshtat e korrigjimit, jo rreshtat e faturës origjinale. Dërgoni vetëm atë që po korrigjoni, me vlerën e diferencës.

Nota krediti: zbritje pas faturimit#

Fatura 412/2026 doli 12,000 lekë. I zbriten 2,000 lekë sepse shërbimi u ndërpre për një muaj. Lëshoni një notë krediti për diferencën, jo për të gjithë faturën:

curl -X POST 'https://fature.al/api/v1/invoice/e-invoice' \
  -H 'Authorization: Bearer TOKEN_I_JUAJ' \
  -H 'Content-Type: application/json' \
  -d '{
    "internalId": "NK-2026-000037",
    "process": "P9",
    "doc_type": "381",
    "original_invoice_iic": "8FE72E2ACD1C500A83F8C89B4E2E3E1D",
    "payment_method": "TRANSFER",
    "client": {
      "nuis": "L62221018T",
      "name": "Ei3 Software Solution shpk",
      "address": "Rruga e Kavajës 12",
      "city": "Tiranë",
      "country": "ALB"
    },
    "lines": [
      {
        "product_name": "Zbritje për ndërprerje shërbimi",
        "product_code": "ABO-01",
        "unit": "Copë",
        "unit_code": "C62",
        "quantity": 1,
        "price": 2000,
        "total": 2000,
        "vat": 20
      }
    ]
  }'

Vlerat dërgohen pozitive. Është doc_type=381 që e bën dokumentin zbritje, jo shenja e numrave.

Nota debiti: vlerë e nënfaturuar#

E njëjta faturë doli 2,000 lekë më pak sepse një orë pune nuk u llogarit. Një notë debiti e shton diferencën mbi faturën origjinale:

curl -X POST 'https://fature.al/api/v1/invoice/e-invoice' \
  -H 'Authorization: Bearer TOKEN_I_JUAJ' \
  -H 'Content-Type: application/json' \
  -d '{
    "internalId": "ND-2026-000012",
    "process": "P9",
    "doc_type": "383",
    "original_invoice_iic": "8FE72E2ACD1C500A83F8C89B4E2E3E1D",
    "payment_method": "TRANSFER",
    "client": {
      "nuis": "L62221018T",
      "name": "Ei3 Software Solution shpk",
      "address": "Rruga e Kavajës 12",
      "city": "Tiranë",
      "country": "ALB"
    },
    "lines": [
      {
        "product_name": "Orë pune shtesë",
        "product_code": "SRV-02",
        "unit": "Orë",
        "unit_code": "HUR",
        "quantity": 2,
        "price": 1000,
        "total": 2000,
        "vat": 20
      }
    ]
  }'

Përgjigja është e njëjta si e një fature: nota merr id, number, iic, fic dhe eic të vetat. Është një dokument më vete, jo një ndryshim mbi faturën e vjetër, dhe origjinali mbetet i vlefshëm ashtu siç u lëshua.

Cilin të zgjidhni#

Situata Dokumenti
Blerësi kthen mallin ose anulon të gjithë porosinë Anulim, jo notë krediti
Zbritje, mall i dëmtuar, shërbim i pakryer pjesërisht Notë krediti, 381
Fatura doli më pak se sa duhej Notë debiti, 383
Gabim në NIPT ose në emrin e blerësit Anulim, pastaj faturë e re

Anulimi ndryshon nga të dyja: ai e shënon origjinalin si të kthyer, ndërsa një notë e lë faturën të hapur dhe i qëndron përkrah si dokument korrigjues.

Rreshtat#

Çdo rresht kërkon product_name, product_code, unit, unit_code, quantity, price dhe total.

unit është teksti që lexon njeriu, ndërsa unit_code është kodi që mban dokumenti fiskal. Kodin e jep thirrësi dhe nuk ka vlerë të parazgjedhur. Vlerat më të përdorura janë C62 për copë, MTK për metër katror, LTR për litër dhe KGM për kilogram. E4 është kilogrami bruto dhe DT toni i thatë, prandaj për peshën e zakonshme dërgoni KGM ose TNE.

vat pranon 0, 6, 10 ose 20. Kur një rresht është i përjashtuar nga TVSH-ja, dërgoni vat_exempt_type me një nga TYPE_1, TYPE_2, EXPORT_OF_GOODS ose TAX_FREE.

Monedha dhe kursi#

Kur fatura është në monedhë të huaj, dërgoni currency bashkë me exchange_rate. exchange_rate është sa lekë vlen një njësi e monedhës së faturës. Pa të, ose me një vlerë jo pozitive, merret 1.

Për monedha që vlejnë më pak se një lek, si JPY ose HUF, dërgoni vlerë nën 1. Kursi shkon në drejtimin lek për njësi, jo anasjelltas.

Çfarë ju kthehet#

Përgjigja e suksesshme mban id, number, iic, fic, verifyURL dhe pdf.

eic është i pranishëm vetëm te një e-faturë që e ka marrë tashmë, prandaj trajtojeni si mungesë të çelësit dhe jo si null. Kur ekziston, pdf tregon PDF-in zyrtar të e-faturës, jo tonin.

fic mbetet null derisa fiskalizimi i shtyrë të kryhet vetë. Kjo ndodh kur CIS-i nuk u arrit në çastin e lëshimit: fatura ruhet dhe kërkesa kthen 200 me fic: null. Një 503 është rasti tjetër: fatura nuk u ruajt, riprovoni me të njëjtin internalId.

Shkarkimi i PDF-it me EIC#

curl 'https://fature.al/api/v1/invoice/print-eic/2e9b6f31-d712-4c45-8cc0-9faf24c805a3' \
  -H 'Authorization: Bearer TOKEN_I_JUAJ' \
  -o fatura.pdf

Kujdes me një EIC që nuk gjendet: përgjigja është teksti Document not found. me status 200 dhe Content-Type: text/html, jo një PDF. Kontrolloni Content-Type para se ta ruani skedarin.

Gabimet që hasen më shpesh#

Statusi Kuptimi
400 Të dhëna të paplota. errors thotë saktë çfarë mungon, zakonisht adresa ose qyteti i blerësit. Fatura nuk u ruajt.
403 Abonimi ka mbaruar, ose llogaria nuk ka të drejtën EINVOICE.
409 Një kërkesë me këtë internalId është ende në proces. Prisni pak dhe riprovoni, ose lexoni gjendjen me GET /invoice/details/{internalId}.
422 Të dhënat nuk kaluan validimin. Kjo përgjigje përdor fushën success, jo status.
503 Shërbimi i fiskalizimit nuk u arrit dhe fatura nuk u ruajt. Riprovoni me të njëjtin internalId.

Formati i gabimit është i njëjtë kudo përveç 422, i cili kthen success: false bashkë me errors të ndarë sipas fushës. Një internalId që mungon kthehet me formatin standard, jo me atë të validimit.

Regjistrimi është falas.

Regjistrohu në fature.al