HoReCa

Önemli Noktalar

  1. Get Fiscal Parameters ZORUNLUDUR: Sepet oluşturmadan önce terminal-id ile Get Fiscal Parameters API çağrılması ve dönen sectionNo/taxPercent değerleri MUTLAKA kullanılmalıdır.

  2. Kablosu entegrasyonda Polling YAPILMAZ, Webhook ZORUNLUDUR: Sepet durumu kontrol etmek için setInterval/polling kullanamazsınız. Set Client Settings API ile webhook tanımlayın.

  3. sectionNo Ataması OKC Cihazında Tanımlanır: API'ye gönderilen sectionNo değerleri, OKC cihazında önceden Setup edilmiş mali kısımlarla eşleşmeli. Fiscal Parameters API bu değerleri döndürür.

  4. basketID Benzersiz Olmalıdır: Her sepet için UUID v4 kullanın. Sabit veya tahmin edilebilir ID'ler sepetlerin karışmasına neden olur.


Tek Fişte Farklı KDV

Soru: Aşağıdaki sepet doğru mu? Özellikle taxPercent değerleri ve sectionNo ataması onaylanmak isteniyor?

{
  "basketID": "masa-12-2025-04-11",
  "documentType": 0,
  "items": [
    {"name": "Izgara Köfte",  "price": 32000, "sectionNo": 2, "taxPercent": 1000, "quantity": 1000},
    {"name": "Efes Bira 0.5", "price": 18000, "sectionNo": 1, "taxPercent": 2000, "quantity": 2000}
  ],
  "paymentItems": [{"amount": 78000, "type": 1}]
}

✅ CEVAP

Sepet yapısı DOĞRU, ancak aşağıdaki hususlara dikkat edilmeli:

  1. sectionNo Değerleri: Örnekteki sectionNo atamalarının (1=alkol%20, 2=yiyecek%10) OKC cihazında fiziksel olarak tanımlanmış olması gerekir. Bunları doğrulamak için:

  2. taxPercent FORMAT: Değerler temel puan formatında gönderilir (100 = %1, 1000 = %10, 2000 = %20). Örnekteki değerler doğru.

  3. Tutar Hesaplaması:

    • Izgara Köfte: 32.000 TL (sectionNo 2, %10 KDV) → Toplam tutara %10 katkı

    • Bira: 36.000 TL (18×2, sectionNo 1, %20 KDV) → Toplam tutara %20 katkı

    • Servis: 10.000 TL (sectionNo 3, %20 KDV) → Toplam tutara %20 katkı

    • Toplam: 78.000 TL ✓

  4. Sectionno: 3 Ayrı Kısım mı?

    • EVET, ayrı olmalıdır. Servis bedeli yiyecek kalemine dahil edilirse Türkiye'de vergi ziyaı oluşur.

    • Restoranlar TÜRe göre sectionNo: 3'ü "Garsoniye / Servis Bedeli" olarak setup ederler.

    • Bu kurulum OKC cihazında yapılır (Setup > Sections), API'de değil.

Doğru Kod Yapısı

Token Dokümantasyon Referansı

  • Get Fiscal Parameters API: GET /v1/fiscal-info?terminal-id={terminalId}

  • Yanıt örneği:


Hesap Bölme (Split Bill): Tek Masada 3 Farklı Ödeme

Soru: Bir masadaki ödeme 3 parça yapılacaksa 3 ayrı sepet arka arkaya OKC'ye gönderilebilir mi? Aynı masa/oturum için zincirleme sepet gönderiminde herhangi bir kısıt var mı?

✅ CEVAP

Arka arkaya sepet göndermede bir kısıt yoktur ancak işlemlerin karışmadan parçalı ödenebilmesi için doğrudan ÖKC üzerinde parçalı ödeme akışı kullanılmalıdır.

Tek bir sepet OKC'ye gönderilir, parçalama ve tahsilat adımları cihaz üzerinde yapılır. Ödemeler tamamlandığında entegrasyon tarafına webhook ile ödeme bilgileri döner.

Tek Sepet ile Parçalı Ödeme (ÖNERILEN AKIŞ)

