{
    "openapi": "3.1.0",
    "info": {
        "title": "fature.al Partner API",
        "version": "1.0",
        "description": "# fature.al Partner API\n\nWolt is a food ordering and delivery platform: the customer orders in the Wolt app and the order reaches the restaurant or store that prepares it. That restaurant or store is called the venue here. This document is for the software running at the venue: the till, kitchen or store program that receives Wolt orders and processes them.\n\nWith this API your system follows the Wolt orders of a single venue through fature.al: it reads each order's lifecycle from the event feed, sends acceptance, rejection and readiness back to Wolt, and gets the fiscal invoice that fature.al issues for each order.\n\nIt is a separate document because the token here has a narrower meaning: a single venue. Everything else, the bearer token, the `X-Client-Id` and `X-Client-Secret` pair, the response format and the fiscalization glossary, works the same as in the main API and is explained at [`\/docs\/api`](\/docs\/api).\n\n## Servers\n\n| Environment | URL |\n| --- | --- |\n| **Live** | `https:\/\/fature.al\/api\/partner\/v1` |\n| **Sandbox** | `https:\/\/demo.fature.al\/api\/partner\/v1` |\n\n## One token, one venue\n\nThe bearer token resolves to a single Wolt venue and every endpoint works only on it. The id of an order that belongs to another venue gets a `404`, not a `403`: a wrong id and someone else's id cannot be told apart.\n\nCall `GET \/ping` first: it returns the company, the business unit and the Wolt venue the token is linked to, so it confirms the credentials and tells you what you are working on.\n\n## The event feed is the backbone\n\nCall `GET \/events` periodically with the latest `next_cursor` you received. The feed is append-only: no event changes and none is deleted, so nothing is lost while your system is down. Delivery is at-least-once, so treat the `(order_id, type)` pair as idempotent. Each event carries a short snapshot of the order at that moment, which is usually enough without a second call.\n\n## Every write requires an Idempotency-Key\n\nThe eight action endpoints require the `Idempotency-Key` header. A request without it is rejected with **400**.\n\n- A retry with the same key returns a replay of the first response instead of sending Wolt a second action, and the replay carries the `Idempotent-Replayed: true` header. Keys are kept for 24 hours.\n- A second call with the same key while the first is still in progress is rejected with **409**.\n- Only successful results are stored, so a transient failure can be safely retried with the same key.\n\n## Errors\n\nA failed request returns the same format as the rest of the API, plus a stable `code`:\n\n```json\n{\"status\": false, \"message\": \"Porosia nuk u gjet.\", \"code\": \"order_not_found\"}\n```\n\nDecide based on `code`, not `message`: the message is translated and may change.\n\n| Code | Status | Meaning |\n| --- | --- | --- |\n| `unauthenticated` | 401 | The token is missing or invalid |\n| `wolt_not_enabled` | 403 | The company does not have the Wolt module |\n| `forbidden` | 403 | The token's user does not have the Wolt right |\n| `no_venue` | 403 | The token does not resolve to a single active venue |\n| `order_not_found` | 404 | No such order for this venue |\n| `invalid_transition` | 409 | The action is not allowed for the order's current status. Nothing was sent to Wolt |\n| `idempotency_key_required` | 400 | The `Idempotency-Key` header is missing |\n| `idempotency_in_progress` | 409 | A call with the same key is still in progress |\n| `invalid_data` | 422 | The request body failed validation |\n| `action_failed` | 422 | The action failed on our side and was not carried out |\n| `wolt_upstream_error` | 502 | Wolt rejected the action or did not respond. Safe to retry with the same key |\n\nThe token is checked by the API's general authentication before the request gets here, so a `401` may also come as `{\"message\": \"Unauthenticated.\"}`, without a `code`. Send the `Accept: application\/json` header on every request, so that an invalid token gets a `401` and not a redirect.\n\n## Rate limits\n\nReads carry the feed polling loop, so they have the wider limit; writes are sent to Wolt, so they have a narrower one. Both are counted per token.\n\n| | Limit |\n| --- | --- |\n| Reads (`GET`) | 180 per minute |\n| Writes (`POST`) | 60 per minute |\n\nOver the limit the response is **429** with a `Retry-After` header that says how many seconds to wait."
    },
    "servers": [
        {
            "url": "https:\/\/fature.al\/api\/partner\/v1",
            "description": "Live"
        },
        {
            "url": "https:\/\/demo.fature.al\/api\/partner\/v1",
            "description": "Sandbox"
        }
    ],
    "tags": [
        {
            "name": "Wolt Partner API",
            "description": "The venue side of a Wolt integration: read the order feed, accept or reject what comes in, move the order through courier pickup and delivery, and get the fiscal invoice it issued.\n\nThe feed is append-only and ordered, so it is what the venue system should follow to stay in sync. The list endpoints are for backfilling history and for showing a snapshot."
        }
    ],
    "security": [
        {
            "bearerAuth": [],
            "clientId": [],
            "clientSecret": []
        },
        {
            "bearerAuth": []
        }
    ],
    "paths": {
        "\/wolt\/ping": {
            "get": {
                "operationId": "partner.wolt.ping",
                "description": "Verifies the token and returns the single Wolt venue it is linked to. Call it first, to confirm the credentials and see which company, business unit and Wolt venue the token works on.",
                "summary": "Check the connection",
                "tags": [
                    "Wolt Partner API"
                ],
                "responses": {
                    "200": {
                        "description": "The venue the token works on: the company, the business unit, the venue's Wolt id, the connection status and the server time.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "boolean"
                                        },
                                        "data": {
                                            "$ref": "#\/components\/schemas\/WoltPingResult"
                                        }
                                    },
                                    "required": [
                                        "status",
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "The company does not have the Wolt module, the token's user does not have the Wolt right, or the token does not resolve to a single active venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit reached: 180 reads per minute per token. Retry after the number of seconds in the Retry-After header.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "How many seconds until you can retry. Sent only by a time-window limit, such as the global one or the cancellation one; rejecting a request still in progress does not carry it.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/wolt\/events": {
            "get": {
                "operationId": "partner.wolt.events",
                "description": "The backbone of the integration. Call this endpoint periodically with the latest `next_cursor` you received, and get the venue's order lifecycle events in order. The feed is append-only, so nothing is lost while your system is down; delivery is at-least-once, so treat the `(order_id, type)` pair as idempotent. Each event carries in `order` a short snapshot of the order at that moment.",
                "summary": "Read the event feed",
                "tags": [
                    "Wolt Partner API"
                ],
                "parameters": [
                    {
                        "name": "since",
                        "in": "query",
                        "description": "The cursor to continue from; send the previous next_cursor. Default is 0, the start of the stored history.",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        },
                        "example": 10420
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Maximum number of events returned, 1-200.",
                        "schema": {
                            "type": "integer",
                            "default": 50
                        },
                        "example": 50
                    },
                    {
                        "name": "types",
                        "in": "query",
                        "description": "Event types to include, comma-separated, e.g. order.received,order.ready.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "order.received,order.ready"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The events after `since` in `events`, oldest to newest, with `next_cursor` and `has_more`; `events` is empty when there is nothing new.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "boolean"
                                        },
                                        "data": {
                                            "$ref": "#\/components\/schemas\/WoltEventsPage"
                                        }
                                    },
                                    "required": [
                                        "status",
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "The company does not have the Wolt module, the token's user does not have the Wolt right, or the token does not resolve to a single active venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit reached: 180 reads per minute per token. Retry after the number of seconds in the Retry-After header.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "How many seconds until you can retry. Sent only by a time-window limit, such as the global one or the cancellation one; rejecting a request still in progress does not carry it.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/wolt\/orders": {
            "get": {
                "operationId": "partner.wolt.orders.list",
                "description": "The venue's orders, newest first.\n\nTo go further back, send the `next_cursor` from the previous response as `?cursor=`. Stop when `has_more` is `false`.\n\nThis is a snapshot for listing and backfilling history. To stay in sync with the venue in real time, read the event feed: it is append-only and ordered, so nothing is lost.",
                "summary": "List orders",
                "tags": [
                    "Wolt Partner API"
                ],
                "parameters": [
                    {
                        "name": "cursor",
                        "in": "query",
                        "description": "Returns orders older than this id; send the previous next_cursor.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": 10420
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of orders per request, 1-100.",
                        "schema": {
                            "type": "integer",
                            "default": 25
                        },
                        "example": 25
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "description": "Filters by Wolt status, e.g. received, acknowledged, ready, delivered.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "received"
                    },
                    {
                        "name": "from",
                        "in": "query",
                        "description": "Only orders received on or after this date (YYYY-MM-DD).",
                        "schema": {
                            "type": "string"
                        },
                        "example": "2026-08-01"
                    },
                    {
                        "name": "to",
                        "in": "query",
                        "description": "Only orders received on or before this date (YYYY-MM-DD).",
                        "schema": {
                            "type": "string"
                        },
                        "example": "2026-08-31"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The venue's orders in `orders`, newest to oldest, with `next_cursor` and `has_more`; `orders` is empty when there are no orders.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "boolean"
                                        },
                                        "data": {
                                            "$ref": "#\/components\/schemas\/WoltOrdersPage"
                                        }
                                    },
                                    "required": [
                                        "status",
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "The company does not have the Wolt module, the token's user does not have the Wolt right, or the token does not resolve to a single active venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit reached: 180 reads per minute per token. Retry after the number of seconds in the Retry-After header.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "How many seconds until you can retry. Sent only by a time-window limit, such as the global one or the cancellation one; rejecting a request still in progress does not carry it.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/wolt\/orders\/{id}": {
            "get": {
                "operationId": "partner.wolt.orders.show",
                "description": "Returns the full state of an order as fature.al holds it: the header, the parties, the lines, the totals and the fiscal link. Use it when the short snapshot from the feed or the list is not enough, for example to show the order in the kitchen with the chosen modifiers, the customer's note and the discounts, or to reread the current state after an event. The `order` object is the same one every action endpoint returns, so a single reader covers both. As long as the order has no invoice, `invoice` is `null` and the lines come from the Wolt payload; once the invoice is issued, the lines come from the fiscal invoice and carry the product they were invoiced with.",
                "summary": "Get an order",
                "tags": [
                    "Wolt Partner API"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "The order's id in fature.al, from the feed or the order list.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": 8801
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The full order in `data.order`: header, parties, lines, totals and the invoice reference.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "boolean"
                                        },
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "order": {
                                                    "$ref": "#\/components\/schemas\/WoltOrderDetail"
                                                }
                                            },
                                            "required": [
                                                "order"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "status",
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "The company does not have the Wolt module, the token's user does not have the Wolt right, or the token does not resolve to a single active venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No such order for this venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit reached: 180 reads per minute per token. Retry after the number of seconds in the Retry-After header.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "How many seconds until you can retry. Sent only by a time-window limit, such as the global one or the cancellation one; rejecting a request still in progress does not carry it.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/wolt\/orders\/{id}\/invoice": {
            "get": {
                "operationId": "partner.wolt.orders.invoice",
                "description": "Returns the fiscal invoice issued for the order: the `IIC`, `FIC` and `EIC` identifiers, verification through `pdf_url`, the client, the amounts and the lines.\n\nThe invoice object is the same as that of `GET \/api\/v1\/invoice\/{id}\/details`, so everything already written for that endpoint applies here unchanged.\n\n## While it is still null\n\n`invoice` is `null` as long as the order has no invoice. Follow `fiscal_state` instead of polling blindly:\n\n| `fiscal_state` | Meaning |\n| --- | --- |\n| `pending` | No invoice yet. Mark the order ready so that one is issued |\n| `deferred` | Issued, waiting for the CIS; `invoice` comes with `fic: null`. Completes on its own |\n| `fiscalised` | Done. `invoice` is filled in |\n| `failed` | Needs a retry |\n\nBetter still, follow the `order.fiscalized` event in the feed instead of polling.",
                "summary": "Get the order's fiscal invoice",
                "tags": [
                    "Wolt Partner API"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "The order's id in fature.al, from the feed or the order list.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": 8801
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The fiscal state in `fiscal_state` and the full invoice in `invoice`; `invoice` is `null` as long as the order has no invoice.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "boolean"
                                        },
                                        "data": {
                                            "$ref": "#\/components\/schemas\/WoltOrderInvoiceResult"
                                        }
                                    },
                                    "required": [
                                        "status",
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "403": {
                        "description": "The company does not have the Wolt module, the token's user does not have the Wolt right, or the token does not resolve to a single active venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No such order for this venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit reached: 180 reads per minute per token. Retry after the number of seconds in the Retry-After header.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "How many seconds until you can retry. Sent only by a time-window limit, such as the global one or the cancellation one; rejecting a request still in progress does not carry it.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/wolt\/orders\/{id}\/accept": {
            "post": {
                "operationId": "partner.wolt.orders.accept",
                "description": "Passes the acceptance on to Wolt. No fiscal invoice is issued here: it is issued when the order is marked ready.\n\n`pickup_minutes` has two meanings, depending on the order type:\n\n| Order type | What `pickup_minutes` promises |\n| --- | --- |\n| Marketplace | When the food will be ready, so Wolt dispatches the courier for that time |\n| Self-delivery | **The full delivery time** promised to the customer |\n\nA wrong value on a marketplace order sends a courier who waits, or leaves the food to go cold.",
                "summary": "Accept an order",
                "tags": [
                    "Wolt Partner API"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "The order's id in fature.al, from the feed or the order list.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": 8801
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Idempotency key: a unique key of your own for this action. A retry with the same key returns a replay of the first response instead of sending Wolt a second action, and the replay carries the header Idempotent-Replayed: true. Kept for 24 hours.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "a2f1c9e4-5b60-4d7a-9c31-8e0f2b6d4a17"
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "pickup_minutes": {
                                        "type": "integer",
                                        "description": "Minutes from now until the order is ready, 5-180.",
                                        "examples": [
                                            20
                                        ]
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "The refreshed order in `data.order`, with status `acknowledged`; `pickup_at` holds the time promised to Wolt, when one was promised.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "boolean"
                                        },
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "order": {
                                                    "$ref": "#\/components\/schemas\/WoltOrderDetail"
                                                }
                                            },
                                            "required": [
                                                "order"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "status",
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "400": {
                        "description": "The Idempotency-Key header is missing.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "The company does not have the Wolt module, the token's user does not have the Wolt right, or the token does not resolve to a single active venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No such order for this venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "The order's current status does not allow this action, or a call with the same Idempotency-Key is still in progress. Nothing was sent to Wolt.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "pickup_minutes is outside the 5-180 range, or the action failed on our side and was not performed.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "502": {
                        "description": "Wolt rejected the action or did not respond. Retry safely with the same Idempotency-Key.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit reached: 60 writes per minute per token. Retry after the number of seconds in the Retry-After header.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "How many seconds until you can retry. Sent only by a time-window limit, such as the global one or the cancellation one; rejecting a request still in progress does not carry it.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/wolt\/orders\/{id}\/confirm-preorder": {
            "post": {
                "operationId": "partner.wolt.orders.confirm-preorder",
                "description": "Confirms a preorder, one the customer has scheduled for later. It stays pending until Wolt releases it to production close to its scheduled time, and only after that can it be marked ready.",
                "summary": "Confirm a preorder",
                "tags": [
                    "Wolt Partner API"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "The order's id in fature.al, from the feed or the order list.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": 8801
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Idempotency key: a unique key of your own for this action. A retry with the same key returns a replay of the first response instead of sending Wolt a second action, and the replay carries the header Idempotent-Replayed: true. Kept for 24 hours.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "a2f1c9e4-5b60-4d7a-9c31-8e0f2b6d4a17"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The refreshed order in `data.order`, with status `preorder_confirmed`.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "boolean"
                                        },
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "order": {
                                                    "$ref": "#\/components\/schemas\/WoltOrderDetail"
                                                }
                                            },
                                            "required": [
                                                "order"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "status",
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "400": {
                        "description": "The Idempotency-Key header is missing.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "The company does not have the Wolt module, the token's user does not have the Wolt right, or the token does not resolve to a single active venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No such order for this venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "The order's current status does not allow this action, or a call with the same Idempotency-Key is still in progress. Nothing was sent to Wolt.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "The action failed on our side and was not performed.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "502": {
                        "description": "Wolt rejected the action or did not respond. Retry safely with the same Idempotency-Key.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit reached: 60 writes per minute per token. Retry after the number of seconds in the Retry-After header.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "How many seconds until you can retry. Sent only by a time-window limit, such as the global one or the cancellation one; rejecting a request still in progress does not carry it.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/wolt\/orders\/{id}\/reject": {
            "post": {
                "operationId": "partner.wolt.orders.reject",
                "description": "Rejects the order and passes the rejection on to Wolt. This is final: a rejected order cannot be accepted afterwards, and no fiscal invoice is issued for it.\n\n| Field | Notes |\n| --- | --- |\n| `reason` | Free text, up to 255 characters. **Wolt may show it to the customer**, so keep it appropriate |\n| `code` | `GENERIC`, `ITEMS_UNAVAILABLE` or `VENUE_CLOSING_SOON`. Default is `GENERIC` |\n\nBoth are optional, but an accurate `code` helps Wolt offer the customer a reasonable alternative instead of a generic apology.",
                "summary": "Reject an order",
                "tags": [
                    "Wolt Partner API"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "The order's id in fature.al, from the feed or the order list.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": 8801
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Idempotency key: a unique key of your own for this action. A retry with the same key returns a replay of the first response instead of sending Wolt a second action, and the replay carries the header Idempotent-Replayed: true. Kept for 24 hours.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "a2f1c9e4-5b60-4d7a-9c31-8e0f2b6d4a17"
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "$ref": "#\/components\/schemas\/WoltRejectRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "The refreshed order in `data.order`, with status `rejected`; no invoice is issued.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "boolean"
                                        },
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "order": {
                                                    "$ref": "#\/components\/schemas\/WoltOrderDetail"
                                                }
                                            },
                                            "required": [
                                                "order"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "status",
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "422": {
                        "description": "The rejection code is not one of GENERIC, ITEMS_UNAVAILABLE or VENUE_CLOSING_SOON, or the action failed on our side. A validation failure adds the errors object to the response.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "The Idempotency-Key header is missing.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "The company does not have the Wolt module, the token's user does not have the Wolt right, or the token does not resolve to a single active venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No such order for this venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "The order's current status does not allow this action, or a call with the same Idempotency-Key is still in progress. Nothing was sent to Wolt.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "502": {
                        "description": "Wolt rejected the action or did not respond. Retry safely with the same Idempotency-Key.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit reached: 60 writes per minute per token. Retry after the number of seconds in the Retry-After header.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "How many seconds until you can retry. Sent only by a time-window limit, such as the global one or the cancellation one; rejecting a request still in progress does not carry it.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/wolt\/orders\/{id}\/ready": {
            "post": {
                "operationId": "partner.wolt.orders.ready",
                "description": "**This is the step that issues the fiscal invoice.** If the order has no invoice yet, one is issued and fiscalized here, so marking ready is the moment the sale becomes a legal document. A second call on an order that already has its invoice does not issue a second one.\n\nWhat comes next depends on the delivery type:\n\n| Delivery type | After marking ready |\n| --- | --- |\n| Marketplace | A Wolt courier picks up the order |\n| Takeaway | The customer picks it up; then call `delivered` |\n| Self-delivery | Call `pickup-completed`, then `courier-at-customer`, then `delivered` |\n\nThe order moves to status `ready`.",
                "summary": "Mark the order ready",
                "tags": [
                    "Wolt Partner API"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "The order's id in fature.al, from the feed or the order list.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": 8801
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Idempotency key: a unique key of your own for this action. A retry with the same key returns a replay of the first response instead of sending Wolt a second action, and the replay carries the header Idempotent-Replayed: true. Kept for 24 hours.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "a2f1c9e4-5b60-4d7a-9c31-8e0f2b6d4a17"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The refreshed order in `data.order`, with status `ready` and the invoice reference in `invoice`; `fiscal_state` is `fiscalised`, or `deferred` when the CIS could not be reached.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "boolean"
                                        },
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "order": {
                                                    "$ref": "#\/components\/schemas\/WoltOrderDetail"
                                                }
                                            },
                                            "required": [
                                                "order"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "status",
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "400": {
                        "description": "The Idempotency-Key header is missing.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "The company does not have the Wolt module, the token's user does not have the Wolt right, or the token does not resolve to a single active venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No such order for this venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "The order's current status does not allow this action, or a call with the same Idempotency-Key is still in progress. Nothing was sent to Wolt.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "The action failed on our side and was not performed.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "502": {
                        "description": "Wolt rejected the action or did not respond. Retry safely with the same Idempotency-Key.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit reached: 60 writes per minute per token. Retry after the number of seconds in the Retry-After header.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "How many seconds until you can retry. Sent only by a time-window limit, such as the global one or the cancellation one; rejecting a request still in progress does not carry it.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/wolt\/orders\/{id}\/pickup-completed": {
            "post": {
                "operationId": "partner.wolt.orders.pickup-completed",
                "description": "First self-delivery step: the venue's own courier picked up the order. Only for **self-delivery** orders, where the venue delivers with its own courier rather than a Wolt courier. Marketplace and takeaway orders never call it.\n\nThis is **not** the delivery. The order moves to `picked_up` and stays open through `courier-at-customer` and `delivered`, so it remains on the orders board until the delivery is confirmed.",
                "summary": "Mark the courier pickup",
                "tags": [
                    "Wolt Partner API"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "The order's id in fature.al, from the feed or the order list.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": 8801
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Idempotency key: a unique key of your own for this action. A retry with the same key returns a replay of the first response instead of sending Wolt a second action, and the replay carries the header Idempotent-Replayed: true. Kept for 24 hours.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "a2f1c9e4-5b60-4d7a-9c31-8e0f2b6d4a17"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The refreshed order in `data.order`, with status `picked_up`.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "boolean"
                                        },
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "order": {
                                                    "$ref": "#\/components\/schemas\/WoltOrderDetail"
                                                }
                                            },
                                            "required": [
                                                "order"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "status",
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "400": {
                        "description": "The Idempotency-Key header is missing.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "The company does not have the Wolt module, the token's user does not have the Wolt right, or the token does not resolve to a single active venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No such order for this venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "The order's current status does not allow this action, or a call with the same Idempotency-Key is still in progress. Nothing was sent to Wolt.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "The action failed on our side and was not performed.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "502": {
                        "description": "Wolt rejected the action or did not respond. Retry safely with the same Idempotency-Key.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit reached: 60 writes per minute per token. Retry after the number of seconds in the Retry-After header.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "How many seconds until you can retry. Sent only by a time-window limit, such as the global one or the cancellation one; rejecting a request still in progress does not carry it.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/wolt\/orders\/{id}\/courier-at-customer": {
            "post": {
                "operationId": "partner.wolt.orders.courier-at-customer",
                "description": "Second self-delivery step: the courier arrived at the customer. Only for **self-delivery** orders, and only after `pickup-completed`. Wolt notifies the customer that the courier has arrived, so send it when that is true and not in advance.\n\nThe order moves to `courier_at_customer`. The delivery itself is confirmed separately with `delivered`.",
                "summary": "Mark the courier at the customer",
                "tags": [
                    "Wolt Partner API"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "The order's id in fature.al, from the feed or the order list.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": 8801
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Idempotency key: a unique key of your own for this action. A retry with the same key returns a replay of the first response instead of sending Wolt a second action, and the replay carries the header Idempotent-Replayed: true. Kept for 24 hours.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "a2f1c9e4-5b60-4d7a-9c31-8e0f2b6d4a17"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The refreshed order in `data.order`, with status `courier_at_customer`.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "boolean"
                                        },
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "order": {
                                                    "$ref": "#\/components\/schemas\/WoltOrderDetail"
                                                }
                                            },
                                            "required": [
                                                "order"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "status",
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "400": {
                        "description": "The Idempotency-Key header is missing.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "The company does not have the Wolt module, the token's user does not have the Wolt right, or the token does not resolve to a single active venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No such order for this venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "The order's current status does not allow this action, or a call with the same Idempotency-Key is still in progress. Nothing was sent to Wolt.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "The action failed on our side and was not performed.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "502": {
                        "description": "Wolt rejected the action or did not respond. Retry safely with the same Idempotency-Key.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit reached: 60 writes per minute per token. Retry after the number of seconds in the Retry-After header.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "How many seconds until you can retry. Sent only by a time-window limit, such as the global one or the cancellation one; rejecting a request still in progress does not carry it.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/wolt\/orders\/{id}\/delivered": {
            "post": {
                "operationId": "partner.wolt.orders.delivered",
                "description": "The final step, used in two cases:\n\n- **Takeaway**: the customer has picked up the order after it was marked ready.\n- **Self-delivery**: your courier has delivered it, after `courier-at-customer`.\n\nMarketplace orders do not need it: a Wolt courier picks them up and Wolt closes them.\n\nThe order moves to `delivered` and leaves the active orders board.",
                "summary": "Mark the order delivered",
                "tags": [
                    "Wolt Partner API"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "The order's id in fature.al, from the feed or the order list.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": 8801
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Idempotency key: a unique key of your own for this action. A retry with the same key returns a replay of the first response instead of sending Wolt a second action, and the replay carries the header Idempotent-Replayed: true. Kept for 24 hours.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "a2f1c9e4-5b60-4d7a-9c31-8e0f2b6d4a17"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The refreshed order in `data.order`, with status `delivered`.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "boolean"
                                        },
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "order": {
                                                    "$ref": "#\/components\/schemas\/WoltOrderDetail"
                                                }
                                            },
                                            "required": [
                                                "order"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "status",
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "400": {
                        "description": "The Idempotency-Key header is missing.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "The company does not have the Wolt module, the token's user does not have the Wolt right, or the token does not resolve to a single active venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No such order for this venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "The order's current status does not allow this action, or a call with the same Idempotency-Key is still in progress. Nothing was sent to Wolt.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "The action failed on our side and was not performed.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "502": {
                        "description": "Wolt rejected the action or did not respond. Retry safely with the same Idempotency-Key.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit reached: 60 writes per minute per token. Retry after the number of seconds in the Retry-After header.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "How many seconds until you can retry. Sent only by a time-window limit, such as the global one or the cancellation one; rejecting a request still in progress does not carry it.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/wolt\/orders\/{id}\/retry-fiscalize": {
            "post": {
                "operationId": "partner.wolt.orders.retry-fiscalize",
                "description": "Use it when `fiscal_state` is `deferred` or `failed`, which happens when the CIS could not be reached at the moment the invoice was issued. The retry does what the case calls for:\n\n- the order already has an unfiscalized invoice, so that invoice is fiscalized;\n- the order has no invoice at all, so one is issued and fiscalized now.\n\n**A rejected, canceled or refunded order cannot be fiscalized** and the call is rejected. Retrying on an order that is already fiscalized is harmless and changes nothing.",
                "summary": "Retry fiscalization",
                "tags": [
                    "Wolt Partner API"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "The order's id in fature.al, from the feed or the order list.",
                        "schema": {
                            "type": "integer"
                        },
                        "example": 8801
                    },
                    {
                        "name": "Idempotency-Key",
                        "in": "header",
                        "required": true,
                        "description": "Idempotency key: a unique key of your own for this action. A retry with the same key returns a replay of the first response instead of sending Wolt a second action, and the replay carries the header Idempotent-Replayed: true. Kept for 24 hours.",
                        "schema": {
                            "type": "string"
                        },
                        "example": "a2f1c9e4-5b60-4d7a-9c31-8e0f2b6d4a17"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The refreshed order in `data.order`; `fiscal_state` is `fiscalised` when fiscalization succeeded, or `deferred` when the invoice was issued but the CIS could not be reached.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "status": {
                                            "type": "boolean"
                                        },
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "order": {
                                                    "$ref": "#\/components\/schemas\/WoltOrderDetail"
                                                }
                                            },
                                            "required": [
                                                "order"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "status",
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#\/components\/responses\/AuthenticationException"
                    },
                    "400": {
                        "description": "The Idempotency-Key header is missing.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "The company does not have the Wolt module, the token's user does not have the Wolt right, or the token does not resolve to a single active venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No such order for this venue.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "The order's current status does not allow this action, or a call with the same Idempotency-Key is still in progress. Nothing was sent to Wolt.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "The action failed on our side and was not performed.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "502": {
                        "description": "Wolt rejected the action or did not respond. Retry safely with the same Idempotency-Key.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/PartnerError"
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit reached: 60 writes per minute per token. Retry after the number of seconds in the Retry-After header.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "message"
                                    ]
                                }
                            }
                        },
                        "headers": {
                            "Retry-After": {
                                "description": "How many seconds until you can retry. Sent only by a time-window limit, such as the global one or the cancellation one; rejecting a request still in progress does not carry it.",
                                "schema": {
                                    "type": "integer"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "bearerAuth": {
                "type": "http",
                "description": "The user's token, from Settings > API tokens.",
                "scheme": "bearer"
            },
            "clientId": {
                "type": "apiKey",
                "description": "The client id of your application, starts with ft_id_",
                "in": "header",
                "name": "X-Client-Id"
            },
            "clientSecret": {
                "type": "apiKey",
                "description": "The client secret of your application, starts with ft_sk_",
                "in": "header",
                "name": "X-Client-Secret"
            }
        },
        "schemas": {
            "InvoiceAddress": {
                "type": "object",
                "properties": {
                    "street": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Street and number.",
                        "examples": [
                            "Rruga e Kavaj\u00ebs 12"
                        ]
                    },
                    "city": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "City.",
                        "examples": [
                            "Tiran\u00eb"
                        ]
                    },
                    "country": {
                        "type": "string",
                        "description": "Country code, ISO 3166-1 alpha-3; `ALB` when the buyer has none recorded.",
                        "examples": [
                            "ALB"
                        ]
                    }
                },
                "required": [
                    "street",
                    "city",
                    "country"
                ],
                "title": "InvoiceAddress"
            },
            "InvoiceAmount": {
                "type": "object",
                "properties": {
                    "currency": {
                        "type": "string",
                        "description": "Invoice currency, ISO 4217.",
                        "examples": [
                            "EUR"
                        ]
                    },
                    "exchange_rate": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "Exchange rate against the lek; null when the invoice is already in lek.",
                        "examples": [
                            98.5
                        ]
                    },
                    "gross": {
                        "type": "number",
                        "description": "Total including VAT, after the invoice discount is taken off.",
                        "examples": [
                            540
                        ]
                    },
                    "net": {
                        "type": "number",
                        "description": "Total excluding VAT, after the invoice discount is taken off.",
                        "examples": [
                            450
                        ]
                    },
                    "vat": {
                        "type": "number",
                        "description": "Total VAT.",
                        "examples": [
                            90
                        ]
                    },
                    "discount": {
                        "type": "number",
                        "description": "Discount on the whole invoice, as an amount excluding VAT: how much was taken off the invoice's value excluding VAT.\nLine discounts are not here; they are in `lines[].discount`. Zero when the invoice has no\ninvoice discount.",
                        "examples": [
                            0
                        ]
                    },
                    "net_all": {
                        "type": "number",
                        "description": "Total excluding VAT in lek.",
                        "examples": [
                            44325
                        ]
                    },
                    "gross_all": {
                        "type": "number",
                        "description": "Total including VAT in lek.",
                        "examples": [
                            53190
                        ]
                    },
                    "vat_all": {
                        "type": "number",
                        "description": "VAT in lek.",
                        "examples": [
                            8865
                        ]
                    },
                    "discount_all": {
                        "type": "number",
                        "description": "Invoice discount in lek.",
                        "examples": [
                            0
                        ]
                    },
                    "local_currency": {
                        "anyOf": [
                            {
                                "description": "Present only on an invoice in a foreign currency.",
                                "$ref": "#\/components\/schemas\/InvoiceLocalAmount"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    }
                },
                "required": [
                    "currency",
                    "exchange_rate",
                    "gross",
                    "net",
                    "vat",
                    "discount",
                    "net_all",
                    "gross_all",
                    "vat_all",
                    "discount_all",
                    "local_currency"
                ],
                "title": "InvoiceAmount"
            },
            "InvoiceBankAccount": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "Id of the bank account in fature.al.",
                        "examples": [
                            27
                        ]
                    },
                    "bank_name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Bank name.",
                        "examples": [
                            "Banka Komb\u00ebtare Tregtare"
                        ]
                    },
                    "iban": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Account IBAN.",
                        "examples": [
                            "AL47212110090000000235698741"
                        ]
                    },
                    "swift": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The bank's SWIFT code.",
                        "examples": [
                            "NCBAALTX"
                        ]
                    },
                    "currency": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Account currency, ISO 4217.",
                        "examples": [
                            "EUR"
                        ]
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Free-form notes on the account.",
                        "examples": [
                            "Llogaria n\u00eb euro"
                        ]
                    }
                },
                "required": [
                    "id",
                    "bank_name",
                    "iban",
                    "swift",
                    "currency",
                    "notes"
                ],
                "title": "InvoiceBankAccount"
            },
            "InvoiceDetail": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "The invoice's id in fature.al.",
                        "examples": [
                            40323
                        ]
                    },
                    "number": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Invoice number, such as `12\/2026`.",
                        "examples": [
                            "12\/2026"
                        ]
                    },
                    "type": {
                        "type": "string",
                        "description": "Invoice type: `CASH`, `NONCASH` or `EINVOICE`.",
                        "examples": [
                            "EINVOICE"
                        ]
                    },
                    "issue_date": {
                        "type": "string",
                        "description": "Issue date, `YYYY-MM-DD`.",
                        "examples": [
                            "2026-09-13"
                        ]
                    },
                    "due_date": {
                        "type": "string",
                        "description": "Payment due date, `YYYY-MM-DD`.",
                        "examples": [
                            "2026-09-27"
                        ]
                    },
                    "delivery_date": {
                        "type": "string",
                        "description": "Delivery date, or the end of the supply period, `YYYY-MM-DD`.",
                        "examples": [
                            "2026-09-13"
                        ]
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Creation date and time, `YYYY-MM-DD HH:MM:SS`, local time.",
                        "examples": [
                            "2026-09-13 10:15:00"
                        ]
                    },
                    "supply_start_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Start of the supply period, `YYYY-MM-DD`.",
                        "examples": [
                            "2026-09-01"
                        ]
                    },
                    "supply_end_date": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "End of the supply period, `YYYY-MM-DD`.",
                        "examples": [
                            "2026-09-13"
                        ]
                    },
                    "client": {
                        "description": "The invoice's buyer.",
                        "$ref": "#\/components\/schemas\/InvoiceParty"
                    },
                    "amount": {
                        "description": "Invoice amounts, in its currency and in lek.",
                        "$ref": "#\/components\/schemas\/InvoiceAmount"
                    },
                    "payment": {
                        "description": "How much of the invoice has been paid.",
                        "$ref": "#\/components\/schemas\/InvoicePayment"
                    },
                    "bank_account": {
                        "anyOf": [
                            {
                                "description": "The bank account printed on the invoice, or `null`.",
                                "$ref": "#\/components\/schemas\/InvoiceBankAccount"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "notes": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Notes shown on the invoice.",
                        "examples": [
                            "Pagesa brenda 14 dit\u00ebve."
                        ]
                    },
                    "iic": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Invoice identification code (IIC, NSLF in the law).",
                        "examples": [
                            "3C7E9A1F52B84D0E6A2C4F8B1D9E7A35"
                        ]
                    },
                    "fic": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The code the CIS returned when it registered the invoice (FIC, NIVF in the law). `null` while the invoice is waiting for fiscalization.",
                        "examples": [
                            "2f6c1e8a-9b3d-4c7e-a5f1-0d8b6e4c2a91"
                        ]
                    },
                    "eic": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Invoice code on the e-invoicing platform. Only on e-invoices.",
                        "examples": [
                            "9b4e2d1c-6f7a-4b3c-8d2e-1f0a9c8b7d65"
                        ]
                    },
                    "doc_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Document type in UBL: `380` invoice, `381` credit note, `383` debit note. `null` on a regular fiscal invoice.",
                        "examples": [
                            "380"
                        ]
                    },
                    "process": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "UBL profile: `P1` for a sale, `P9` for a correction. Set on e-invoices.",
                        "examples": [
                            "P1"
                        ]
                    },
                    "self_issue_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Self-invoicing type, when the invoice is a self-invoice.",
                        "examples": [
                            "DOMESTIC"
                        ]
                    },
                    "reversed_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "When the invoice was canceled, `YYYY-MM-DD HH:MM:SS`, or `null`.",
                        "examples": [
                            "2026-09-14 08:05:00"
                        ]
                    },
                    "reversed_by": {
                        "type": [
                            "integer",
                            "null"
                        ],
                        "description": "Id of the invoice this invoice cancels, or `null`.",
                        "examples": [
                            40311
                        ]
                    },
                    "pdf_url": {
                        "type": "string",
                        "description": "URL to download the invoice PDF.",
                        "examples": [
                            "https:\/\/fature.al\/api\/v1\/invoice\/print\/40323"
                        ]
                    },
                    "reverse_charge": {
                        "type": "boolean",
                        "description": "Reverse charge: the buyer declares the VAT.",
                        "examples": [
                            false
                        ]
                    },
                    "periodic_invoice": {
                        "type": "boolean",
                        "description": "An invoice belonging to a recurring billing cycle.",
                        "examples": [
                            false
                        ]
                    },
                    "payment_method": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The payment method the invoice was paid with; for a split payment, the one with the largest share.",
                        "examples": [
                            "ACCOUNT"
                        ]
                    },
                    "lines": {
                        "type": "array",
                        "description": "Invoice lines; loaded only when a single invoice is read.",
                        "items": {
                            "$ref": "#\/components\/schemas\/InvoiceLine"
                        }
                    }
                },
                "required": [
                    "id",
                    "number",
                    "type",
                    "issue_date",
                    "due_date",
                    "delivery_date",
                    "created_at",
                    "supply_start_date",
                    "supply_end_date",
                    "client",
                    "amount",
                    "payment",
                    "bank_account",
                    "notes",
                    "iic",
                    "fic",
                    "eic",
                    "doc_type",
                    "process",
                    "self_issue_type",
                    "reversed_at",
                    "reversed_by",
                    "pdf_url",
                    "reverse_charge",
                    "periodic_invoice",
                    "payment_method",
                    "lines"
                ],
                "title": "InvoiceDetail"
            },
            "InvoiceLine": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "Name of the product or service.",
                        "examples": [
                            "Or\u00eb pune mir\u00ebmbajtje"
                        ]
                    },
                    "product_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Product code in fature.al, when the line belongs to a catalog product.",
                        "examples": [
                            "SRV-MNT"
                        ]
                    },
                    "unit": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Unit of measure.",
                        "examples": [
                            "Or\u00eb"
                        ]
                    },
                    "unit_code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Unit of measure code, e.g. `C62`.",
                        "examples": [
                            "HUR"
                        ]
                    },
                    "quantity": {
                        "type": "number",
                        "description": "Quantity.",
                        "examples": [
                            2
                        ]
                    },
                    "unitPrice": {
                        "type": "number",
                        "description": "Unit price including VAT, after the line discount is taken off.",
                        "examples": [
                            270
                        ]
                    },
                    "vat_rate": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "VAT rate as a percentage.",
                        "examples": [
                            20
                        ]
                    },
                    "vat_exempt_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Type of VAT exemption, when the line is exempt.",
                        "examples": [
                            "TYPE_1"
                        ]
                    },
                    "discount_rate": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "Line discount as a percentage, as sent in `lines[].discount`; null when the line has no discount.",
                        "examples": [
                            10
                        ]
                    },
                    "discount": {
                        "type": [
                            "number",
                            "null"
                        ],
                        "description": "Line discount amount, excluding VAT.",
                        "examples": [
                            50
                        ]
                    },
                    "amount_net": {
                        "type": "number",
                        "description": "Line value excluding VAT.",
                        "examples": [
                            450
                        ]
                    },
                    "amount_vat": {
                        "type": "number",
                        "description": "Line VAT.",
                        "examples": [
                            90
                        ]
                    },
                    "total": {
                        "type": "number",
                        "description": "Line total including VAT.",
                        "examples": [
                            540
                        ]
                    }
                },
                "required": [
                    "name",
                    "product_code",
                    "unit",
                    "unit_code",
                    "quantity",
                    "unitPrice",
                    "vat_rate",
                    "vat_exempt_type",
                    "discount_rate",
                    "discount",
                    "amount_net",
                    "amount_vat",
                    "total"
                ],
                "title": "InvoiceLine"
            },
            "InvoiceLocalAmount": {
                "type": "object",
                "properties": {
                    "exchange_rate": {
                        "type": "number",
                        "description": "The exchange rate the amounts were converted with.",
                        "examples": [
                            98.5
                        ]
                    },
                    "gross": {
                        "type": "number",
                        "description": "Total including VAT in lek.",
                        "examples": [
                            53190
                        ]
                    },
                    "net": {
                        "type": "number",
                        "description": "Total excluding VAT in lek.",
                        "examples": [
                            44325
                        ]
                    },
                    "vat": {
                        "type": "number",
                        "description": "VAT in lek.",
                        "examples": [
                            8865
                        ]
                    },
                    "discount": {
                        "type": "number",
                        "description": "Invoice discount in lek, as an amount excluding VAT.",
                        "examples": [
                            0
                        ]
                    }
                },
                "required": [
                    "exchange_rate",
                    "gross",
                    "net",
                    "vat",
                    "discount"
                ],
                "title": "InvoiceLocalAmount"
            },
            "InvoiceParty": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The person's full name or the company name.",
                        "examples": [
                            "Alba Trade shpk"
                        ]
                    },
                    "id": {
                        "description": "The buyer's fiscal identifier.",
                        "$ref": "#\/components\/schemas\/InvoicePartyId"
                    },
                    "address": {
                        "description": "The buyer's address.",
                        "$ref": "#\/components\/schemas\/InvoiceAddress"
                    }
                },
                "required": [
                    "name",
                    "id",
                    "address"
                ],
                "title": "InvoiceParty"
            },
            "InvoicePartyId": {
                "type": "object",
                "properties": {
                    "type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Identifier type: `NUIS`, `VAT` or `TAX` for a business; `ID`, `PASS` or `SOC` for a person.",
                        "examples": [
                            "NUIS"
                        ]
                    },
                    "id": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "Identifier value, e.g. the NIPT.",
                        "examples": [
                            "K91807012A"
                        ]
                    }
                },
                "required": [
                    "type",
                    "id"
                ],
                "title": "InvoicePartyId"
            },
            "InvoicePayment": {
                "type": "object",
                "properties": {
                    "state": {
                        "type": "string",
                        "description": "`PAID`, `PARTIALLY_PAID` or `UNPAID`.",
                        "examples": [
                            "PARTIALLY_PAID"
                        ]
                    },
                    "amount_paid": {
                        "type": "number",
                        "description": "Amount collected so far, in the invoice currency.",
                        "examples": [
                            300
                        ]
                    },
                    "amount_left": {
                        "type": "number",
                        "description": "Total including VAT minus the amount collected, in the invoice currency.",
                        "examples": [
                            240
                        ]
                    }
                },
                "required": [
                    "state",
                    "amount_paid",
                    "amount_left"
                ],
                "title": "InvoicePayment"
            },
            "PartnerError": {
                "type": "object",
                "properties": {
                    "status": {
                        "type": "boolean",
                        "description": "Always `false`.",
                        "examples": [
                            false
                        ]
                    },
                    "message": {
                        "type": "string",
                        "description": "Translated explanation; log it, but do not make decisions based on it.",
                        "examples": [
                            "Porosia nuk u gjet."
                        ]
                    },
                    "code": {
                        "type": "string",
                        "description": "The stable, machine-readable reason: `unauthenticated` (the token is missing or invalid), `wolt_not_enabled` (the company does not have the Wolt module), `forbidden` (the token's user does not have the Wolt right), `no_venue` (the token does not resolve to a single active venue), `order_not_found` (no such order for this venue), `invalid_transition` (the action is not allowed for the order's current status), `invalid_data` (the request body failed validation), `action_failed` (the action failed on our side), `wolt_upstream_error` (Wolt rejected the action or did not respond), `idempotency_key_required` (the `Idempotency-Key` header is missing), `idempotency_in_progress` (a call with the same key is still in progress).",
                        "examples": [
                            "order_not_found"
                        ]
                    }
                },
                "required": [
                    "status",
                    "message",
                    "code"
                ],
                "title": "PartnerError"
            },
            "WoltCustomer": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The customer's name as Wolt shows it (`consumer_name`); `null` when Wolt does not send it.",
                        "examples": [
                            "Arben H."
                        ]
                    },
                    "phone": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The customer's phone number. Wolt provides it only for self-delivery orders, where the venue's courier needs to contact the customer; on orders with a Wolt courier it is `null`.",
                        "examples": [
                            "+355692345678"
                        ]
                    },
                    "note": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The note the customer left with the order (`consumer_comment`); `null` when there is no note.",
                        "examples": [
                            "Pa qep\u00eb, ju lutem"
                        ]
                    }
                },
                "required": [
                    "name",
                    "phone",
                    "note"
                ],
                "title": "WoltCustomer"
            },
            "WoltEventsPage": {
                "type": "object",
                "properties": {
                    "events": {
                        "type": "array",
                        "description": "Events with an id greater than `since`, sorted by id ascending, up to `limit` items and only of the types in `types` when you sent it. Empty when there is nothing new after the cursor.",
                        "items": {
                            "$ref": "#\/components\/schemas\/WoltOrderEvent"
                        }
                    },
                    "next_cursor": {
                        "type": "string",
                        "description": "The cursor for the next call: the id of the last event on this page, or the `since` you sent when the page is empty. Store it and send it as `since` on the next call. Returned as a string even though it is a number.",
                        "examples": [
                            "10470"
                        ]
                    },
                    "has_more": {
                        "type": "boolean",
                        "description": "`true` when there are more events after `next_cursor`, meaning the feed held more than `limit`; continue immediately with `since=next_cursor`. `false` when you are at the end of the feed.",
                        "examples": [
                            true
                        ]
                    }
                },
                "required": [
                    "events",
                    "next_cursor",
                    "has_more"
                ],
                "title": "WoltEventsPage"
            },
            "WoltInvoiceRef": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "The invoice's id in fature.al.",
                        "examples": [
                            512430
                        ]
                    },
                    "number": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The invoice number, such as `184\/2026`; `null` while it has not been assigned yet.",
                        "examples": [
                            "184\/2026"
                        ]
                    },
                    "state": {
                        "type": "string",
                        "description": "The fiscal state, the same as the order's `fiscal_state`: `pending`, `deferred`, `fiscalised` or `failed`. Within this reference it is in practice `deferred` or `fiscalised`, because the reference exists only when the order has an invoice.",
                        "examples": [
                            "fiscalised"
                        ]
                    },
                    "fiscal_iic": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The invoice's IIC (NSLF), the identifying code computed at issue; `null` only when the invoice does not have it yet.",
                        "examples": [
                            "B1D6E9F3A4C2E7D8F0A1B2C3D4E5F601"
                        ]
                    },
                    "fiscal_fic": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The invoice's FIC (NIVF), the code the CIS returns when it registers the invoice; `null` while the invoice is waiting for fiscalization (`deferred`).",
                        "examples": [
                            "3a9c6e1f-2b4d-4f8e-9c7a-5d1e0b2f4a6c"
                        ]
                    }
                },
                "required": [
                    "id",
                    "number",
                    "state",
                    "fiscal_iic",
                    "fiscal_fic"
                ],
                "title": "WoltInvoiceRef"
            },
            "WoltOrderCompact": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "The order's id in fature.al; use it as `{id}` in the order and action endpoints.",
                        "examples": [
                            8801
                        ]
                    },
                    "wolt_order_id": {
                        "type": "string",
                        "description": "The order's id at Wolt.",
                        "examples": [
                            "66e1f3a2b4c5d6e7f8a9b0c1"
                        ]
                    },
                    "display_number": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The order number Wolt shows the customer (`order_number`); `null` when Wolt has not sent it yet.",
                        "examples": [
                            "A7"
                        ]
                    },
                    "status": {
                        "type": "string",
                        "description": "The order status, as it comes from Wolt: `received`, `acknowledged`, `preorder_confirmed`, `production`, `ready`, `picked_up`, `courier_at_customer`, `delivered`, `rejected`, `refunded`, `cancelled`, ...",
                        "examples": [
                            "ready"
                        ]
                    },
                    "fiscal_state": {
                        "type": "string",
                        "description": "The fiscal state, derived from the invoice: `pending` (no invoice), `deferred` (the invoice is waiting for the CIS), `fiscalised` (registered with the CIS) or `failed` (issuing failed and the order was left without an invoice).",
                        "examples": [
                            "fiscalised"
                        ]
                    },
                    "total_amount": {
                        "type": "number",
                        "description": "The total paid by the customer, in the order's currency (`currency`), in whole units (lek, not qindarka).",
                        "examples": [
                            1550
                        ]
                    },
                    "currency": {
                        "type": "string",
                        "description": "The order's currency code per ISO 4217; `ALL` when Wolt sends no currency.",
                        "examples": [
                            "ALL"
                        ]
                    },
                    "received_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "When fature.al registered the order from Wolt (ISO-8601 with the local time offset).",
                        "examples": [
                            "2026-09-14T12:05:31+02:00"
                        ]
                    },
                    "pickup_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The time promised to Wolt when accepting (ISO-8601 with the local time offset): when the order will be ready on a marketplace order, or when it will be delivered to the customer on a self-delivery order. `null` when no time was promised when accepting.",
                        "examples": [
                            "2026-09-14T12:30:00+02:00"
                        ]
                    },
                    "delivery_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The delivery type according to Wolt (`delivery.type`): `homedelivery` by courier, `takeaway` the customer picks it up, `eatin` eaten on the premises; `null` when Wolt does not send it.",
                        "examples": [
                            "homedelivery"
                        ]
                    },
                    "self_delivery": {
                        "type": "boolean",
                        "description": "`true` when the venue delivers the order with its own courier rather than a Wolt courier.",
                        "examples": [
                            false
                        ]
                    },
                    "branch": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The name of the business unit that holds the Wolt connection; `null` when the connection has no business unit.",
                        "examples": [
                            "Blloku"
                        ]
                    },
                    "invoice": {
                        "anyOf": [
                            {
                                "description": "The reference to the linked fiscal invoice, or `null` while no invoice has been issued.",
                                "$ref": "#\/components\/schemas\/WoltInvoiceRef"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    }
                },
                "required": [
                    "id",
                    "wolt_order_id",
                    "display_number",
                    "status",
                    "fiscal_state",
                    "total_amount",
                    "currency",
                    "received_at",
                    "pickup_at",
                    "delivery_type",
                    "self_delivery",
                    "branch",
                    "invoice"
                ],
                "title": "WoltOrderCompact"
            },
            "WoltOrderCompany": {
                "type": "object",
                "properties": {
                    "tax_id": {
                        "type": "string",
                        "description": "The NIPT of the company the customer asked to be invoiced (`company_tax_id` at Wolt).",
                        "examples": [
                            "L81420034K"
                        ]
                    },
                    "name": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The company name as the customer entered it at Wolt (`company_name`); `null` when Wolt sends only the NIPT.",
                        "examples": [
                            "Alfa Consulting shpk"
                        ]
                    },
                    "address": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The company address as the customer entered it at Wolt (`company_address`); `null` when missing.",
                        "examples": [
                            "Rruga e Kavaj\u00ebs 112, Tiran\u00eb"
                        ]
                    }
                },
                "required": [
                    "tax_id",
                    "name",
                    "address"
                ],
                "title": "WoltOrderCompany"
            },
            "WoltOrderDetail": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "The order's id in fature.al; use it as `{id}` in the order and action endpoints.",
                        "examples": [
                            8801
                        ]
                    },
                    "wolt_order_id": {
                        "type": "string",
                        "description": "The order's id at Wolt.",
                        "examples": [
                            "66e1f3a2b4c5d6e7f8a9b0c1"
                        ]
                    },
                    "display_number": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The order number Wolt shows the customer (`order_number`); `null` when Wolt has not sent it yet.",
                        "examples": [
                            "A7"
                        ]
                    },
                    "status": {
                        "type": "string",
                        "description": "The order status, as it comes from Wolt: `received`, `acknowledged`, `preorder_confirmed`, `production`, `ready`, `picked_up`, `courier_at_customer`, `delivered`, `rejected`, `refunded`, `cancelled`, ...",
                        "examples": [
                            "ready"
                        ]
                    },
                    "fiscal_state": {
                        "type": "string",
                        "description": "The fiscal state, derived from the invoice: `pending` (no invoice), `deferred` (the invoice is waiting for the CIS), `fiscalised` (registered with the CIS) or `failed` (issuing failed and the order was left without an invoice).",
                        "examples": [
                            "fiscalised"
                        ]
                    },
                    "total_amount": {
                        "type": "number",
                        "description": "The total paid by the customer, in the order's currency (`currency`), in whole units (lek, not qindarka).",
                        "examples": [
                            1550
                        ]
                    },
                    "currency": {
                        "type": "string",
                        "description": "The order's currency code per ISO 4217; `ALL` when Wolt sends no currency.",
                        "examples": [
                            "ALL"
                        ]
                    },
                    "received_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "When fature.al registered the order from Wolt (ISO-8601 with the local time offset).",
                        "examples": [
                            "2026-09-14T12:05:31+02:00"
                        ]
                    },
                    "pickup_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The time promised to Wolt when accepting (ISO-8601 with the local time offset): when the order will be ready on a marketplace order, or when it will be delivered to the customer on a self-delivery order. `null` when no time was promised when accepting.",
                        "examples": [
                            "2026-09-14T12:30:00+02:00"
                        ]
                    },
                    "delivery_type": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The delivery type according to Wolt (`delivery.type`): `homedelivery` by courier, `takeaway` the customer picks it up, `eatin` eaten on the premises; `null` when Wolt does not send it.",
                        "examples": [
                            "homedelivery"
                        ]
                    },
                    "self_delivery": {
                        "type": "boolean",
                        "description": "`true` when the venue delivers the order with its own courier rather than a Wolt courier.",
                        "examples": [
                            false
                        ]
                    },
                    "branch": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The name of the business unit that holds the Wolt connection; `null` when the connection has no business unit.",
                        "examples": [
                            "Blloku"
                        ]
                    },
                    "invoice": {
                        "anyOf": [
                            {
                                "description": "The reference to the linked fiscal invoice, or `null` while no invoice has been issued.",
                                "$ref": "#\/components\/schemas\/WoltInvoiceRef"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "customer": {
                        "description": "The order's customer (consumer), as Wolt sends it.",
                        "$ref": "#\/components\/schemas\/WoltCustomer"
                    },
                    "company": {
                        "anyOf": [
                            {
                                "description": "The company invoiced on a B2B order, or `null` for a regular order.",
                                "$ref": "#\/components\/schemas\/WoltOrderCompany"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "preorder": {
                        "anyOf": [
                            {
                                "description": "The preorder details, or `null` for an immediate order.",
                                "$ref": "#\/components\/schemas\/WoltPreorder"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "lines": {
                        "type": "array",
                        "description": "The order lines, in Wolt's order. While the order has no invoice they come from the Wolt payload, with the product resolved from the menu item mapping; once the invoice is issued, they come from the fiscal invoice lines and carry the product they were invoiced with.",
                        "items": {
                            "$ref": "#\/components\/schemas\/WoltOrderLine"
                        }
                    },
                    "totals": {
                        "description": "Summary of the order amounts, derived from the Wolt payload, so the same before and after fiscalization.",
                        "$ref": "#\/components\/schemas\/WoltOrderTotals"
                    }
                },
                "required": [
                    "id",
                    "wolt_order_id",
                    "display_number",
                    "status",
                    "fiscal_state",
                    "total_amount",
                    "currency",
                    "received_at",
                    "pickup_at",
                    "delivery_type",
                    "self_delivery",
                    "branch",
                    "invoice",
                    "customer",
                    "company",
                    "preorder",
                    "lines",
                    "totals"
                ],
                "title": "WoltOrderDetail"
            },
            "WoltOrderEvent": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "description": "The event id, always increasing; it is the feed cursor: send the highest one you have seen as `since`.",
                        "examples": [
                            10421
                        ]
                    },
                    "type": {
                        "type": "string",
                        "description": "The event type: `order.received`, `order.accepted`, `order.in_production`, `order.preorder_confirmed`, `order.ready`, `order.picked_up`, `order.courier_at_customer`, `order.delivered`, `order.rejected`, `order.cancelled`, `order.fiscalized`, `order.fiscalization_failed` or `order.updated` (a status change that has no type of its own).",
                        "examples": [
                            "order.ready"
                        ]
                    },
                    "order_id": {
                        "type": "integer",
                        "description": "The fature.al id of the order the event is about; the same as `order.id`.",
                        "examples": [
                            8801
                        ]
                    },
                    "wolt_order_id": {
                        "type": "string",
                        "description": "The order's id at Wolt.",
                        "examples": [
                            "66e1f3a2b4c5d6e7f8a9b0c1"
                        ]
                    },
                    "status": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The order status at the moment of the event, with the same values as `order.status`.",
                        "examples": [
                            "ready"
                        ]
                    },
                    "occurred_at": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "When the event was recorded in fature.al (ISO-8601 with the local time offset).",
                        "examples": [
                            "2026-09-14T12:24:10+02:00"
                        ]
                    },
                    "order": {
                        "description": "A short snapshot of the order as it was when the event was recorded; for the current state call `GET \/wolt\/orders\/{id}`.",
                        "$ref": "#\/components\/schemas\/WoltOrderCompact"
                    }
                },
                "required": [
                    "id",
                    "type",
                    "order_id",
                    "wolt_order_id",
                    "status",
                    "occurred_at",
                    "order"
                ],
                "title": "WoltOrderEvent"
            },
            "WoltOrderInvoiceResult": {
                "type": "object",
                "properties": {
                    "fiscal_state": {
                        "type": "string",
                        "description": "The order's fiscal state, derived from its invoice: `pending` (no invoice yet), `deferred` (the invoice has been issued, but the CIS has not registered it yet), `fiscalised` (the CIS has registered the invoice) or `failed` (an attempt to issue it failed and the order was left without an invoice).",
                        "examples": [
                            "fiscalised"
                        ]
                    },
                    "invoice": {
                        "anyOf": [
                            {
                                "description": "The order's full invoice, or `null` while the order has no invoice (`fiscal_state` `pending` or `failed`). In the `deferred` state the invoice is returned with `fic: null`. When the token's user is of the operator type, the invoice is returned only if that user issued it; otherwise `invoice` is `null` even though `fiscal_state` indicates an invoice.",
                                "$ref": "#\/components\/schemas\/InvoiceDetail"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    }
                },
                "required": [
                    "fiscal_state",
                    "invoice"
                ],
                "title": "WoltOrderInvoiceResult"
            },
            "WoltOrderLine": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "The item name: after the invoice is issued, the name it was invoiced under (the name of the mapped product, or the Wolt item name when there is no mapping); before that, the Wolt item name.",
                        "examples": [
                            "Pizza Margherita"
                        ]
                    },
                    "quantity": {
                        "type": "number",
                        "description": "The quantity ordered (`count` at Wolt).",
                        "examples": [
                            2
                        ]
                    },
                    "unit_price": {
                        "type": "number",
                        "description": "The unit price Wolt charged the customer, in the order's currency.",
                        "examples": [
                            750
                        ]
                    },
                    "total": {
                        "type": "number",
                        "description": "The line total after discount, in the order's currency; this is the amount invoiced.",
                        "examples": [
                            1300
                        ]
                    },
                    "discount": {
                        "type": "number",
                        "description": "The discount applied to the line (item, basket and options combined), in the order's currency; `total` is already net of it. After the invoice is issued it is taken from the Wolt payload by line position, and it is 0 when the invoice lines do not match the Wolt lines one to one.",
                        "examples": [
                            200
                        ]
                    },
                    "product": {
                        "anyOf": [
                            {
                                "description": "The mapped product in fature.al, or `null` when the Wolt item is not mapped to any product.",
                                "$ref": "#\/components\/schemas\/WoltProductRef"
                            },
                            {
                                "type": "null"
                            }
                        ]
                    },
                    "options": {
                        "type": "array",
                        "description": "The modifiers and options the customer chose for the line, as Wolt sends them: objects with `group` (the option group), `value` (the chosen option), `count` (how many times) and `price` (the price add-on, in the order's currency, already included in `total`). Empty when there are no options, and also empty after the invoice is issued when the invoice lines do not match the Wolt lines.",
                        "examples": [
                            [
                                {
                                    "group": "Madh\u00ebsia",
                                    "value": "E madhe",
                                    "count": 1,
                                    "price": 0
                                }
                            ]
                        ],
                        "items": {}
                    }
                },
                "required": [
                    "name",
                    "quantity",
                    "unit_price",
                    "total",
                    "discount",
                    "product",
                    "options"
                ],
                "title": "WoltOrderLine"
            },
            "WoltOrderTotals": {
                "type": "object",
                "properties": {
                    "subtotal_before_discount": {
                        "type": "number",
                        "description": "The basket total before any discount, in the order's currency.",
                        "examples": [
                            1750
                        ]
                    },
                    "discount": {
                        "type": "number",
                        "description": "The full discount the customer received from the promotions in `campaigns`, in the order's currency.",
                        "examples": [
                            200
                        ]
                    },
                    "total": {
                        "type": "number",
                        "description": "The total paid by the customer, in the order's currency; the same as the order's `total_amount`.",
                        "examples": [
                            1550
                        ]
                    },
                    "currency": {
                        "type": "string",
                        "description": "The currency code per ISO 4217; `ALL` when Wolt sends no currency.",
                        "examples": [
                            "ALL"
                        ]
                    },
                    "campaigns": {
                        "type": "array",
                        "description": "The names of the Wolt promotions applied to the order (`campaigns_applied[].campaign_name`), as strings without duplicates; empty when none was applied.",
                        "examples": [
                            [
                                "Java e pic\u00ebs"
                            ]
                        ],
                        "items": {}
                    }
                },
                "required": [
                    "subtotal_before_discount",
                    "discount",
                    "total",
                    "currency",
                    "campaigns"
                ],
                "title": "WoltOrderTotals"
            },
            "WoltOrdersPage": {
                "type": "object",
                "properties": {
                    "orders": {
                        "type": "array",
                        "description": "The page's orders in short form, sorted by id descending (newest first), up to `limit` items and restricted by the `status`, `from` and `to` filters when you sent them. Empty when no order matches.",
                        "items": {
                            "$ref": "#\/components\/schemas\/WoltOrderCompact"
                        }
                    },
                    "next_cursor": {
                        "type": "string",
                        "description": "The cursor for the next page: the id of the oldest order on this page, or `0` when the page is empty. Send it as `cursor` to get the orders older than that one. Returned as a string even though it is a number.",
                        "examples": [
                            "8777"
                        ]
                    },
                    "has_more": {
                        "type": "boolean",
                        "description": "`true` when there are orders older than `next_cursor` that match the filters; `false` when this is the last page.",
                        "examples": [
                            true
                        ]
                    }
                },
                "required": [
                    "orders",
                    "next_cursor",
                    "has_more"
                ],
                "title": "WoltOrdersPage"
            },
            "WoltPingResult": {
                "type": "object",
                "properties": {
                    "company": {
                        "type": "string",
                        "description": "The name of the fature.al company the Wolt connection belongs to.",
                        "examples": [
                            "Pizzeria Era shpk"
                        ]
                    },
                    "branch": {
                        "type": "string",
                        "description": "The name of the business unit (branch) the Wolt venue is linked to.",
                        "examples": [
                            "Blloku"
                        ]
                    },
                    "venue_id": {
                        "type": "string",
                        "description": "The venue id at Wolt, the one the connection was registered with.",
                        "examples": [
                            "5f3a1b2c4d5e6f7a8b9c0d1e"
                        ]
                    },
                    "connection_status": {
                        "type": "string",
                        "description": "The status of the Wolt connection in fature.al: `active`, `paused` or `disconnected`. In a 200 response it is always `active`, because the token resolves only to an active connection; a paused or disconnected connection returns 403 with the code `no_venue`.",
                        "examples": [
                            "active"
                        ]
                    },
                    "server_time": {
                        "type": "string",
                        "description": "The server time at the moment of the response, ISO-8601 with the local time offset. Compare it with your own clock when reading `received_at`, `pickup_at` and `occurred_at`, which come in the same format.",
                        "examples": [
                            "2026-09-14T12:24:10+02:00"
                        ]
                    }
                },
                "required": [
                    "company",
                    "branch",
                    "venue_id",
                    "connection_status",
                    "server_time"
                ],
                "title": "WoltPingResult"
            },
            "WoltPreorder": {
                "type": "object",
                "properties": {
                    "time": {
                        "type": "string",
                        "description": "The time the customer scheduled the order for (`pre_order.preorder_time`), ISO-8601 as Wolt sends it.",
                        "examples": [
                            "2026-09-14T18:30:00+02:00"
                        ]
                    },
                    "status": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The preorder status at Wolt (`pre_order.pre_order_status`), as Wolt sends it; `null` when missing.",
                        "examples": [
                            "confirmed"
                        ]
                    }
                },
                "required": [
                    "time",
                    "status"
                ],
                "title": "WoltPreorder"
            },
            "WoltProductRef": {
                "type": "object",
                "properties": {
                    "code": {
                        "type": "string",
                        "description": "The product code in fature.al.",
                        "examples": [
                            "PZ-MARG"
                        ]
                    },
                    "name": {
                        "type": "string",
                        "description": "The product name in fature.al.",
                        "examples": [
                            "Pizza Margherita"
                        ]
                    }
                },
                "required": [
                    "code",
                    "name"
                ],
                "title": "WoltProductRef"
            },
            "WoltRejectRequest": {
                "type": "object",
                "description": "Body of the reject action. Kept as a FormRequest so the allowed reject codes\nare documented as an enum in the API docs, while failedValidation still emits\nthe partner envelope { status, message, code, errors } on bad input.",
                "properties": {
                    "reason": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "A short, human-readable reason; Wolt may show it to the customer.",
                        "examples": [
                            "Kitchen is closing"
                        ],
                        "maxLength": 255
                    },
                    "code": {
                        "type": [
                            "string",
                            "null"
                        ],
                        "description": "The reason code, for machines. Default is GENERIC.",
                        "enum": [
                            "GENERIC",
                            "ITEMS_UNAVAILABLE",
                            "VENUE_CLOSING_SOON",
                            null
                        ],
                        "examples": [
                            "ITEMS_UNAVAILABLE"
                        ]
                    }
                },
                "title": "WoltRejectRequest"
            }
        },
        "responses": {
            "AuthenticationException": {
                "description": "Unauthenticated",
                "content": {
                    "application\/json": {
                        "schema": {
                            "type": "object",
                            "properties": {
                                "message": {
                                    "type": "string",
                                    "description": "Error overview."
                                }
                            },
                            "required": [
                                "message"
                            ]
                        }
                    }
                }
            }
        }
    }
}