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

Shëno porosinë gati

POST /api/partner/v1/wolt/orders/{id}/ready Requires authentication Rate limited by the `api-global` limiter

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

Ky është hapi që lëshon faturën fiskale. Nëse porosia nuk ka ende faturë, ajo lëshohet dhe fiskalizohet këtu, ndaj shënimi gati është çasti kur shitja bëhet dokument ligjor. Një thirrje e dytë mbi një porosi që e ka tashmë faturën nuk lëshon një të dytë.

Çfarë vjen pas varet nga lloji i dorëzimit:

Lloji i dorëzimit Pas shënimit gati
Marketplace Porosinë e merr një korrier i Wolt
Takeaway Klienti e merr vetë; pastaj thirrni delivered
Self-delivery Thirrni pickup-completed, pastaj courier-at-customer, pastaj delivered

Porosia kalon në statusin ready.

URL-ja e plotë: https://fature.al/api/partner/v1/wolt/orders/{id}/ready

Path parameters

Name Tipi E detyrueshme Përshkrimi
id integer yes Id-ja e porosisë në fature.al, nga feed-i ose nga lista e porosive.

Header parameters

Name Tipi E detyrueshme Përshkrimi
Idempotency-Key string yes Çelësi i idempotencës: një çelës unik, i juaji, për këtë veprim. Një riprovim me të njëjtin çelës kthen përsëritjen e përgjigjes së parë, në vend që t'i dërgojë Wolt-it një veprim të dytë, dhe përsëritja mban header-in Idempotent-Replayed: true. Ruhet 24 orë.

Përgjigjet

200 Porosia e rifreskuar te `data.order`, me statusin `ready` dhe referencën e faturës te `invoice`; `fiscal_state` është `fiscalised`, ose `deferred` kur CIS-i nuk u arrit.