Webhook: Parçalı Ödemeler

Bu Akışın Avantajları

  • ✅ OKC cihazının native split bill özelliğini kullanır

  • ✅ Sistem kompleksliğini azaltır

  • ✅ Tüm ödemeler tek basketID altında konsolide edilir

  • ✅ Müdür/kasiyer dostu (cihaz üzerinde "Hesap Böl" butonu)

  • ✅ Audit trail daha temiz


İkramı / Bedelsiz Ürün

Soru A: Ürünü sepete 0 fiyatlı kalem olarak eklemek mümkün mü? Soru B: Gerçek fiyatı yazıp indirim kalemi eklemek mümkün mü? Soru C: Toplam tutarı 0 TL olan bir sepet OKC'ye gönderilebilir mi?

✅ CEVAPLAR

Soru
Cevap
Açıklama

A - 0 TL Kalem

⚠️ ÖNERILMEZ

Patron ikramı için doğrudan 0 TL kalem yerine indirim akışı kullanılmalıdır.

B - Gerçek fiyat + indirim

✅ EVET

Tutar indirimi olarak %100 indirim gönderebilirsiniz.

C - Uygulama yöntemi

adjust ile

discount objesinde type ve value/totalValue iletilmelidir.

Önerilen Yöntem

Patron ikramı için ürün gerçek fiyatıyla kalır, indirim item.adjust üzerinden gönderilir.

Discount objesindeki "type": 0 ve "value" alanını tek ürün fiyatı olarak iletebilirsiniz.

Ürün quantity'si 1'den fazla ise item.adjust içinde "value" yerine "totalValue" göndererek birim fiyata değil tüm ürünlere uygulanacak indirimi iletebilirsiniz.

JSON Örnekleri

3 adet kolanın birim fiyatına 100 TL indirim

3 adet kolanın tamamına 300 TL indirim

Not

Patron ikramı senaryosunda ana yaklaşım: item.adjust ile indirim göndermek, kalemi sıfırlamak yerine mali izlenebilirliği korumaktır.


Kart ile Bahşiş

Soru A: Bahşiş OKC fişine dahil edilmeli mi? Soru B: Dahil edilecekse hangi kısıma, hangi KDV oranıyla? Soru C: paymentItems toplamı items toplamını aşabilir mi?

✅ CEVAPLAR

Kredi kartı ile bahşiş için resmi yaklaşım şu an geliştirme aşamasındadır.


Yemek Çeki / TokenFlex / Sodexo / Multinet / Edenred

Soru: Yemek çeki ödemesi paymentItems içinde hangi type kodu ile iletilmeli?

Çözüm: Yemek Çekini Kart (Type 7) Olarak Gönder


Büyük Masa Kurumsal Fatura (Tutar > 12.000 TL)

Soru: İşyeri kendi e-fatura sisteminde 2 ayrı KDV oranı içeren fatura kesiyor, sonra OKC'ye E-Fatura Bilgi Fişi (documentType:9006) gönderiyor. Bilgi fişindeki items listesi e-fatura ile birebir eşleşmeli mi, yoksa sadece toplam tutar yeterli mi?

✅ CEVAP

Items listesi e-fatura ile BİREBİR eşleşmeli. Sadece toplam yeterli DEĞİL.

Token OKC, E-Fatura Bilgi Fişi (documentType: 9006) gönderildiğinde, aşağıdaki doğrulamalar yapar:

  1. KDV Tutarı Doğrulaması: Gönderilen items'den hesaplanan KDV, e-faturadaki KDV ile eşit olmalı

  2. Tutar Doğrulaması: Items toplamı, birebir eşleşmeli

  3. KDV Kısımları (sectionNo): Farklı oranlar farklı kısımlar MUTLAKA ayrılmalı

Doğru Davranış

Kod Yapısı

JSON Örneği (Onerilen Örnekten Düzeltilmiş)

