Senaryo
Ayşe Yılmaz (Hasta123) bir Tedavi (67) için gelir. Tedavi KDV hariç 2.500 TL’dir, %20 KDV uygulanır ve Hastaya %10 indirim yapılır. Hasta 1.000 TL’yi nakit, kalanı kredi kartıyla öder. Ardından klinik satış için e-SMM keser.
Örnekteki tutarlar şöyle hesaplanır:
Ön koşullar
Authorization: Bearer <access_token>veX-Tenant: <tenant_id>başlıkları. Bkz. Hızlı başlangıç ve Klinikler ve X-Tenant.- Aşağıdaki tabloda yazan scope’lar ve kullanıcı izinleri. Scope’lar için Scope’lar, izinler için İzinler ve görünürlük sayfasına bakın.
- Kliniğinizde e-SMM kesebilen bir fatura hesabı. Hesap kurulumu için e-Fatura entegrasyonu sayfasına bakın.
- Satıştaki Hasta, kalem personeli (
staff_id) ve Tedavi için kimlikler. Bkz. Hastalar ve Tedaviler.
ViewAllSales:Sale izniniz yoksa yalnızca kendi satışlarınızı ya da Hastanın lead’i size atanmış satışları görürsünüz. Kapsam dışındaki satış 403 değil 404 döner.Satış oluşturma
POST /api/v1/sales satışı ve kalemlerini tek işlemde oluşturur. Sunucu kalem toplamlarını her zaman kendisi hesaplar; gönderdiğiniz sub_total, total_discount ve total_tax değerleri yok sayılır.
Para birimi için currency_id gerekir. Kimliği GET /api/v1/sales/form-metadata yanıtındaki base_currency alanından alabilirsiniz. Baz para biriminde exchange_rate değerini 1 gönderin.
Satış oluşturma
201 ve satış detayıdır. Yanıttaki id değerini sonraki adımlarda kullanın. Bu rehberde satış kimliği 123, sonradan oluşacak fatura kimliği 456 olarak kabul edilir; tüm kimlikler örnektir.
Satış bu noktada Hastanın alacağı olarak kaydedilir; tahsilat henüz yoktur. Bu endpoint ödeme almaz. Taksitli satış için is_installment_sale ve installments[] alanlarını kullanın; taksit planını sonradan PUT ile değiştiremezsiniz.
Ödeme kaydetme
POST /api/v1/sales/{id}/payments satışa tahsilat ekler. amount ve payment_method zorunludur; type göndermezseniz collection (Tahsilat) olur. Ödeme yöntemi değerlerini GET /api/v1/payment-methods ile listeleyebilirsiniz.
1
İlk tahsilat: 1.000 TL nakit
Nakit tahsilat
remaining_balance değeri 1700 olur.2
İkinci tahsilat: 1.700 TL kredi kartı, hesaba işlenerek
account_id verirseniz tahsilat kasa/banka hesabına da işlenir. Hesabın para birimi currency_id ile farklıysa hesabın para birimi geçerli olur.Kredi kartı tahsilatı
remaining_balance değeri 0 olur.3
Hareketleri kontrol edin
GET /api/v1/sales/123/transactions satışın tüm hareketlerini döner. meta.collections_by_account alanı tahsilatları hesaba göre gruplar.sale_id, remaining_balance ve oluşan transaction nesnesini içerir. Tahsilat ve Hastaya ödeme aynı endpoint’ten geçer: type değerini payment yaparsanız para Hastaya geri ödenir.
Satışa tahsilat girdikten sonra kalemleri
PUT ile değiştirirseniz alacak hareketi güncellenmez ve kalan bakiye eski toplama göre görünür. Tutar değişecekse kalemleri tahsilattan önce güncelleyin.Fatura oluşturma
Fatura her zaman bir satıştan doğar. Flextell önce e-belge entegratörünü çağırır, sonra yerel kaydı yazar.1
Fatura hesabını belirleyin
GET /api/v1/sales/123 yanıtındaki default_invoice_account_id önerilen hesabı verir; değer null olabilir. null ise hesapları listeleyin:Hesapları listeleme
7’dir.2
Seriyi seçin
Seri listesi
{"invoice_account_id": 7, "series": {"SMM": "SMM"}}). Seçtiğiniz adı series_name olarak gönderin. Seriler 5 dakika önbellekte tutulabilir.3
Önizleyin
POST /api/v1/invoices/preview, oluşturma ile aynı gövdeyi alır (mode hariç) ve hiçbir şey kaydetmeden html döner.Önizleme
4
Faturayı kesin
mode değerini send yapın. draft taslak üretir ve satışın durumunu değiştirmez. Nilvera hesaplarında taslak için ayrı bir uç nokta yoktur; draft istekleri de entegratörün gönderim uç noktasına gider. Bu yüzden Nilvera ile çalışıyorsanız draft yerine önce önizleme kullanın.Fatura kesme
201 ve fatura nesnesidir; status değeri sent olur.custom_line_items göndermezseniz her satış kalemi bir fatura satırı olur. Satır tutarı, Hastadan KDV dahil tahsil edilen tutar sayılır. Örnekte 2.700 TL için brüt ücret 2.250 TL, KDV 450 TL, ödenecek toplam 2.700 TL’dir. global_withholding_rate (0 ile 1 arası kesir) ve diğer alanlar için Faturalar sayfasına bakın.
Aynı akışı panelden yürütmek için Tahsilat ve Faturalaştırma sayfalarına bakın.
Fatura durumunu izleme
Faturasent durumunda kesinleşir; entegratörün işlemi tamamlaması sonradan görünür. Güncel durumu entegratörden almak için sorgulayın:
Durum sorgusu
Birden çok faturayı
POST /invoices/query-status ile toplu sorgulayabilirsiniz; ids dizisi 1 ile 100 arası kimlik alır ve yanıt her zaman 200 döner. Başarısız kayıtlar results[].message alanında bildirilir.
Satışın kendisini de izleyin. Gönderilmiş faturalar satışın tamamını karşılayınca satış otomatik olarak invoiced (Faturalandırıldı) olur. Bu satış kilitlidir: PUT yalnızca notes alanını kabul eder, DELETE 422 SALE_INVOICED döner. Taslak faturalar satışı değiştirmez; taslağı POST /invoices/{id}/send ile kesinleştirdiğinizde satış durumu güncellenir.
Faturayı iptal ederseniz (POST /invoices/{id}/cancel) invoiced olan satış completed durumuna döner. İptali POST /invoices/{id}/revert-cancel ile geri alırsanız ve kalan faturalanabilir tutar sıfırsa satış yeniden invoiced olur.
Hata durumları
Hata gövdesisuccess: false, error_code ve message alanlarını taşır. Kodunuzu message metnine göre değil error_code değerine göre dallandırın. Genel liste için Hata kodları sayfasına bakın.
INVOICE_CREATE_FAILED yanıtı gerçek nedeni taşımaz. Şu nedenleri sırayla eleyin:
- Tutarı sıfır olan satış: 0 TL’lik satışa e-SMM kesilemez.
- Yabancı para birimli satışta
exchange_rate0’dan büyük değil. - Fatura hesabında API anahtarı yok ya da hesap türü E-Fatura.
- Lead aşamasındaki Hasta.
- Klinikte stok düşme modu Fatura Kesildiğinde ve stok yetersiz. Sunucu bu durumda
Yetersiz stok: <ürün> (Depo No: <depo>)hatasını üretir; yanıtta yine de yalnızca genel mesaj görürsünüz.
402 veya 428 ile döner. Bkz. Abonelik ve kurulum kilitleri.
İlgili sayfalar
Satışlar
Satış nesnesi, durumlar, listeleme ve dışa aktarma.
Hesaplar ve işlemler
Kasa/banka hesapları, hasta işlemleri ve bakiyeler.
Faturalar
Fatura nesnesi, iptal, PDF/XML ve fatura hesapları.
e-Fatura entegrasyonu
Entegratör hesabı ekleme, seriler ve kontör.