Field Tipi Përshkrimi
status boolean
data object
data.order object
data.order.id integer Id-ja e porosisë në fature.al; përdoreni si `{id}` në endpoint-et e porosisë dhe të veprimeve
data.order.wolt_order_id string Id-ja e porosisë te Wolt
data.order.display_number string, nullable Numri i porosisë që Wolt i tregon klientit (`order_number`); `null` kur Wolt nuk e ka dërguar ende
data.order.status string Statusi i porosisë, siç vjen nga Wolt: `received`, `acknowledged`, `preorder_confirmed`, `production`, `ready`, `picked_up`, `courier_at_customer`, `delivered`, `rejected`, `refunded`, `cancelled`, ...
data.order.fiscal_state string Gjendja fiskale, e nxjerrë nga fatura: `pending` (pa faturë), `deferred` (fatura pret CIS-in), `fiscalised` (e regjistruar në CIS) ose `failed` (lëshimi dështoi dhe porosia mbeti pa faturë)
data.order.total_amount number Totali i paguar nga klienti, në monedhën e porosisë (`currency`), në njësi të plota (lekë, jo qindarka)
data.order.currency string Kodi i monedhës së porosisë sipas ISO 4217; `ALL` kur Wolt nuk dërgon monedhë
data.order.received_at string, nullable Kur fature.al e regjistroi porosinë nga Wolt (ISO-8601 me offset-in e orës lokale)
data.order.pickup_at string, nullable Koha e premtuar Wolt-it gjatë pranimit (ISO-8601 me offset-in e orës lokale): kur do të jetë gati porosia te një porosi marketplace, ose kur do t'i dorëzohet klientit te një porosi self-delivery. `null` kur gjatë pranimit nuk u premtua kohë
data.order.delivery_type string, nullable Lloji i dorëzimit sipas Wolt (`delivery.type`): `homedelivery` me korrier, `takeaway` klienti e merr vetë, `eatin` konsumim në vend; `null` kur Wolt nuk e dërgon
data.order.self_delivery boolean `true` kur njësia e dorëzon porosinë me korrierin e vet dhe jo me një korrier të Wolt
data.order.branch string, nullable Emri i njësisë së biznesit që mban lidhjen Wolt; `null` kur lidhja nuk ka njësi
data.order.invoice object, nullable Referenca e faturës fiskale të lidhur, ose `null` sa kohë nuk është lëshuar faturë
data.order.invoice.id integer Id-ja e faturës në fature.al
data.order.invoice.number any Numri i faturës, si `184/2026`; `null` sa kohë nuk i është caktuar ende
data.order.invoice.state string Gjendja fiskale, e njëjtë me `fiscal_state` të porosisë: `pending`, `deferred`, `fiscalised` ose `failed`. Brenda kësaj reference është praktikisht `deferred` ose `fiscalised`, sepse referenca ekziston vetëm kur porosia ka faturë
data.order.invoice.fiscal_iic any IIC (NSLF) i faturës, kodi identifikues që llogaritet me lëshimin; `null` vetëm kur fatura nuk e ka ende
data.order.invoice.fiscal_fic any FIC (NIVF) i faturës, kodi që kthen CIS-i kur e regjistron; `null` sa kohë fatura pret fiskalizimin (`deferred`)
data.order.customer object Klienti (konsumatori) i porosisë, ashtu siç e dërgon Wolt
data.order.customer.name string, nullable Emri i klientit ashtu siç e shfaq Wolt (`consumer_name`); `null` kur Wolt nuk e dërgon
data.order.customer.phone string, nullable Numri i telefonit të klientit. Wolt e jep vetëm për porositë self-delivery, ku korrieri i njësisë duhet ta kontaktojë; te porositë me korrier të Wolt është `null`
data.order.customer.note string, nullable Shënimi që klienti la me porosinë (`consumer_comment`); `null` kur nuk ka shënim
data.order.company object, nullable Kompania që faturohet në një porosi B2B, ose `null` për një porosi të zakonshme
data.order.company.tax_id string NIPT-i i kompanisë që klienti kërkoi të faturohet (`company_tax_id` te Wolt)
data.order.company.name string, nullable Emri i kompanisë ashtu siç e dha klienti te Wolt (`company_name`); `null` kur Wolt dërgon vetëm NIPT-in
data.order.company.address string, nullable Adresa e kompanisë ashtu siç e dha klienti te Wolt (`company_address`); `null` kur mungon
data.order.preorder object, nullable Të dhënat e paraporosisë, ose `null` për një porosi të çastit
data.order.preorder.time string Ora për të cilën klienti e planifikoi porosinë (`pre_order.preorder_time`), ISO-8601 ashtu siç e dërgon Wolt
data.order.preorder.status string, nullable Statusi i paraporosisë te Wolt (`pre_order.pre_order_status`), ashtu siç e dërgon Wolt; `null` kur mungon
data.order.lines array Rreshtat e porosisë, në radhën e Wolt. Sa kohë porosia nuk ka faturë vijnë nga payload-i i Wolt, me produktin e zgjidhur nga lidhja e artikujve të menysë; sapo lëshohet fatura, vijnë nga rreshtat e faturës fiskale dhe mbajnë produktin me të cilin u faturuan
data.order.lines[].name string Emri i artikullit: pas lëshimit të faturës, emri me të cilin u faturua (emri i produktit të lidhur, ose emri i artikullit te Wolt kur nuk ka lidhje); më parë, emri i artikullit te Wolt
data.order.lines[].quantity number Sasia e porositur (`count` te Wolt)
data.order.lines[].unit_price number Çmimi për njësi që Wolt i ngarkoi klientit, në monedhën e porosisë
data.order.lines[].total number Totali i rreshtit pas zbritjes, në monedhën e porosisë; kjo është vlera që faturohet
data.order.lines[].discount number Zbritja e zbatuar në rresht (artikull, shportë dhe opsione së bashku), në monedhën e porosisë; `total` është tashmë pas saj. Pas lëshimit të faturës merret nga payload-i i Wolt sipas pozicionit të rreshtit, dhe është 0 kur rreshtat e faturës nuk përputhen një për një me ata të Wolt
data.order.lines[].product object, nullable Produkti i lidhur në fature.al, ose `null` kur artikulli i Wolt nuk është lidhur me asnjë produkt
data.order.lines[].options array Modifikuesit dhe opsionet që klienti zgjodhi për rreshtin, siç i dërgon Wolt: objekte me `group` (grupi i opsionit), `value` (opsioni i zgjedhur), `count` (sa herë) dhe `price` (shtesa e çmimit, në monedhën e porosisë, tashmë e përfshirë te `total`). Bosh kur nuk ka opsione, dhe bosh edhe pas lëshimit të faturës kur rreshtat e faturës nuk përputhen me ata të Wolt
data.order.totals object Përmbledhja e shumave të porosisë, e nxjerrë nga payload-i i Wolt, ndaj e njëjtë para dhe pas fiskalizimit
data.order.totals.subtotal_before_discount number Totali i shportës para çdo zbritjeje, në monedhën e porosisë
data.order.totals.discount number Zbritja e plotë që mori klienti nga promocionet te `campaigns`, në monedhën e porosisë
data.order.totals.total number Totali i paguar nga klienti, në monedhën e porosisë; i njëjtë me `total_amount` të porosisë
data.order.totals.currency string Kodi i monedhës sipas ISO 4217; `ALL` kur Wolt nuk dërgon monedhë
data.order.totals.campaigns array Emërtimet e promocioneve të Wolt që u zbatuan në porosi (`campaigns_applied[].campaign_name`), si string-e pa dublikime; bosh kur nuk u zbatua asnjë

