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
Tutarlar
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).Tarihler
Tarihler
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.Silme
Silme
Hesaplar ve iki tür işlem de kalıcı silinir. Silinenler Geri Dönüşüm Kutusu’na gitmez.
Doğrulama mesajları
Doğrulama mesajları
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.{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ıylabank 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.
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ızcasale_invoice için kullanılır; başka türde is_installment göndermek 422 döner. İki yol vardır:
- Açık liste:
installmentsiçinde en az 2 öğe gönderin, her biriamount,due_dateve isteğe bağlıdescriptiontaşır. - Otomatik:
installment_count(2 ile 12),first_due_dateveamountgö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). Vadelerfirst_due_datetarihinden başlayarak aylıktır.
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ınoutstanding_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
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ış)