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

Konfirmo një porosi të paraporositur

POST /api/partner/v1/wolt/orders/{id}/confirm-preorder 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.

Konfirmon një porosi të paraporositur, që klienti e ka planifikuar për më vonë. Ajo qëndron në pritje derisa Wolt ta lëshojë në përgatitje afër orarit të saj, dhe vetëm pas kësaj mund të shënohet gati.

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

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 `preorder_confirmed`.

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/confirm-preorder' \
  -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/confirm-preorder');

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

$client = new Client();

$response = $client->request('POST', 'https://fature.al/api/partner/v1/wolt/orders/8801/confirm-preorder', [
    '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/confirm-preorder', {
  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.