400 Header-i Idempotency-Key mungon.

Field Tipi Përshkrimi
status boolean Gjithmonë `false`
message string Shpjegim i përkthyer; ruajeni në log, por mos vendosni sipas tij
code string Arsyeja e qëndrueshme, e lexueshme nga makina: `unauthenticated` (token-i mungon ose nuk vlen), `wolt_not_enabled` (kompania nuk e ka modulin Wolt), `forbidden` (përdoruesi i token-it nuk ka të drejtën Wolt), `no_venue` (token-i nuk zgjidhet në një njësi të vetme aktive), `order_not_found` (nuk ka porosi të tillë për këtë njësi), `invalid_transition` (veprimi nuk lejohet për statusin aktual të porosisë), `invalid_data` (body i kërkesës nuk kaloi validimin), `action_failed` (veprimi dështoi nga ana jonë), `wolt_upstream_error` (Wolt e refuzoi veprimin ose nuk u përgjigj), `idempotency_key_required` (header-i `Idempotency-Key` mungon), `idempotency_in_progress` (një thirrje me të njëjtin çelës është ende në proces)

401 Unauthenticated

Field Tipi Përshkrimi
message string

403 Kompania nuk e ka modulin Wolt, përdoruesi i token-it nuk ka të drejtën Wolt, ose token-i nuk zgjidhet në një njësi të vetme aktive.

Field Tipi Përshkrimi
status boolean Gjithmonë `false`
message string Shpjegim i përkthyer; ruajeni në log, por mos vendosni sipas tij
code string Arsyeja e qëndrueshme, e lexueshme nga makina: `unauthenticated` (token-i mungon ose nuk vlen), `wolt_not_enabled` (kompania nuk e ka modulin Wolt), `forbidden` (përdoruesi i token-it nuk ka të drejtën Wolt), `no_venue` (token-i nuk zgjidhet në një njësi të vetme aktive), `order_not_found` (nuk ka porosi të tillë për këtë njësi), `invalid_transition` (veprimi nuk lejohet për statusin aktual të porosisë), `invalid_data` (body i kërkesës nuk kaloi validimin), `action_failed` (veprimi dështoi nga ana jonë), `wolt_upstream_error` (Wolt e refuzoi veprimin ose nuk u përgjigj), `idempotency_key_required` (header-i `Idempotency-Key` mungon), `idempotency_in_progress` (një thirrje me të njëjtin çelës është ende në proces)

404 Nuk ka porosi të tillë për këtë njësi.

Field Tipi Përshkrimi
status boolean Gjithmonë `false`
message string Shpjegim i përkthyer; ruajeni në log, por mos vendosni sipas tij
code string Arsyeja e qëndrueshme, e lexueshme nga makina: `unauthenticated` (token-i mungon ose nuk vlen), `wolt_not_enabled` (kompania nuk e ka modulin Wolt), `forbidden` (përdoruesi i token-it nuk ka të drejtën Wolt), `no_venue` (token-i nuk zgjidhet në një njësi të vetme aktive), `order_not_found` (nuk ka porosi të tillë për këtë njësi), `invalid_transition` (veprimi nuk lejohet për statusin aktual të porosisë), `invalid_data` (body i kërkesës nuk kaloi validimin), `action_failed` (veprimi dështoi nga ana jonë), `wolt_upstream_error` (Wolt e refuzoi veprimin ose nuk u përgjigj), `idempotency_key_required` (header-i `Idempotency-Key` mungon), `idempotency_in_progress` (një thirrje me të njëjtin çelës është ende në proces)

