Zbritjet në faturë
Një faturë e lëshuar nga API-ja zbritet në dy mënyra, dhe të dyja mund të zbatohen mbi të njëjtin dokument:
| Zbritja | Fushat | Si lexohet vlera | Ku zbatohet |
|---|---|---|---|
| mbi të gjithë faturën | invoice_discount_type me invoice_discount_value |
përqindje ose vlerë fikse me TVSH, sipas tipit | mbi shumën e rreshtave, e shpërndarë mbi normat e TVSH-së |
| mbi një rresht | lines[].discount |
gjithmonë përqindje, nga 0 në 100 | mbi çmimin e njësisë së atij rreshti |
Kur të dyja dërgohen bashkë, së pari zbritet rreshti dhe pastaj zbritja e faturës zbatohet mbi totalin që del.
Zbritja mbi të gjithë faturën#
| Fusha | Vlerat | Kuptimi |
|---|---|---|
invoice_discount_type |
percent ose amount |
si lexohet vlera |
invoice_discount_value |
numër jo negativ | sa zbritet |
Punojnë vetëm në çift. Njëra pa tjetrën, ose një vlerë 0, e lë faturën pa zbritje dhe nuk kthen
gabim, prandaj mos prisni një 422 për të kuptuar se zbritja nuk u zbatua: lexoni
amount.discount në përgjigje.
| Tipi | Si lexohet vlera | Kufiri |
|---|---|---|
percent |
përqindje mbi totalin me TVSH | mbi 100 lexohet si 100 |
amount |
vlerë me TVSH, në monedhën e faturës | mbi totalin lexohet si totali |
amount është gjithmonë në monedhën e faturës, jo në lekë. Një faturë në euro me
invoice_discount_value: 50 zbritet 50 euro.
Shembull me përqindje#
Një faturë prej 300 lekësh me TVSH 20 dhe një zbritje prej 10 për qind:
curl -X POST 'https://fature.al/api/v1/invoice/cash' \
-H 'Authorization: Bearer TOKEN_I_JUAJ' \
-H 'Content-Type: application/json' \
-d '{
"internalId": "ARK-2026-0101",
"payment_method": "BANKNOTE",
"invoice_discount_type": "percent",
"invoice_discount_value": 10,
"lines": [
{ "product_name": "Kafe", "product_code": "KAF-001", "unit": "copë",
"quantity": 2, "price": 150, "total": 300, "vat": 20 }
]
}'
| Vlera | Para zbritjes | Pas zbritjes |
|---|---|---|
| Totali me TVSH | 300.00 | 270.00 |
| Baza pa TVSH | 250.00 | 225.00 |
| TVSH | 50.00 | 45.00 |
Klienti paguan 30 lekë më pak, ndërsa amount.discount në përgjigje është 25.00. Kjo nuk është
mospërputhje: discount mban pjesën pa TVSH të zbritjes, sepse ashtu shkon zbritja në dokumentin
fiskal dhe në UBL. Zbritja që sheh klienti është diferenca në amount.gross.
Fatura me disa norma TVSH-je#
Zbritja shpërndahet mbi grupet e TVSH-së sipas peshës së secilit në total, dhe TVSH-ja
rillogaritet mbi vlerën e ulur të secilit grup. Një faturë me një rresht 1,000 me TVSH 20 dhe një
rresht 500 me TVSH 6, e zbritur me amount: 300:
| Norma | Totali para | Pjesa e zbritjes | Baza pas | TVSH pas |
|---|---|---|---|---|
| 20 | 1,000.00 | 200.00 | 666.67 | 133.33 |
| 6 | 500.00 | 100.00 | 377.36 | 22.64 |
| Gjithsej | 1,500.00 | 300.00 | 1,044.03 | 155.97 |
Përgjigja kthen amount.gross 1,200.00 dhe amount.discount 261.00, që është pjesa pa TVSH e
atyre 300 lekëve.
Tarifa mbetet jashtë zbritjes#
Në faturat jo-cash, fee nuk hyn në bazën e zbritjes. Zbritet shuma e rreshtave, dhe tarifa i
shtohet totalit të ulur. Një faturë me rreshta 1,000, tarifë 50 dhe zbritje 10 për qind zbret 100
lekë, jo 105, dhe totali del 950.
Zbritja mbi një rresht#
lines[].discount është përqindja e zbritjes së atij rreshti, nga 0 në 100. Fusha është
opsionale: një body që nuk e përmend fare, ose e dërgon bosh, kalon si më parë dhe nuk kthen
kurrë gabim për shkak të saj. Kontrolli më poshtë prek vetëm rreshtat që dërgojnë një zbritje.
price mbetet çmimi i plotë i njësisë dhe total vjen tashmë i ulur, sepse ashtu e mban zbritjen
dokumenti fiskal: përqindje mbi çmimin, bashkë me një total tashmë të zbritur. Rregulli i vetëm që
duhet mbajtur është ky:
total = price * quantity * (100 - discount) / 100
Një total që nuk përputhet me atë shifër e refuzon kërkesën me 400, dhe errors tregon cili
është rreshti dhe cila vlerë pritej. total nuk llogaritet në vend tuaj: një total i barabartë
me price * quantity nuk dallohet nga një rresht që e ka zbritjen tashmë brenda çmimit, dhe
zbatimi i saj përsëri do ta zbriste dy herë një faturë që pastaj fiskalizohet.
Një kafe 150 lekë me TVSH 20, dy copë, e zbritur 10 për qind:
curl -X POST 'https://fature.al/api/v1/invoice/cash' \
-H 'Authorization: Bearer TOKEN_I_JUAJ' \
-H 'Content-Type: application/json' \
-d '{
"internalId": "ARK-2026-0102",
"payment_method": "BANKNOTE",
"lines": [
{ "product_name": "Kafe", "product_code": "KAF-001", "unit": "copë",
"quantity": 2, "price": 150, "discount": 10, "total": 270, "vat": 20 },
{ "product_name": "Ujë", "product_code": "UJE-01", "unit": "copë",
"quantity": 1, "price": 100, "total": 100, "vat": 20 }
]
}'
| Vlera e rreshtit | Pa zbritje | Me 10 për qind |
|---|---|---|
| Totali me TVSH | 300.00 | 270.00 |
| Baza pa TVSH | 250.00 | 225.00 |
| TVSH | 50.00 | 45.00 |
Në përgjigje, ai rresht kthen discount_rate 10, unitPrice 135 dhe total 270. discount kthen
25.00, sepse si te zbritja e faturës mban pjesën pa TVSH.
Një përqindje jashtë intervalit 0 deri 100 refuzohet me 422.
Të dyja mbi të njëjtën faturë#
Kur një faturë mban zbritje rreshti dhe zbritje mbi të gjithë faturën, radha është e fiksuar: së pari zbriten rreshtat, pastaj zbritja e faturës zbatohet mbi totalin që del prej tyre. Kafeja e mësipërme, e zbritur edhe 10 për qind mbi faturën, jep 270 dhe pastaj 243.
Ku pranohet#
| Endpoint-i | Mbi faturën | Mbi rreshtin |
|---|---|---|
POST /invoice/cash |
po | po |
POST /invoice/noncash |
po | po |
POST /invoice/e-invoice |
po | po |
POST /invoice/order |
jo, shihni më poshtë | po |
POST /invoice/summary |
po | vjen nga porositë |
POST /invoice/bulk-noncash |
po, brenda çdo fature në invoices |
po |
Porosia nuk zbritet e gjitha. Përmbledhësja i kopjon rreshtat nga porositë, kështu që një zbritje mbi të gjithë porosinë nuk kalon dot tek ajo dhe tavolina do të paguante më shumë se sa tregoi porosia. Ajo vendoset mbi përmbledhësen. Zbritja për rresht kalon: ruhet mbi rreshtin e porosisë dhe përmbledhësja e merr bashkë me të, prandaj nuk dërgohet përsëri mbi përmbledhësen.
Zbritja nuk varet nga konfigurimet e kompanisë në fature.al: cilësimet e ekranit të faturës ndikojnë vetëm te forma që plotësohet me dorë, ndërsa API-ja e zbaton zbritjen sa herë që e dërgoni.
Anulimi i një fature me zbritje#
Një faturë me zbritje mbi të gjithë faturën anulohet vetëm e plotë. Zbritja është shpërndarë mbi të gjitha normat e TVSH-së së dokumentit, kështu që anulimi i vetëm disa rreshtave do ta prishte TVSH-në.
curl -X POST 'https://fature.al/api/v1/invoice/cancel/40312' \
-H 'Authorization: Bearer TOKEN_I_JUAJ'
Një kërkesë me lines mbi një faturë të tillë refuzohet me 422 dhe me shpjegimin përkatës në
errors.
Zbritje pas faturimit#
Kur fatura ka dalë dhe zbritja bihet dakord më pas, ajo nuk vendoset mbi faturën: lëshohet një
notë krediti për diferencën, që është dokument më vete dhe i lidhur me origjinalin. Rruga e plotë
është te Fatura elektronike, dhe për faturat jo-cash e
njëjta gjë bëhet me doc_type: "381" bashkë me original_invoice_iic.
Çfarë kthehet në përgjigje#
Zbritja nuk kthehet nga endpoint-i i lëshimit, i cili kthen faturën fiskale (id, number, iic,
fic). Shihet te GET /invoice/{id}/details:
{
"amount": {
"currency": "ALL",
"gross": 270.00,
"net": 225.00,
"vat": 45.00,
"discount": 25.00,
"discount_all": 25.00
}
}
discount është zbritja mbi të gjithë faturën, pa TVSH. discount_all është e njëjta vlerë e
kthyer në lekë, dhe ndryshon nga discount vetëm kur fatura është në monedhë të huaj. Zbritjet e
rreshtave nuk hyjnë këtu: secila qëndron mbi rreshtin e vet, te lines[].discount_rate dhe
lines[].discount.
Regjistrimi është falas.
Regjistrohu në fature.al