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

Përditëso një produkt

PUT /api/v1/products/{id} Requires authentication Rate limited by the `api-global` limiter v1

Send a bearer token, plus the X-Client-Id and X-Client-Secret headers in the Authorization header.

Përditëson një produkt ekzistues dhe kthen të dhënat e tij pas ndryshimit.

Body i kërkesës ka të njëjtin format dhe të njëjtat fusha të detyrueshme si POST /products, me të njëjtat rregulla për unit_code dhe vat_rate.

  • Emri ose kodi i ri nuk mund të përkojë me atë të një produkti tjetër; refuzohet me 409.
  • Ndryshimi i çmimit nuk prek faturat e lëshuara: ato mbajnë çmimin me të cilin u shitën.
  • Një kërkesë e dytë nga i njëjti token, ndërsa e para nuk ka mbaruar, refuzohet menjëherë me 429.

URL-ja e plotë: https://fature.al/api/v1/products/{id}

Path parameters

Name Tipi E detyrueshme Përshkrimi
id integer yes Id-ja e produktit në fature.al.

Body parameters

Name Tipi E detyrueshme Përshkrimi
code string, maxLength 255, nullable no Kodi i produktit, unik brenda kompanisë. Pa të gjenerohet vetë.
name string, maxLength 255 yes Emri i produktit. I detyrueshëm.
description string, maxLength 255, nullable no Përshkrimi. Pa të merret emri.
unit_code string yes Kodi i njësisë matëse që mban dokumenti fiskal, p.sh. `XPP` copë, `KGM` kg, `LTR` litër, `HUR` orë, `MTK` m². I detyrueshëm; njësia si tekst derivohet prej tij dhe nuk dërgohet. Kuptimi i të 49 kodeve është te hyrja, "Kodet e njësive matëse".
last_price number, min 0 yes Çmimi i shitjes për njësi. I detyrueshëm.
cost_price number, min 0, nullable no Çmimi i blerjes për njësi.
vat_rate string, one of 0, 6, 10, 20 yes Norma e TVSH-së në përqindje: `0`, `6`, `10` ose `20`. E detyrueshme.
vat_exempt_type string, one of TYPE_1, TYPE_2, EXPORT_OF_GOODS, TAX_FREE, nullable no Lloji i përjashtimit nga TVSH-ja, për një produkt të përjashtuar: `TYPE_1`, `TYPE_2`, `EXPORT_OF_GOODS` ose `TAX_FREE`.
currency string, maxLength 10, nullable no Monedha e çmimit, kod ISO 4217; pa të merret ALL.
service boolean no `true` për një shërbim, `false` për një artikull që mbahet në inventar. Pa të merret `true`.
id_category integer, nullable no Id-ja e kategorisë, nga `GET /product/categories`.

Përgjigjet

200 Produkti pas ndryshimit te `product`.

Field Tipi Përshkrimi
status boolean
data object
data.product object
data.product.id integer Id-ja e produktit në fature.al
data.product.code string, nullable Kodi unik i produktit
data.product.name string Emri i produktit
data.product.description string, nullable Përshkrimi i produktit
data.product.unit string, nullable Njësia matëse, e nxjerrë nga `unit_code`
data.product.unit_code string, nullable Kodi i njësisë matëse, p.sh. `C62`, `XPP`, `LTR`
data.product.last_price number Çmimi i shitjes
data.product.cost_price number, nullable Çmimi i blerjes, kur është regjistruar
data.product.vat_rate number Norma e TVSH-së në përqind: 0, 6, 10 ose 20
data.product.vat_exempt_type string, nullable Tipi i përjashtimit nga TVSH-ja, kur produkti është i përjashtuar
data.product.vat_exempt_description string, nullable Përjashtimi i shkruar në gjuhën e llogarisë
data.product.currency string, nullable Monedha e çmimit
data.product.id_category integer, nullable Id-ja e kategorisë, ose null kur produkti nuk ka
data.product.service boolean true për një shërbim, false për një artikull që ndiqet në magazinë
data.product.category object, nullable Kategoria e produktit, ose null kur nuk ka
data.product.category.id integer Id-ja e kategorisë
data.product.category.name string Emri i kategorisë
data.product.category.color string, nullable Ngjyra në hex që përdor rrjeta e produkteve në POS
data.product.created_at string, nullable Data dhe ora e krijimit, ISO 8601

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`

404 Produkti nuk u gjet, ose nuk i përket kompanisë suaj.

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 Ekziston tashmë një produkt tjetër me këtë emër ose me këtë kod.

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.

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`

