# XFaster Partner Docs - [XFaster partner docs](https://developers.xfaster.net/index.md): Choose the right integration kit for your POS or ERP. - [Authentication](https://developers.xfaster.net/basics/authentication.md): API keys per store and webhook secrets. - [Webhooks](https://developers.xfaster.net/basics/webhooks.md): Signed events, verification and retries. - [Errors & limits](https://developers.xfaster.net/basics/errors.md): Error format, status codes, idempotency and rate limits. - [Sandbox](https://developers.xfaster.net/basics/sandbox.md): Test against a real store copy before going live. - [Restaurant overview](https://developers.xfaster.net/restaurant/overview.md): When to use the Restaurant kit. - [Restaurant setup](https://developers.xfaster.net/restaurant/setup.md): Credentials and environments. - [List orders](https://developers.xfaster.net/restaurant/orders/list.md): Open orders by default. Use `updated_since` as a safety net next to the webhooks: it returns every order that changed, finished ones included. The list is short on purpose. Fetch each order you need with `GET /orders/{id}`. - [Get an order](https://developers.xfaster.net/restaurant/orders/get.md): The full order, with items, choices, add-ons, deal contents, totals and payment. - [Received](https://developers.xfaster.net/restaurant/orders/received.md): Tells XFaster the order is in your POS. Nothing changes for the customer; XFaster sees that the connection works. - [Accept](https://developers.xfaster.net/restaurant/orders/accept.md): The order moves to `preparing`. The tablet shows it as accepted and the kitchen tickets print. If the tablet accepted first you get `409` with the current status. - [Change prep time](https://developers.xfaster.net/restaurant/orders/prep-time.md): Same rules as the tablet - only within 3 minutes of accepting, and only shorter. The courier and the customer are updated. - [Reject](https://developers.xfaster.net/restaurant/orders/reject.md): Only `new` orders that are not yet paid. A paid order gets `409 order_paid` - call XFaster support, which handles the refund. Don't reject because the kitchen is full; pause new orders instead. - [Ready](https://developers.xfaster.net/restaurant/orders/ready.md): The order moves to `ready`. For delivery orders the courier gets the signal, so call it only when the food is packed. Delivery customers never see "ready". - [Collected (pickup)](https://developers.xfaster.net/restaurant/orders/collected.md): Pickup orders only, when the customer takes the food (from `preparing` or `ready`). If the store asks customers for their order code, `code` must match. - [order.created](https://developers.xfaster.net/restaurant/events/created.md): A new order is waiting for the store. Card orders are sent only after the payment succeeds. Fetch the order with `GET /orders/{id}`. - [order.updated](https://developers.xfaster.net/restaurant/events/updated.md): Items or notes changed (an order edited while it is prepared, or market picking finished). Fetch it and reprint. - [order.cancelled](https://developers.xfaster.net/restaurant/events/cancelled.md): The order was cancelled by the customer, XFaster support or the store. Stop preparing it. - [order.status_changed](https://developers.xfaster.net/restaurant/events/status-changed.md): Any other status change - accepted (also on the tablet), ready, picked up by the courier, delivered. - [Get the menu](https://developers.xfaster.net/restaurant/menu/get.md): Categories, items with option groups, and add-ons. Deals appear as items and switch off by themselves when one of their items is off. - [Map your codes](https://developers.xfaster.net/restaurant/menu/mapping.md): Your codes then appear as `external_id` in the menu and in every order line. Items can also get a `barcode` (markets). `null` removes. All or nothing - an unknown id gets `404`, a taken code `422 external_id_taken`, a taken barcode `422 barcode_taken`. - [Update an item](https://developers.xfaster.net/restaurant/menu/item.md): Switch an item on or off, change its price or sale price, or (markets) its stock. Send only what changes. - [Update by your code](https://developers.xfaster.net/restaurant/menu/item-external.md): The same as `PATCH /items/{id}`, with your own code. - [Update an add-on](https://developers.xfaster.net/restaurant/menu/addon.md): Switch an add-on on or off, or change its price. - [Update many items](https://developers.xfaster.net/restaurant/menu/batch.md): Up to 100 changes per call. Each line uses `id`, `external_id` or `barcode` (or `addon_id` / `addon_external_id`), and reports its own result. - [Get store status](https://developers.xfaster.net/restaurant/store/get.md): Whether the store takes orders right now, its hours, and who issues the customer's invoices. - [Pause new orders](https://developers.xfaster.net/restaurant/store/busy.md): The kitchen can't keep up. New orders stop for a while and come back by themselves at `busy_until`. Accepted orders continue. - [Take orders again](https://developers.xfaster.net/restaurant/store/not-busy.md): Ends the busy pause right away. - [Open or close](https://developers.xfaster.net/restaurant/store/open-close.md): Switches the store off (`close`) or on (`open`) with no end time, like the switch on the tablet. Works only if the store owner allowed it for this key, otherwise `403`. For a rush, use busy. - [Restaurant checklist](https://developers.xfaster.net/restaurant/checklist.md): Tick every item on the sandbox before going live. - [Market overview](https://developers.xfaster.net/market/overview.md): When to use the Market kit. - [Market setup](https://developers.xfaster.net/market/setup.md): Barcodes first, then a nightly sync. - [Update by barcode](https://developers.xfaster.net/market/products/by-barcode.md): Markets use their barcodes as the key. Send price, sale price, stock or availability. - [Add a new product](https://developers.xfaster.net/market/products/create.md): A product your POS sells and XFaster doesn't have yet. It is created switched off; the store adds a picture and switches it on. Without `stock`, a market product starts at 999. - [Bulk price & stock](https://developers.xfaster.net/market/products/batch.md): Up to 100 changes per call. Each line uses `id`, `external_id` or `barcode` (or `addon_id` / `addon_external_id`), and reports its own result. - [Barcodes & codes](https://developers.xfaster.net/market/products/mapping.md): Your codes then appear as `external_id` in the menu and in every order line. Items can also get a `barcode` (markets). `null` removes. All or nothing - an unknown id gets `404`, a taken code `422 external_id_taken`, a taken barcode `422 barcode_taken`. - [Get the catalog](https://developers.xfaster.net/market/products/menu.md): Categories, items with option groups, and add-ons. Deals appear as items and switch off by themselves when one of their items is off. - [Picking](https://developers.xfaster.net/market/picking.md): How market orders become final. - [Market checklist](https://developers.xfaster.net/market/checklist.md): Tick every item on the sandbox before going live. - [Comax overview](https://developers.xfaster.net/comax/overview.md): For stores on Comax: XFaster connects to Comax itself. - [What we need from the store](https://developers.xfaster.net/comax/setup.md): A Comax login with Web Services permission. - [Prices and stock](https://developers.xfaster.net/comax/sync.md): How XFaster reads the store's Comax. - [Orders into Comax](https://developers.xfaster.net/comax/orders.md): Optional, off by default. - [Comax checklist](https://developers.xfaster.net/comax/checklist.md): Before switching a store on. - [Invoices and your Z report](https://developers.xfaster.net/reports/invoices.md): Record XFaster orders without double invoicing. - [Daily report](https://developers.xfaster.net/reports/daily.md): One business day (06:00 to 06:00), with the same numbers the store sees in the XFaster tablet's Z report, without commission. Use it to check your Z against XFaster. - [Create a test order](https://developers.xfaster.net/sandbox/create.md): Sandbox only. A test order with no customer and no courier; the sandbox then sends `order.created` to your endpoint, just like live. - [Play customer or courier](https://developers.xfaster.net/sandbox/act.md): Sandbox only. `cancel` cancels the test order as the customer; `pickup` picks it up as the courier. ## OpenAPI Specs - [openapi](/openapi.json) ## Optional - [XFaster](https://apps.xfaster.net) - [Guides (he/ar)](https://docs.xfaster.net) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.