HPOS 2 API
Horeca24 Partner API v1
Send orders into a restaurant's till and receive their status through signed webhooks.
The Partner API connects a delivery or ordering platform (the partner) to a restaurant's Horeca24 till. You send orders in. The restaurant handles them in its till, and you hear back through signed webhooks. The menu comes to you as a file under a stable URL.
Every endpoint, every webhook event and the menu file format is documented in the API reference tab, generated from the OpenAPI 3.1 specification.
How it works
How the Partner API connects you to the restaurant's till
flowchart TB
P["<b>Partner</b><br/>your platform"]
A["<b>Partner API</b><br/>ping · webhook · orders<br/>cancel · delivery"]
T["<b>Restaurant till</b><br/>Horeca24"]
M[("<b>Menu file</b><br/>stable URL")]
P -->|"calls with your API key"| A
A -->|"signed webhook events"| P
A <-->|"orders ring in,<br/>the restaurant decides"| T
T -.->|"menu sync writes"| M
P -->|"GET, no key"| M- One connection is one restaurant and one partner channel. The restaurant creates the connection in its till and gives you two things: the base URL and an API key. The key belongs to that one connection. There is no partner-level account and no link step. If you serve many restaurants, you hold one key per restaurant.
- We push the menu. When the restaurant syncs its menu or switches an item on or off, we write the menu file and send you
menu.updatedwith the file's URL and hash. The URL stays the same for the connection. Download the file from there whenever you need it. - Your prices count. Each order line carries its own name, gross price and tax rate, and the till takes them as you sent them. We check that your sums add up. We do not refuse a line because of its price, or because the restaurant switched the item off after your last copy of the menu.
- The restaurant decides. Acceptance (with a pickup time), rejection, ready, completion and cancellation by the restaurant reach you as
order.*webhook events. You can cancel an order, and if your own courier delivers, you can send courier updates.
The API is for server-to-server calls only. It is not made for browsers.
Get started
- wiki/hpos2-api/quickstart – Check the key, register a webhook, send a first order.
- wiki/hpos2-api/authentication – Bearer key per connection, errors 401 and 403, key rotation.
- wiki/hpos2-api/conventions – JSON, amounts in cents, timestamps, ids, optional fields.
Core concepts
- wiki/hpos2-api/endpoints-and-rate-limits – All endpoints in one table and the shared limit of 60 requests per minute.
- wiki/hpos2-api/connection-and-webhook-setup – Ping, set the webhook URL, read it, rotate the signing secret.
- wiki/hpos2-api/menu – The menu is a file under a stable URL; menu.updated tells you when it changed.
- wiki/hpos2-api/orders – Create, validate, read and cancel orders; courier updates for your own couriers.
- wiki/hpos2-api/order-lifecycle – Status flow from inProgress to completed, rejected or cancelled.
Events
- wiki/hpos2-api/webhooks – Signed delivery, retries, signature verification, event types and ordering.
- wiki/hpos2-api/retries-and-idempotency – Safe retries through the externalId; what to retry and what not.
Help
- wiki/hpos2-api/errors – Error body, error codes and what to do about each.
- wiki/hpos2-api/go-live-checklist – The steps to test before you go live.
- wiki/hpos2-api/faq – Short answers to the questions partners ask most.