https://app.flextell.ai/api/v1/invoices altındadır ve X-Tenant başlığı gerektirir. Başlık için Klinikler ve X-Tenant sayfasına bakın.
Desteklenen entegratörler
Entegratör, hesap oluştururken verdiğinizintegration_id ile seçilir. Katalog tüm klinikler için ortaktır.
Başlamadan önce şunlar hazır olmalı:
- Entegratörde açılmış, e-SMM (serbest meslek) modülü etkin bir hesap, tanımlı seri ve satın alınmış kontör.
- Entegratörün verdiği API anahtarı.
- Vergi kimlik numarası (VKN) veya TCKN, vergi dairesi ve adres bilgisi.
Flextell kayıt sırasında API anahtarını entegratöre karşı denemez; yalnızca şifreleyip saklar. Yanlış bir anahtar ilk seri, kontör veya gönderim çağrısında
INVOICE_SERIES_LOOKUP_FAILED, INVOICE_CREDIT_LOOKUP_FAILED veya INVOICE_SEND_FAILED hatasıyla ortaya çıkar. Anahtar yanıtlarda hiçbir zaman geri dönmez.Fatura hesabı ekleme
Hesap uçları ve gereken izinler:Gövde alanları
PUT isteği tam değiştirme gibi çalışır. Göndermediğiniz isteğe bağlı alanlar boşalır, mantıksal alanlar false olur, withholding_rate_percent 0’a döner. Yalnızca extra_fields birleştirilir: göndermediğiniz anahtarın kayıtlı değeri korunur. default_series bu istekle değişmez; bunun için ayrı uç vardır.
201 ve hesap nesnesidir. Nesnede kimlik bilgisinin kendisi yerine, hangi anahtarların tanımlı olduğunu gösteren configured_extra_fields listesi döner.
Hesabı silmek için DELETE /invoices/accounts/{id} çağırın. O hesapla kesilmiş en az bir fatura varsa istek 422 INVOICE_ACCOUNT_HAS_INVOICES ile reddedilir.
Panelde Bağlantılar → Entegrasyonlar altındaki Fatura Hesapları ekranı şu an salt okunurdur. Hesap ekleme, düzenleme, silme ve varsayılan seri değiştirme için API’yi kullanın. Ekran için Entegrasyonlar sayfasına bakın.
Seriler ve varsayılan seri
Bir belge kesmek için entegratördeki aktif serilerden birini seçersiniz.View:InvoiceAccount izni tek başına seri listesini açmaz.
Yanıt örneği
series bir ad-ad eşlemesidir; seri yoksa boş döner. Yalnızca aktif seriler listelenir.
default_series alanı zorunlu bir metindir (en çok 255 karakter). Flextell değeri entegratöre karşı doğrulamaz, bu yüzden GET /invoices/series yanıtındaki adlardan birini gönderin.
Kontör bilgisi
GET /invoices/credit?invoice_account_id=123 entegratördeki kontör bakiyesini döndürür. Scope invoices:read, izin View:Invoice (yalnızca bu izin).
Flextell kontörü kendisi saymaz; yalnızca entegratörün bildirdiği bakiyeyi okur. Her belge entegratörün kontörünü tüketir.
Seri listesi 5 dakika, kontör bilgisi 1 dakika önbellekte tutulur. Başarısız sorgular önbelleğe alınmaz. Hesabı güncellediğinizde veya sildiğinizde ya da varsayılan seriyi değiştirdiğinizde ilgili önbellek temizlenir.
Fatura gönderimi
Belge her zaman bir satıştan kesilir. Akış şöyledir:1
Hesabı ve seriyi belirleyin
GET /invoices/accounts ile hesabı, GET /invoices/series ile seriyi seçin. Satış detayındaki (GET /sales/{id}) default_invoice_account_id alanı önerilen hesabı verir.2
Önizleyin (isteğe bağlı)
POST /invoices/preview aynı gövdeyi (mode hariç) alır ve kayıt oluşturmadan { "sale_id", "invoice_account_id", "html" } döndürür.3
Belgeyi kesin
POST /invoices ile mode değerini seçin: send belgeyi hemen gönderir, draft taslak olarak kaydeder. Başarılı yanıt 201 ve fatura nesnesidir.4
Taslağı kesinleştirin
Taslak için
POST /invoices/{id}/send çağırın. Belge bu noktada resmen kesilir ve geri alınamaz.5
Durumu sorgulayın
POST /invoices/{id}/query-status entegratördeki durumu okuyup kaydı günceller. En fazla 100 faturayı tek istekte sorgulamak için POST /invoices/query-status ve ids dizisini kullanın.POST /invoices için Create:Invoice ve CreateDocument:Sale izinleri birlikte gerekir (scope invoices:write). Satışı görebiliyor olmanız da gerekir: ViewAllSales:Sale iznine sahip değilseniz yalnızca kendi satışlarınızı veya size atanmış lead’in hastasına ait satışları kesebilirsiniz. Diğer satışlar 404 döner. Taslağı gönderme için Send:Invoice, durum sorgulama için QueryStatus:Invoice izni gerekir.
Stopaj oranını API hesabın
withholding_rate_percent değerinden okumaz; her istekte global_withholding_rate göndermeniz gerekir. Satış kaleminin tutarı, hastadan tahsil edilen KDV dahil ve stopaj sonrası tutar sayılır. Stopaj uygulamak hastanın ödeyeceği tutarı değiştirmez, yalnızca brüt ücret tabanını büyütür.POST /invoices/{id}/cancel (Cancel:Invoice), iptali geri almak için POST /invoices/{id}/revert-cancel (RevertCancel:Invoice) kullanın. Nilvera iptal sonrası durum sorgusunda is_cancelled alanını true olarak döndürür ama status değerini cancelled yapmaz; iptalin kesin göstergesi olarak is_cancelled alanına bakın. Ayrıntılı fatura nesnesi ve diğer uçlar (PDF, XML, e-posta, arşiv) için Faturalar sayfasına, uçtan uca akış için Satış, tahsilat ve fatura rehberine bakın.
Hatalar
Hata yanıtlarının genel yapısı Hata kodları sayfasındadır. Bu sayfadaki uçlara özgü kodlar:
Entegratörden gelen hata metni bazı durumlarda
message alanına olduğu gibi taşınır. Zaman aşımı, yetkilendirme hatası ve bulunamayan belge için Türkçe karşılıklar döner, örneğin API yetkilendirmesi başarısız. Fatura hesabı ayarlarını kontrol edin. Bu mesaj hesabınızın API anahtarını kontrol etmeniz gerektiği anlamına gelir.
Toplu durum sorgusu POST /invoices/query-status her zaman 200 döner; başarısız faturalar results[].message içinde bildirilir. Tek bir faturada gönderim “zaten kayıtlı” gibi bir çakışma bildirirse, belgeyi yeniden göndermeden önce query-status ile durumunu kontrol edin.
İlgili sayfalar
Faturalar
Fatura nesnesi, filtreler, PDF, XML ve e-posta uçları.
Satış, tahsilat ve fatura
Satıştan faturaya uçtan uca akış.
Entegrasyonlar genel bakış
Diğer entegrasyonlar ve bağlantı kavramları.
Scope'lar
invoices:read ve invoices:write scope’ları.