/api/partner/v1/wolt/orders/{id}/accept
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.
Ia kalon Wolt-it pranimin. Këtu nuk lëshohet faturë fiskale: ajo lëshohet kur porosia shënohet gati.
pickup_minutes ka dy kuptime, sipas llojit të porosisë:
| Lloji i porosisë | Çfarë premton pickup_minutes |
|---|---|
| Marketplace | Kur do të jetë gati ushqimi, që Wolt të nisë korrierin në atë orar |
| Self-delivery | Kohën e plotë të dorëzimit që i premtohet klientit |
Një vlerë e gabuar te një porosi marketplace dërgon një korrier që pret, ose lë ushqimin të ftohet.
URL-ja e plotë: https://fature.al/api/partner/v1/wolt/orders/{id}/accept
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ë. |
Body parameters
| Name | Tipi | E detyrueshme | Përshkrimi |
|---|---|---|---|
| pickup_minutes | integer | no | Minutat nga tani derisa porosia të jetë gati, 5-180. |
Përgjigjet
200 Porosia e rifreskuar te `data.order`, me statusin `acknowledged`; `pickup_at` mban kohën e premtuar Wolt-it, kur u premtua një e tillë.
| 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 pickup_minutes është jashtë intervalit 5-180, ose 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/accept' \
-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' \
-H 'Idempotency-Key: a2f1c9e4-5b60-4d7a-9c31-8e0f2b6d4a17' \
-d '{
"pickup_minutes": 20
}'
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',
'Idempotency-Key' => 'a2f1c9e4-5b60-4d7a-9c31-8e0f2b6d4a17',
])->post('https://fature.al/api/partner/v1/wolt/orders/8801/accept', [
'pickup_minutes' => 20,
]);
$data = $response->json();
use GuzzleHttp\Client;
$client = new Client();
$response = $client->request('POST', 'https://fature.al/api/partner/v1/wolt/orders/8801/accept', [
'headers' => [
'Authorization' => 'Bearer YOUR_TOKEN',
'X-Client-Id' => 'YOUR_CLIENT_ID',
'X-Client-Secret' => 'YOUR_CLIENT_SECRET',
'Accept' => 'application/json',
'Content-Type' => 'application/json',
'Idempotency-Key' => 'a2f1c9e4-5b60-4d7a-9c31-8e0f2b6d4a17',
],
'json' => [
'pickup_minutes' => 20,
],
]);
$data = json_decode((string) $response->getBody(), true);
const response = await fetch('https://fature.al/api/partner/v1/wolt/orders/8801/accept', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'X-Client-Id': 'YOUR_CLIENT_ID',
'X-Client-Secret': 'YOUR_CLIENT_SECRET',
'Accept': 'application/json',
'Content-Type': 'application/json',
'Idempotency-Key': 'a2f1c9e4-5b60-4d7a-9c31-8e0f2b6d4a17'
},
body: JSON.stringify({
"pickup_minutes": 20
})
});
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"
}