Dikkat: documentType: 9006 Şartları

  • İşyeri: E-fatura mükellefi OLMALI

  • Müşteri: E-fatura mükellefi OLMALI (B2B)

  • Tutar: Genellikle > 12.000 TL

  • E-Fatura Sistemi: İşyerin e-fatura platformunda fatura önceden oluşturulmuş OLMALI

  • Seri Numarası: GIB veya ARGS başlayan belge numarası

Eğer müşteri kurumsal değilse → documentType: 9007 (E-Arşiv Bilgi Fişi)


Otel Minibar ve Oda Servisi (Çoklu Gelir Merkezi)

Soru A: Farklı günlerde farklı gelir merkezlerinde oluşan harcamalar check-out sırasında tek bir sepette birleştirilerek OKC'ye gönderilebilir mi? Soru B: Her gelir merkezi için ayrı kısım (sectionNo) gerekiyor mu? Otel için önerilen kısım yapısı nedir?

✅ CEVAPLAR

Soru
Cevap
Detay

A - Konsolide Sepet

✅ EVET

Farklı gelir merkezlerinden harcamalar tek sepette birleştirilebilir.

B - Ayrı sectionNo

✅ EVET

Her gelir merkezi (minibar, oda servisi, SPA) ayrı sectionNo almalı.

Otel Kısım Yapısı (Önerilen)

Code Yapısı

JSON Örneği


Etkinlik Kaparosu ve Bakiye Tahsilatı

Soru: Adım 2'de düzenlenen e-Arşiv fişindeki toplam tutar, kaparo tutarını dahil mi etmeli, hariç mi tutmalı? Bakiye hesabı fatura numarasına mı yoksa basketID'ye mi bağlanıyor?

✅ CEVAP

Konusunda
Cevap & Açıklama

Kaparo Tutar Dahil mi?

Adım 2'de HARIÇ tutulmalı. Sepet toplamı = Tamam Hizmet Tutarı (kaparo YOK).

Bakiye Hesabı Bağlantısı

basketID'ye bağlanmalı (veritabanı tutucu) ve referans olarak fatura no'su kullanılmalı.

Süreç Detayları

Adım 1: Kaparo (documentType: 9000)

Kaydedilecek:

  • basketID: dugun-kaparo-2025-089-uuid

  • Müşteri: Mehmet & Ayşe Yılmaz

  • Kaparo Tutarı: 50.000 TL

  • Bulamış Tutar: 0 TL (kaparo sadece ayrılır)

Adım 2: Etkinlik Günü — Ana Fiş (documentType: 9007)

Kaydedilecek:

  • basketID: dugun-etkinlik-2025-089-uuid

  • Referans: dugun-kaparo-2025-089 (kaparo için)

  • Fiş Tutarı: 1.700.000 TL (kaparo HARİÇ)

  • Fatura No: ARS2025000089000

Adım 3: Bakiye Tahsilatı (documentType: 9002)

Kaydedilecek:

  • basketID: dugun-bakiye-2025-089-uuid

  • Referans: dugun-etkinlik-2025-089 (ana fiş için)

  • Bakiye Tutarı: 1.200.000 TL

  • Hesaplandı: 1.700.000 TL (Adım 2) + 50.000 TL (kaparo) - 550.000 TL (arzu edilen ek harç) = toplam

Kod Yapısı

Önemli: Tutar Hesaplaması


Referans: Fiscal Parameters Yapısı

Sepet oluşturmadan ÖNCE çağrılması gereken Get Fiscal Parameters API'sinin döndürdüğü yapı:


Özet: Kritik Kurallar

Kural
Şart
Hata Kodu

Get Fiscal Parameters MUTLAK

Sepet oluşturmadan önce

400 - Kısım yok

Unique basketID

UUID v4 kullanın

409 - Çokluk

Polling YASAK

Webhook kullanın

429 - Rate limit

LOCKED sepet güncelleme

Güncelleme yapılmaz

422 - Kilitli

documentType doğru seçim

Tutar bazında otomatik

400 - Yanlış type

Webhook MUTLAK

Ödeme sonucu alınır

Sonuç alınamaz

Items = sectionNo'ye ait

Fiscal params'ten al

400 - Hatalı section

KDV dahil fatura eşiği

12.000 TL (2026)

Fiş reddedilir

Last updated