409 Statusi aktual i porosisë nuk e lejon këtë veprim, ose një thirrje me të njëjtin Idempotency-Key është ende në proces. Asgjë nuk i është dërguar Wolt-it.

Field Tipi Përshkrimi
status boolean Gjithmonë `false`
message string Shpjegim i përkthyer; ruajeni në log, por mos vendosni sipas tij
code string Arsyeja e qëndrueshme, e lexueshme nga makina: `unauthenticated` (token-i mungon ose nuk vlen), `wolt_not_enabled` (kompania nuk e ka modulin Wolt), `forbidden` (përdoruesi i token-it nuk ka të drejtën Wolt), `no_venue` (token-i nuk zgjidhet në një njësi të vetme aktive), `order_not_found` (nuk ka porosi të tillë për këtë njësi), `invalid_transition` (veprimi nuk lejohet për statusin aktual të porosisë), `invalid_data` (body i kërkesës nuk kaloi validimin), `action_failed` (veprimi dështoi nga ana jonë), `wolt_upstream_error` (Wolt e refuzoi veprimin ose nuk u përgjigj), `idempotency_key_required` (header-i `Idempotency-Key` mungon), `idempotency_in_progress` (një thirrje me të njëjtin çelës është ende në proces)

422 Veprimi dështoi nga ana jonë dhe nuk u krye.

Field Tipi Përshkrimi
status boolean Gjithmonë `false`
message string Shpjegim i përkthyer; ruajeni në log, por mos vendosni sipas tij
code string Arsyeja e qëndrueshme, e lexueshme nga makina: `unauthenticated` (token-i mungon ose nuk vlen), `wolt_not_enabled` (kompania nuk e ka modulin Wolt), `forbidden` (përdoruesi i token-it nuk ka të drejtën Wolt), `no_venue` (token-i nuk zgjidhet në një njësi të vetme aktive), `order_not_found` (nuk ka porosi të tillë për këtë njësi), `invalid_transition` (veprimi nuk lejohet për statusin aktual të porosisë), `invalid_data` (body i kërkesës nuk kaloi validimin), `action_failed` (veprimi dështoi nga ana jonë), `wolt_upstream_error` (Wolt e refuzoi veprimin ose nuk u përgjigj), `idempotency_key_required` (header-i `Idempotency-Key` mungon), `idempotency_in_progress` (një thirrje me të njëjtin çelës është ende në proces)

429 Kufiri i kërkesave u arrit: 60 shkrime në minutë për token. Riprovoni pas numrit të sekondave në header-in Retry-After.

Field Tipi Përshkrimi
message string

502 Wolt e refuzoi veprimin ose nuk u përgjigj. Riprovoni pa rrezik me të njëjtin Idempotency-Key.

Field Tipi Përshkrimi
status boolean Gjithmonë `false`
message string Shpjegim i përkthyer; ruajeni në log, por mos vendosni sipas tij
code string Arsyeja e qëndrueshme, e lexueshme nga makina: `unauthenticated` (token-i mungon ose nuk vlen), `wolt_not_enabled` (kompania nuk e ka modulin Wolt), `forbidden` (përdoruesi i token-it nuk ka të drejtën Wolt), `no_venue` (token-i nuk zgjidhet në një njësi të vetme aktive), `order_not_found` (nuk ka porosi të tillë për këtë njësi), `invalid_transition` (veprimi nuk lejohet për statusin aktual të porosisë), `invalid_data` (body i kërkesës nuk kaloi validimin), `action_failed` (veprimi dështoi nga ana jonë), `wolt_upstream_error` (Wolt e refuzoi veprimin ose nuk u përgjigj), `idempotency_key_required` (header-i `Idempotency-Key` mungon), `idempotency_in_progress` (një thirrje me të njëjtin çelës është ende në proces)

Shembull kërkese

