Connect your POS to Mise

Any point-of-sale system can send its sales to Mise. Each sale takes its recipe's ingredients off the kitchen's stock, and the food cost variance report runs on real sales. There is nothing to apply for: the restaurant creates a key, and you send.

1. Get a key and a location id

An admin of the restaurant opens Admin → API keys in Mise, creates a key and copies it (it is shown once), and copies the id of the location the till belongs to from the same page. A key works for that one organisation only.

2. Send sales

POST https://www.miseapp.app/api/pos
Authorization: Bearer mise_pos_xxxxxxxxxxxxxxxx
Content-Type: application/json

{
  "location_id": "3f0c2a9e-…",
  "pos_provider": "my-pos",
  "sales": [
    {
      "pos_item_id": "BURGER-01",
      "quantity_sold": 2,
      "revenue": 58.00,
      "currency": "SAR",
      "sold_at": "2026-10-22T13:05:00Z",
      "pos_reference": "ORDER-8812-1"
    }
  ]
}
  • location_id: required; must belong to the key's organisation.
  • sales: 1 to 500 lines per request.
  • pos_item_id (or menu_item_id): your item id; required.
  • quantity_sold: a whole number, at least 1.
  • revenue: the line total, 0 or more.
  • currency: three letters; SAR when left out.
  • sold_at: ISO 8601; the time of the request when left out.
  • pos_reference: your unique id for the line. Strongly recommended, see below.
  • pos_provider: a short name for your system.

3. Read the answer

{
  "success": true,
  "records_inserted": 1,
  "duplicates_skipped": 0,
  "records_mapped": 1,
  "stock_lines_deducted": 4,
  "stock_lines_skipped": 0
}

A batch is all or nothing: if one line is invalid, nothing is written and the answer is 400 with up to 20 details saying which line and why. A wrong or revoked key is 401.

Resending is safe

A line whose pos_reference was already received from the same pos_provider is skipped, stock included, and counted in duplicates_skipped. Send a reference with every line and you can retry a batch after any timeout without counting a sale twice. Lines without a reference cannot be recognised again.

Linking items to recipes

Mise takes stock off only for items it knows. The restaurant links each POS item id to its recipe in Admin → POS Mappings. A sale of an item that is not linked is still recorded, with nothing taken off stock, and shows as not mapped in records_mapped.

Limits

  • 60 requests a minute per key, 120 a minute per IP address.
  • Over the limit the answer is 429 with a Retry-After header in seconds.
  • Send at most once a minute per till; a batch at the end of each order or each hour is plenty.

Help

Questions or an integration you want us to know about: support@miseapp.app.