☰ Menü · Restoran ve kafeler
Rehberler

Restoran ve kafeler

İşletmenin POS sisteminin Loyaltyfy ile yapabileceği üç şey: QR menüyü senkron tutmak, masadan sipariş almak ve kasada sadakat programını çalıştırmak.

Fiyatlar ve tükenen ürünler için genellikle esas kaynak POS'tur. Her ürüne external_id alanında kendi stok kodunuzu (SKU) verin ve ürünlere bu kodla erişin. Bizim id'lerimizi saklamanız gerekmez.

  1. 1
    Mevcut menüyü okuyun

    GET /v1/menu tüm dillerde kategorileri, ürünleri ve opsiyonları döndürür. Tek dilde düz metin almak için ?lang=en ekleyin.

  2. 2
    Eksikleri oluşturun

    POST /v1/menu/items isteğini category (kategori id'si veya kendi kategori kodunuz, bilinmeyen kod yeni kategori oluşturur), external_id, bir veya daha fazla dilde name ve price ile gönderin. Aynı external_id tekrar gönderilirse mevcut ürün döner.

  3. 3
    Değişiklikleri gönderin

    Her değişiklikte veya birkaç dakikada bir, fiyat ve stok durumuyla POST /v1/menu/items/bulk gönderin. İstek başına en fazla 500 ürün. Bilinmeyen SKU'lar not_found içinde döner.

curl
curl https://loyaltyfy.io/api/v1/menu/items/bulk \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      { "item": "1001", "price": 4800 },
      { "item": "2040", "available": false },
      { "item": "3017", "price": 9900, "old_price": 12000 }
    ]
  }'
Yanıt · 200
{
  "object": "menu_bulk_result",
  "updated": ["1001", "2040"],
  "unchanged": [],
  "not_found": ["3017"],
  "failed": []
}

Tükenenler listesi: available: false ürünü "tükendi" etiketiyle görünür bırakır ve sipariş butonunu kaldırır. visible: false ürünü gizler. Opsiyonların kendi anahtarı vardır, böylece kahveyi kapatmadan yulaf sütünü kapatabilirsiniz:

curl
curl -X PATCH https://loyaltyfy.io/api/v1/menu/option_values/MOD-OAT \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{ "available": false }'
Fotoğrafları, açıklamaları ve çevirileri genellikle işletme Loyaltyfy menü editöründe düzenler. Yalnızca POS'un gerçekten yönettiği verileri (fiyatlar, stok durumu, belki adlar) senkronize edin ki iki taraf birbirinin üzerine yazmasın.

Masadan siparişler

Sipariş özelliği açıkken (panelde Menü → Siparişler) masadaki QR'ı okutan misafirler sepetlerini işletmeye gönderebilir. Her masanın, masa numarasını içeren kendi bağlantısı vardır:

curl
https://loyaltyfy.io/m/your-venue?table=12

Her siparişin tutarını güncel menüye göre kendi tarafımızda hesaplarız, bu yüzden POS tutarlara güvenebilir. Tükenenler listesindeki bir ürün veya opsiyon içeren siparişler size ulaşmadan reddedilir.

  1. 1
    Yeni siparişleri alın

    order.created webhook'una abone olun veya 10 ila 15 saniyede bir GET /v1/orders?status=new ile sorgulayın.

  2. 2
    Kabul edin

    Siparişi POS'ta oluşturun, ardından kendi sipariş numaranızı external_id olarak vererek POST /v1/orders/{id}/accept çağırın. SKU'larınızla eşleştirmek için her satırın external_id değerini kullanın.

  3. 3
    İlerletin

    preparing, ready, served, completed değerleriyle PATCH /v1/orders/{id} gönderin. Mutfak siparişi alamıyorsa gerekçeyle birlikte POST /v1/orders/{id}/reject çağırın.

curl
curl "https://loyaltyfy.io/api/v1/orders?status=new" \
  -H "Authorization: Bearer sk_test_..."
Listeden bir sipariş
{
  "object": "order",
  "id": "0c69a81c-0fbc-4333-b26c-789566b9bea4",
  "number": 10,
  "status": "new",
  "table": "7",
  "note": "No onions, please",
  "currency": "MDL",
  "subtotal": 14000,
  "item_count": 2,
  "items": [
    {
      "item_id": "a48343bd-9f6e-424a-b003-fe790617f4d6",
      "external_id": "2040",
      "name": "Zeamă",
      "quantity": 2,
      "unit_price": 7000,
      "total": 14000,
      "options": []
    }
  ],
  "external_id": null,
  "reject_reason": null,
  "guest_language": "en",
  "source": "qr_menu",
  "livemode": true,
  "created_at": "2026-10-06T18:14:48.233+00:00",
  "accepted_at": null,
  "completed_at": null,
  "updated_at": "2026-10-06T18:14:48.233+00:00"
}
curl
curl -X POST https://loyaltyfy.io/api/v1/orders/0c69a81c-0fbc-4333-b26c-789566b9bea4/accept \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{ "external_id": "POS-ORDER-55821" }'

Durumlar yalnızca ileri gider: new → accepted → preparing → ready → served → completed. new ayrıca rejected olabilir, açık her sipariş cancelled olabilir. Adım atlanabilir (accepted durumundan doğrudan completed durumuna geçmek sorun değil). Geriye doğru geçiş 409 invalid_status_transition alır. POS entegrasyonu olmayan işletmeler aynı durumları Siparişler ekranından yönetir, bu yüzden POS'unuzun yalnızca kabul etmesi ve tamamlaması yeterlidir.

Kafe kasasında sadakat

Her POS entegrasyonunda olduğu gibi: kart okutulunca misafiri bulun, ödeme alınınca fişi gönderin. Damga kartlı kafelerde ("her 6. kahve bedava") damgayı fiş kazandırır. İşletme misafirlerin hangi ürünleri aldığını görsün diye ürün kodlarınızla birlikte line_items gönderin.

Entegrasyonla ilgili sorularınız için: api@loyaltyfy.io. Bir iş günü içinde yanıt veriyoruz.