Skip to main content
Flextell iki defter tutar. Birincisi kliniğin kendi hesaplarıdır (banka ve kasa) ve bu hesaplardaki hesap hareketleridir. İkincisi her Hastanın hasta işlemleridir: Hastanın size ne kadar borçlu olduğunu ya da ne kadar ödediğini gösterir. Bu iki defterden bakiyeler hesaplanır: kimin ne kadar açık borcu olduğu. Bir Hastadan tahsilat aldığınızda ya da Hastaya ödeme yaptığınızda iki deftere de birer satır yazılır. Bu iki satır aynı batch_uuid değerini taşır ve eşleştirilmiş işlem sayılır. Satışa bağlı ödemeler sales kaynağındadır (Satışlar). Uçtan uca akış için Satış, tahsilat ve fatura rehberi sayfasına bakın.
Tüm istekler Authorization: Bearer <access_token> ve X-Tenant: <tenant_id> başlıklarını taşır. Endpoint özetindeki “İzin” sütunu “Yok” olmayan her endpoint hem scope hem izin ister; “Yok” olanlar yalnızca scope ister. Birden fazla scope listelenmişse hepsi gerekir. Scope’lar için Scope’lar sayfasına bakın.

Endpoint özeti

Başka bir kliniğin kaydına erişmeye çalışırsanız 404 RESOURCE_NOT_FOUND döner.

Genel kurallar

Tutarlar yanıtta her zaman nokta ondalıklı, binlik ayırıcısız metin olarak gelir: "1234.50". İstekte Türkçe biçimi de kabul edilir (15.000,50 değeri 15000.50 olur).
transaction_date ofsetsiz gönderilirse klinik saat diliminde okunur. Yanıtta klinik saatinde, ofsetli ISO 8601 olarak döner (2026-10-12T14:30:00+03:00). _from ve _to filtreleri klinik saatine göre tam gün sınırlarıdır. Okunamayan tarih 422 döner.
Hesaplar ve iki tür işlem de kalıcı silinir. Silinenler Geri Dönüşüm Kutusu’na gitmez.
Bazı doğrulama mesajları (örneğin hasta işlemindeki payment_method, debit_credit_code, amount, is_installment, installments alanları ve hesap güncellemedeki currency_id) Türkçe istekte bile İngilizce dönebilir. Mesaj metnine değil error_code alanına dayanın.
Listeler {data, links, meta} biçiminde döner (Yanıt yapısı, Sayfalama). sort_by değeri sort_order olmadan gönderilirse metin sütunları A’dan Z’ye, sayı ve tarih sütunları azalan sıralanır (Filtreleme ve sıralama).

Hesaplar

Hesap (API adıyla bank account) kliniğin banka hesabı ya da kasasıdır. Her hesabın tek bir para birimi vardır.

Hesap nesnesi

debit ve credit toplamları hesabın kendi para biriminde, kur uygulanmadan hesaplanır.

Listeleme

Oluşturma ve güncelleme

201 ile hesabı döner. Güncelleme kısmidir: yalnızca gönderdiğiniz alanlar değişir. Mevcut IBAN veya SWIFT değerini değiştirmeden aynen gönderirseniz geçersiz olsa bile kabul edilir.
opening_balance sıfırdan büyükse hesap oluşturulurken aynı işlemde Açılış bakiyesi açıklamalı bir opening_balance hareketi yazılır. Hesap toplamları bu hareketi zaten içerir.

Varsayılan hesap

Her klinikte tek bir varsayılan hesap bulunur. İlk oluşturduğunuz hesap otomatik varsayılan olur. Yeni bir hesabı is_default: true ile oluşturursanız ya da PUT ile is_default: true gönderirseniz önceki varsayılan hesap bu işareti kaybeder. Aktif olmayan hesap varsayılan olamaz. is_default: true olan hesaba is_active: false göndermek ya da aktif olmayan hesabı varsayılan yapmak 422 BANK_ACCOUNT_UPDATE_BLOCKED döner. Varsayılan hesabı pasife almadan önce başka bir hesabı varsayılan yapın.

Silme