Shembull kërkese

cURL
curl -X PUT 'https://fature.al/api/v1/products/42' \
  -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 '{
    "code": "P001",
    "name": "Kafe Espresso",
    "description": "Kafe espresso e peshuar 18g",
    "unit_code": "XPP",
    "last_price": 150,
    "cost_price": 80,
    "vat_rate": 20,
    "vat_exempt_type": "TAX_FREE",
    "currency": "ALL",
    "service": true,
    "id_category": 3
}'
PHP (Laravel)
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',
])->put('https://fature.al/api/v1/products/42', [
    'code' => 'P001',
    'name' => 'Kafe Espresso',
    'description' => 'Kafe espresso e peshuar 18g',
    'unit_code' => 'XPP',
    'last_price' => 150,
    'cost_price' => 80,
    'vat_rate' => 20,
    'vat_exempt_type' => 'TAX_FREE',
    'currency' => 'ALL',
    'service' => true,
    'id_category' => 3,
]);

$data = $response->json();
PHP (Guzzle)
use GuzzleHttp\Client;

$client = new Client();

$response = $client->request('PUT', 'https://fature.al/api/v1/products/42', [
    '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' => [
        'code' => 'P001',
        'name' => 'Kafe Espresso',
        'description' => 'Kafe espresso e peshuar 18g',
        'unit_code' => 'XPP',
        'last_price' => 150,
        'cost_price' => 80,
        'vat_rate' => 20,
        'vat_exempt_type' => 'TAX_FREE',
        'currency' => 'ALL',
        'service' => true,
        'id_category' => 3,
    ],
]);

$data = json_decode((string) $response->getBody(), true);
JavaScript
const response = await fetch('https://fature.al/api/v1/products/42', {
  method: 'PUT',
  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({
      "code": "P001",
      "name": "Kafe Espresso",
      "description": "Kafe espresso e peshuar 18g",
      "unit_code": "XPP",
      "last_price": 150,
      "cost_price": 80,
      "vat_rate": 20,
      "vat_exempt_type": "TAX_FREE",
      "currency": "ALL",
      "service": true,
      "id_category": 3
  })
});

const data = await response.json();

Shembull përgjigjeje

200
{
    "status": true,
    "data": {
        "product": {
            "id": 314,
            "code": "SRV-MNT",
            "name": "Orë pune mirëmbajtje",
            "description": "Mirëmbajtje e sistemit, faturohet për orë",
            "unit": "Orë",
            "unit_code": "HUR",
            "last_price": 300,
            "cost_price": 150,
            "vat_rate": 20,
            "vat_exempt_type": "TYPE_1",
            "vat_exempt_description": "Përjashtim i llojit 1. (Përjashtim në bazë të nenit 51 të Ligjit për TVSH-në.)",
            "currency": "EUR",
            "id_category": 12,
            "service": true,
            "category": {
                "id": 12,
                "name": "Shërbime",
                "color": "dd9f52"
            },
            "created_at": "2026-01-15T09:00:00+01:00"
        }
    }
}
401
{
    "message": "Unauthenticated."
}
403
{
    "status": false,
    "message": "Te dhenat jo te sakta.",
    "errors": [
        "errors"
    ]
}
404
{
    "status": false,
    "message": "Te dhenat jo te sakta.",
    "errors": [
        "errors"
    ]
}
409
{
    "status": false,
    "message": "Te dhenat jo te sakta.",
    "errors": [
        "errors"
    ]
}
422
{
    "success": false,
    "message": "Te dhena jo te sakta",
    "errors": []
}
429
{
    "status": false,
    "message": "Te dhenat jo te sakta.",
    "errors": [
        "errors"
    ]
}
500
{
    "status": false,
    "message": "Te dhenat jo te sakta.",
    "errors": [
        "errors"
    ]
}

Regjistrimi është falas.

Regjistrohu në fature.al

This page as Markdown, or the whole API as OpenAPI.