Taksat dhe rrumbullakimi
Kategoritë tatimore A, C, D dhe E, dhe si llogariten grupet e taksave e totalet nga çmime me TVSH të përfshirë.
Fiskaliza i llogarit vetë të gjitha shumat. Ti dërgon çmime njësie dhe një kategori tatimore për çdo rresht; gjithçka tjetër nxirret.
Totalet janë rezultat, jo input
subtotal_cents, total_cents dhe tax_groups shfaqen te komanda dhe te
kuponi pasi Fiskaliza i ka llogaritur. Një shitje ka nevojë vetëm për çmime,
sasi dhe një kategori tatimore për çdo rresht.
Kategoritë tatimore
Këto janë kategoritë e ATK-së dhe të vetmet norma që shërbimi pranon:
| Kategoria | Norma | Kuptimi |
|---|---|---|
A | 0% | E përjashtuar |
C | 0% | Me normë zero |
D | 8% | E reduktuar |
E | 18% | Standarde |
A dhe C janë të dyja 0% por mbeten të dallueshme në grupet e taksave.
Mos i bashko dhe mos i zëvendëso me njëra-tjetrën.
Në kupon këto shtypen si TVSH D 8% dhe TVSH E 18%.
Çmimet janë me taksë të përfshirë
unit_price_cents është çmimi bruto i njësisë, në cent të plotë.
EUR 1.18 -> unit_price_cents: 118Kjo do të thotë se taksa nxirret nga brenda çmimit, jo shtohet mbi të.
Si llogaritet një shitje
Shuma e rreshtit
Çmimi shumëzohet me sasinë dhe rrumbullakohet half up në cent të plotë. Pastaj zbritet zbritja e të gjithë rreshtit.
Zbritja nuk mund ta kalojë subtotalin e llogaritur të rreshtit.
Grumbullimi për kategori
Shumat bruto të zbritura mblidhen për çdo kategori tatimore.
Taksa dhe neto
Për çdo kategori:
tax = round_half_up(gross * rate / (100 + rate))
net = gross - taxPër një kafe prej 118 centësh në kategorinë E (18%):
tax = round_half_up(118 * 18 / 118) = 18
net = 118 - 18 = 100Rezultati shfaqet si tax_groups, ku çdo grup ka category,
taxable_cents dhe tax_cents.
Sasitë
quantity është numër pozitiv me maksimum tre shifra dhjetore; analizohet
saktësisht në një të mijtat e plota.
{ "quantity": 1 }
{ "quantity": 0.25 }
{ "quantity": 1.001 }Parazgjedhja është 1. Njësia (unit) ka parazgjedhje piece dhe type ka
parazgjedhje GOOD.
Artikujt e njëjtë bashkohen vetvetiu
Rreshtat që përputhen në emër, njësi, tip, kategori takse dhe çmim njësie bashkohen në një rresht të vetëm kuponi me sasinë dhe zbritjet e mbledhura, duke ruajtur ID-në dhe pozitën e rreshtit të parë. Lexo artikujt e komandës për të mësuar cilat ID mbijetuan — një kthim i referohet atyre, jo atyre që dërgove.
Taksa te kthimet
Kthimet nuk e rillogaritin taksën nga e para. Ato alokojnë nga bilancet e mbetura origjinale të kategorisë.
Kthimi përfundimtar kundrejt një shitjeje konsumon shumat e mbetura ekzakte dhe i rregullon qindarkat e rrumbullakimit. Prandaj një seri kthimesh të pjesshme mblidhet gjithmonë saktësisht në shitjen origjinale, pa mbetje.
Shih Kthimet dhe anulimet.
Shitjet me total zero
Vetëm sale_type: "FREE_SUPPLY" lejohet të ketë total zero — dhe duhet ta
ketë. Çdo lloj tjetër shitjeje duhet të ketë total pozitiv.
{
"external_id": "gift_123",
"sale_type": "FREE_SUPPLY",
"occurred_at": "2026-08-25T10:00:00+02:00",
"items": [
{ "name": "Coffee", "unit_price_cents": 118, "discount_cents": 118, "tax_category": "E" }
]
}Operacionet me total zero nuk kanë fare rreshta pagese.
Pagesat
payments ndjek rregulla të thjeshta:
- Mënyra e pagesës është gjithmonë e shprehur.
- Me një pagesë, mungesa e
amount_centsnënkupton totalin e llogaritur. - Me dy ose më shumë pagesa, çdo
amount_centsështë i detyrueshëm, pozitiv, dhe shuma duhet të japë saktësisht totalin. - Një total jozero kërkon pagesa.
- Një operacion me total zero nuk ka rreshta pagese; edhe një pagesë e vetme pa shumë normalizohet në listë bosh.
Tipet e lejuara: CASH, CREDIT_CARD, DEBIT_CARD, BANK_ACCOUNT, CHEQUE,
SMS, VOUCHER, CRYPTO_CURRENCY, OTHER.
Pagesat me shumë zero refuzohen
amount_cents duhet të jetë rreptësisht pozitiv kur dërgohet.