Skip to main content
Flextell, satışlardan resmi belge kesmek için kliniğin kendi Nilvera veya NES hesabını kullanır. Bu sayfa, entegratör hesabını (Flextell’deki adıyla fatura hesabı) API ile nasıl ekleyeceğinizi, seri ve kontör bilgisini nasıl okuyacağınızı ve bir satıştan belge nasıl keseceğinizi anlatır. Tüm uçlar 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.
Bugün yalnızca e-SMM (Serbest Meslek Makbuzu) kesilebilir. API’ye document_type: "einvoice" olan bir hesap eklenebilir, ancak bu hesapla seri sorgulama, kontör sorgulama, önizleme ve belge gönderme çağrılarının hepsi hata verir. Fatura hesabını document_type: "evoucher" ile oluşturun.

Desteklenen entegratörler

Entegratör, hesap oluştururken verdiğiniz integration_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.
Başarılı yanıt 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.
mode=draft da entegratörü çağırır. Nilvera’nın ayrı bir taslak ucu yoktur; bu entegratörde taslak modunda da gönderim ucu kullanılır. Taslağı kesinleştirirken taslak anında saklanan belge yeniden gönderilir, satışta sonradan yaptığınız değişiklikler belgeye yansımaz. Toplam tutarı sıfır olan satıştan e-SMM kesilemez.
Fatura kayıtları değiştirilemez ve API ile silinemez. İptal için 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ı.