cURL
curl -X POST 'https://fature.al/api/partner/v1/wolt/orders/8801/ready' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'X-Client-Id: YOUR_CLIENT_ID' \
  -H 'X-Client-Secret: YOUR_CLIENT_SECRET' \
  -H 'Accept: application/json' \
  -H 'Idempotency-Key: a2f1c9e4-5b60-4d7a-9c31-8e0f2b6d4a17'
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',
    'Idempotency-Key' => 'a2f1c9e4-5b60-4d7a-9c31-8e0f2b6d4a17',
])->post('https://fature.al/api/partner/v1/wolt/orders/8801/ready');

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

$client = new Client();

$response = $client->request('POST', 'https://fature.al/api/partner/v1/wolt/orders/8801/ready', [
    'headers' => [
        'Authorization' => 'Bearer YOUR_TOKEN',
        'X-Client-Id' => 'YOUR_CLIENT_ID',
        'X-Client-Secret' => 'YOUR_CLIENT_SECRET',
        'Accept' => 'application/json',
        'Idempotency-Key' => 'a2f1c9e4-5b60-4d7a-9c31-8e0f2b6d4a17',
    ],
]);

$data = json_decode((string) $response->getBody(), true);
JavaScript
const response = await fetch('https://fature.al/api/partner/v1/wolt/orders/8801/ready', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_TOKEN',
    'X-Client-Id': 'YOUR_CLIENT_ID',
    'X-Client-Secret': 'YOUR_CLIENT_SECRET',
    'Accept': 'application/json',
    'Idempotency-Key': 'a2f1c9e4-5b60-4d7a-9c31-8e0f2b6d4a17'
  }
});

const data = await response.json();

Shembull përgjigjeje

200
{
    "status": true,
    "data": {
        "order": {
            "id": 8801,
            "wolt_order_id": "66e1f3a2b4c5d6e7f8a9b0c1",
            "display_number": "A7",
            "status": "ready",
            "fiscal_state": "fiscalised",
            "total_amount": 1550,
            "currency": "ALL",
            "received_at": "2026-09-14T12:05:31+02:00",
            "pickup_at": "2026-09-14T12:30:00+02:00",
            "delivery_type": "homedelivery",
            "self_delivery": false,
            "branch": "Blloku",
            "invoice": {
                "id": 512430,
                "number": "184/2026",
                "state": "fiscalised",
                "fiscal_iic": "B1D6E9F3A4C2E7D8F0A1B2C3D4E5F601",
                "fiscal_fic": "3a9c6e1f-2b4d-4f8e-9c7a-5d1e0b2f4a6c"
            },
            "customer": {
                "name": "Arben H.",
                "phone": "+355692345678",
                "note": "Pa qepë, ju lutem"
            },
            "company": {
                "tax_id": "L81420034K",
                "name": "Alfa Consulting shpk",
                "address": "Rruga e Kavajës 112, Tiranë"
            },
            "preorder": {
                "time": "2026-09-14T18:30:00+02:00",
                "status": "confirmed"
            },
            "lines": [
                {
                    "name": "Pizza Margherita",
                    "quantity": 2,
                    "unit_price": 750,
                    "total": 1300,
                    "discount": 200,
                    "product": [],
                    "options": [
                        {
                            "group": "Madhësia",
                            "value": "E madhe",
                            "count": 1,
                            "price": 0
                        }
                    ]
                }
            ],
            "totals": {
                "subtotal_before_discount": 1750,
                "discount": 200,
                "total": 1550,
                "currency": "ALL",
                "campaigns": [
                    "Java e picës"
                ]
            }
        }
    }
}
400
{
    "status": false,
    "message": "Porosia nuk u gjet.",
    "code": "order_not_found"
}
401
{
    "message": "Unauthenticated."
}
403
{
    "status": false,
    "message": "Porosia nuk u gjet.",
    "code": "order_not_found"
}
404
{
    "status": false,
    "message": "Porosia nuk u gjet.",
    "code": "order_not_found"
}
409
{
    "status": false,
    "message": "Porosia nuk u gjet.",
    "code": "order_not_found"
}
422
{
    "status": false,
    "message": "Porosia nuk u gjet.",
    "code": "order_not_found"
}
429
{
    "message": "Hello there"
}
502
{
    "status": false,
    "message": "Porosia nuk u gjet.",
    "code": "order_not_found"
}

Regjistrimi është falas.

Regjistrohu në fature.al

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