DELETE /api/v1/bank-accounts/{id} yalnızca hiç hareketi olmayan hesabı siler. Hareketi olan hesap için 422 BANK_ACCOUNT_HAS_TRANSACTIONS döner. Önce hareketleri silin (bulk-delete ile all: true gönderebilirsiniz).

Hesap hareketleri

Hesap hareketi, bir hesaba para girişini ya da çıkışını kaydeder. debit para girişi, credit para çıkışıdır.

Hareket türleri

GET /api/v1/account-transaction-types bu listeyi {value, label} çiftleriyle döner. Etiketler her zaman Türkçedir.

Hareket nesnesi

Hasta Geri Dönüşüm Kutusu’nda olsa bile customer döner. Atanmamış bir lead’in Hastasında kimlik alanları maskelenir.

Listeleme

Oluşturma

type değeri collection veya payment ise ve customer_id gönderdiyseniz Flextell aynı batch_uuid ile iki satır yazar ve hesap satırını döner: customer_id göndermezseniz hareket yalnızca hesaba yazılır. Yanıt 201 ve hareket nesnesidir.

Güncelleme

PUT kısmidir. amount ile debit ya da credit birlikte gönderilemez. amount gönderirseniz tutar direction tarafına, yeni type değerinin sabit tarafına ya da mevcut tarafa yazılır. Yalnızca direction değiştirirseniz mevcut tutar öbür tarafa taşınır. type değerini transfer veya opening_balance yaparsanız mevcut taraf korunur.
Eşleştirilmiş bir harekette yalnızca description, invoice_number, payment_method ve transaction_date değişir; değişiklik Hastanın satırına da yansır. Başka bir alan (amount, direction, type, debit dahil) göndermek 422 PAIRED_TRANSACTION_IMMUTABLE döner. Tutarı düzeltmek için hareketi silip yeniden oluşturun.

Silme

DELETE isteğinde delete_related_transactions parametresi varsayılan olarak true’dur: aynı batch_uuid değerini taşıyan Hasta satırları da silinir. false gönderirseniz Hasta satırı kalır ve Hastanın bakiyesi hesapla uyuşmaz. POST .../transactions/bulk-delete ile tek istekte silme yapılır. İki biçimden birini gönderin: Yanıt {success, data: {deleted_count}} olur. İşlem ya hepsi ya hiçbiri çalışır: seçimden biri verileri imha edilmiş bir Hastayla ya da size atanmamış bir lead ile eşleşiyorsa hiçbir hareket silinmez ve 422 ACCOUNT_TRANSACTION_NOT_DELETABLE yanıtının data.transaction_ids alanı reddedilen kimlikleri listeler. Eşleştirilmiş Hasta satırları seçimle birlikte silinir.

Hasta işlemleri

Hasta işlemi, Hastanın cari hesabındaki satırdır. Hastanın bakış açısıyla yazılır: debit Hastanın borcunu artırır (satış, Hastaya ödeme), credit azaltır (tahsilat, alış fişi).

İşlem türleri

İşlem nesnesi

Listeleme

search açıklama ve fatura numarasında alt metin olarak arar. type ve currency_id süzer. sort_by değerleri: transaction_date (varsayılan, azalan), created_at, debit, credit, due_date, invoice_number, amount, account. amount sıralaması debit - credit farkına, account hesap adına göredir.

Oluşturma

201 ile işlemi döner. account_id verdiğinizde currency_id hesabın para biriminden farklıysa Flextell hata vermez, para birimini hesabınkiyle değiştirir (hesap hareketi endpoint’inden farklı olarak). Hesap vermezseniz para birimi serbesttir. Para birimi göndermezseniz hesabın, hesap da yoksa kliniğin baz para birimi kullanılır. Baz para biriminde exchange_rate 1’e sabitlenir. Lead aşamasındaki bir kayda mali işlem yazılamaz. Önce lead’i Hastaya dönüştürün (Leadler).

Taksitler

