/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 -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'
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();
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);
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
{
"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"
]
}
}
}
}
{
"status": false,
"message": "Porosia nuk u gjet.",
"code": "order_not_found"
}
{
"message": "Unauthenticated."
}
{
"status": false,
"message": "Porosia nuk u gjet.",
"code": "order_not_found"
}
{
"status": false,
"message": "Porosia nuk u gjet.",
"code": "order_not_found"
}
{
"status": false,
"message": "Porosia nuk u gjet.",
"code": "order_not_found"
}
{
"status": false,
"message": "Porosia nuk u gjet.",
"code": "order_not_found"
}
{
"message": "Hello there"
}
{
"status": false,
"message": "Porosia nuk u gjet.",
"code": "order_not_found"
}