Taksit yalnızca sale_invoice için kullanılır; başka türde is_installment göndermek 422 döner. İki yol vardır:
  • Açık liste: installments içinde en az 2 öğe gönderin, her biri amount, due_date ve isteğe bağlı description taşır.
  • Otomatik: installment_count (2 ile 12), first_due_date ve amount gönderin. Tutar eşit bölünür, son taksit kuruş farkını alır (100 / 3 için 33.33, 33.33, 33.34). Vadeler first_due_date tarihinden başlayarak aylıktır.
Her taksit ayrı bir debit satırıdır; hepsi tek batch_uuid paylaşır ve installment_number 1’den başlar. Yanıt yalnızca birinci taksiti döner.

Güncelleme ve silme

PUT ile type, debit, credit, currency_id, exchange_rate, transaction_date, due_date, description ve invoice_number değişir. amount ve payment_method kabul edilmez. Hesap hareketiyle eşleştirilmiş bir işlemde yalnızca description, invoice_number ve transaction_date değişir; değişiklik hesap satırına kopyalanır. Diğer alanlar 422 PAIRED_TRANSACTION_IMMUTABLE döner. Eşleştirilmemiş işlemde her alan düzenlenebilir. type değiştirmek tutarları öbür tarafa taşımaz. DELETE işleminde delete_related_transactions varsayılan true’dur ve aynı batch_uuid içindeki hesap satırları silinir; hesap toplamları güncellenir. Kardeş taksit satırları silinmez.

Bakiyeler

Bakiye listesi, açık borcu olan Hastaları gösterir.

Hesaplama

Bir Hastanın outstanding_balance değeri, tüm işlemlerinin (debit - credit) × kur toplamıdır. Kur 0 veya negatifse 1 sayılır. Para birimi boş olan eski satırlar baz para birimi sayılır. Liste yalnızca bakiyesi en az 0.01 olan Hastaları içerir; borcu kapanmış ya da alacaklı Hastalar listede yer almaz. Lead aşamasındaki kayıtlar hiç listelenmez. ViewAllCustomers:Customer iznine sahip değilseniz yalnızca erişebildiğiniz Hastaların bakiyelerini görürsünüz (İzinler ve görünürlük).

Listeleme

Bu endpoint sort_by ve sort_order yerine sort ve direction kullanır.

Bakiye nesnesi

Liste yanıtının meta.totals alanı filtreye uyan tüm satırların toplamını verir: currency_code, outstanding_balance ve currency_balances. Yabancı para birimi satırları yalnızca net bakiyesinin tamamı o tek para biriminde olan Hastaları sayar; karışık para birimli Hastalar yalnızca baz toplama girer. GET /api/v1/customer-balances/{id} görebildiğiniz her Hasta için çalışır; açık bakiyesi olmayan Hasta için outstanding_balance "0.00", currency_balances boş döner. overdue_balance, iptal edilmemiş her satış için ayrı hesaplanır: vadesi gelmiş satış borcundan tahsilatlar düşülür ve yalnızca pozitif net değerler toplanır. Fazla ödenmiş bir satış diğerlerinin borcunu azaltmaz.

Dışa aktarma

GET /api/v1/customer-balances/export listedeki süzgeçleri kabul eder ve format parametresi alır: excel (varsayılan) veya pdf. csv gönderirseniz 422 döner. Dosya hemen dönmez. İstek 202 döner ve dosya hazır olunca indirme bağlantısı bildirimle gelir (Bildirimler). Dışa aktarma Export:CustomerBalances ister; View:CustomerBalances gerekmez. Dışa aktarma isteği klinik ve kullanıcı başına saatte 10 ile sınırlıdır; aşarsanız 429 alırsınız (Oran sınırları).

Ödeme yöntemleri

GET /api/v1/payment-methods yalnızca payment_methods:read scope’u ister, izin gerektirmez. Yanıt {success, data: [{value, label}]} biçimindedir ve sekiz satır içerir. payment_method alanlarına value değerini yazın.

Hata kodları

Genel hata yapısı için Hatalar ve Hata kodları sayfalarına bakın.

Örnekler

Tahsilat isteği iki satır yazar: Ayşe Yılmaz’ın (123) cari hesabında 2500 credit, 12 numaralı hesapta 2500 debit. Yanıt, hesap satırını Hastanın özetiyle birlikte döner.
Bakiye detayı (kısaltılmış)