Tedarikçi Faturalarını ve Ödemelerini Takip Eden Bir Web Uygulaması Nasıl Kurulur
Fatura yakalama, onay yönlendirme, ödeme durumu takibi, hatırlatmalar ve güvenli raporlama içeren tedarikçi fatura web uygulaması oluşturma adım adım planı.

Hedefi ve MVP Kapsamını Belirleyin
Araçları seçmeden veya ekran çizmeden önce hangi problemi kimin için çözdüğünüzü netleştirin. Bir tedarikçi fatura uygulaması, günlük kimlerin kullandığına göre çok farklı ihtiyaçlara hizmet edebilir.
Birincil kullanıcıları belirleyin
Öncelikle temel kullanıcı gruplarını adlandırın:
- Accounts Payable (AP) personeli: faturaları alır, detayları düzeltir ve ilerletir
- Onaycılar (bölüm yöneticileri, proje sahipleri): faturanın geçerli olduğunu onaylar
- Finans liderleri: kontroller, raporlama ve nakit planlamasıyla ilgilenir
- Tedarikçiler (opsiyonel): daha sonra gönderimler ve görünürlük için bir portal eklerseniz
MVP'nizi genellikle AP + onaycılar etrafında tasarlayın; bu en küçük kullanıcı seti değeri açar.
En önemli hedefleri tanımlayın
En çok önem taşıyan üç sonucu seçin. Yaygın tercihler:
- Daha az gecikmiş ödeme (açık vade tarihleri, hatırlatmalar ve daha az takılı kalan fatura)
- Daha hızlı onaylar (daha az kovalama, daha az “bu nerede?” mesajı)
- Daha temiz kayıtlar (fatura verileri ve kararlar için tek doğruluk kaynağı)
Bu hedefleri yazın; kabul kriterleriniz bunlar olacak.
“Ödeme durumu” sözlüğünde anlaşın
Ekipler "ödendi" ile farklı şeyler kastedebilir. Resmi durumları erken belirleyin, örneğin:
- Draft → Submitted → Approved → Scheduled → Paid
Ayrıca bir durum değişikliğini neyin tetikleyeceğini tanımlayın (onay, muhasebeye dışa aktarma, banka teyidi vb.).
MVP'yi sınırlayın, kapsam kaymasını önleyin
Bir MVP için hedef: fatura alımı, temel doğrulama, onay yönlendirmesi, durum takibi ve basit raporlama. Gelişmiş ögeleri (OCR, tedarikçi portalı, derin ERP senkronu, karmaşık istisnalar) "sonra" listesine açık bir gerekçe ile koyun.
Fatura → Ödeme İş Akışını Haritalayın
Ekranları veya tabloları inşa etmeden önce, bir faturanın şirketinizde aldığı gerçek yolu yazın—geliş anından ödemenin doğrulanmasına kadar. Bu, uygulamanızın durumları, bildirimleri ve raporları için tek gerçek kaynağı olur.
Mevcut gerçeklikle başlayın
Faturaların nereden girdiğini (e-posta gelen kutusu, tedarikçi portalı, kağıt tarama, çalışan yüklemesi) ve sonraki dokunma noktalarını kaydedin. AP ve en az bir onaycı ile görüşün; genellikle desteklenmesi veya bilerek kaldırılması gereken resmi olmayan adımlar (yan e-postalar, tablo kontrolleri) bulursunuz.
Gerekli kontrol noktalarını tanımlayın
Çoğu fatura→ödeme akışında birkaç zorunlu kapı vardır:
- Kodlama (GL/hesap, maliyet merkezi, proje, vergi muamelesi)
- Onaylar (tek onaycı, çok adımlı veya paralel)
- Ödeme yürütme (planlandı, serbest bırakıldı, gönderildi)
- Mutabakat (banka/ERP teyidi, dekont eşleşmesi)
Her kontrol noktasını bir durum değişikliği olarak yazın; açık bir sahibi ve giriş/çıkış tanımlayın. Örnek: “AP fatura kodlar → fatura ‘Onay için hazır’ olur → onaycı onaylar veya değişiklik ister.”
İstisnaları erken belirtin
Mutlu yolu bozacak kenar durumlarını listeleyin:
- Kısmi ödemeler ve faturalar arasında bölünmüş ödemeler
- Uyuşmazlıklar (fiyat/miktar hatası), bekletmeler ve tedarikçi kredileri
- Çift faturalar (aynı numara/tedarikçi/tutar) ve yeniden gönderimler
SLA'ları ve yükseltme kurallarını belirleyin
Her adım için zaman beklentileri belirleyin (ör. onay 3 iş günü içinde, ödeme net vadeye uygun) ve kaçırıldığında ne olacak: hatırlatma, bir yöneticiyi bilgilendirme veya otomatik yeniden yönlendirme. Bu kurallar daha sonra bildirim ve raporlama tasarımınızı yönlendirir.
Veri Modelini ve Durumları Tasarlayın
Açık bir veri modeli, faturalar yüklemeden ödemeye kadar hareket ederken uygulamanızın tutarlı kalmasını sağlar. Başlangıçta büyütebileceğiniz küçük bir varlık seti ile başlayın.
Temel varlıklar (ne saklarsınız)
En azından bunları ayrı tablolar/collection'lar olarak modelleyin:
- Vendor: isim, vergi/VAT ID, varsayılan para birimi, ödeme koşulları, iletişim e-posta
- Invoice: vendor_id, invoice_number, issue_date, due_date, currency, subtotal, tax_total, total, PO_number (opsiyonel), notes
- Line Item (MVP için opsiyonel, faydalı): invoice_id, description, quantity, unit_price, tax_rate, line_total
- Approval: invoice_id, approver_id, decision (Approved/Rejected), decision_at, comment
- Payment: invoice_id, method, amount, scheduled_date, paid_date, reference (banka/işlem ID)
- Attachment: invoice_id, file_name, storage_key/url, uploaded_by, uploaded_at
Para alanlarını yuvarlama hatalarını önlemek için tam sayılar (ör. kuruş) olarak tutun.
Zorunlu alanlar (bir faturayı “gerçek” yapan)
Gönderim için bunları zorunlu yapın: tedarikçi, fatura numarası, tarih, para birimi ve toplam. Süreciniz bağımlıysa vade tarihi, vergi ve PO numarası ekleyin.
Durum enum'ları (ilerlemeyi nasıl tanımlarsınız)
Herkesin aynı gerçeği görmesi için faturada tek bir durum tanımlayın:
- Draft → giriliyor
- Submitted → incelemeye hazır
- Approved / Rejected → karar verildi
- Scheduled → ödeme planlandı
- Paid → kapandı
Çift kayıt önleme
(vendor_id, invoice_number) üzerinde benzersiz kısıtlama ekleyin. Bu, çift girişe karşı en basit ve etkili korumadır—özellikle daha sonra fatura yükleme ve OCR eklediğinizde.
Roller, İzinler ve Erişim Kontrolünü Planlayın
Erişim kontrolü, fatura uygulamalarının ya düzenli kalmasını ya da kaosa sürüklenmesini belirler. Küçük bir rol seti tanımlayarak ve her rolün neler yapabildiğini açıkça belirleyerek başlayın.
Dahil edilecek temel roller
- AP Admin: ayarları (tedarikçiler, onay kuralları) yönetir, verileri düzeltebilir ve istisnaları denetler.
- AP Clerk: faturaları yükler, doğrulama hatalarını düzeltir ve onaya hazırlar.
- Approver: kendisine atanan faturaları inceler ve onaylar/reddeder.
- Finance Admin: ödemeleri işaretler (veya muhasebeden senkronu doğrular), mutabakat ve dışa aktarımları yapar.
- Read-only: faturaları ve durumları görebilir, ama değiştiremez.
Önemli izin "fiilleri"
İzinleri ekran bazlı değil eylem bazlı tutun: view, create/upload, edit, approve, override, export, manage settings. Örneğin, birçok ekip AP Clerk'lerin başlık alanlarını (tedarikçi, tutar, vade) düzenlemesine izin verir ama banka detayları veya vergi kimliklerini düzenlemelerine izin vermez.
Tedarikçi özel görünürlük
Birden fazla iş birimi aynı sistemi paylaşıyorsa, erişimi tedarikçi veya tedarikçi grubuna göre kısıtlayın. Tipik kurallar:
- Kullanıcılar sadece departmanlarına atanmış tedarikçilere ait faturaları görebilir.
- Onaycılar yalnızca kendilerine yönlendirilen faturaları görür; tedarikçiyi görebilseniz bile tüm faturaları görmezsiniz.
Bu, yanlış veri ifşasını önler ve gelen kutuların odaklı kalmasını sağlar.
Yetkilendirilmiş onay ve yoklama sırasında kapsama
Delegasyonu başlangıç/bitiş tarihleri ve bir denetim notu ile destekleyin ("X adına Delege tarafından onaylandı"). Kim kimin yerine baktığını gösteren basit bir sayfa ekleyin ve bu delegasyonların AP Admin'ler (veya yöneticiler) tarafından oluşturulmasını zorunlu kılın ki kötüye kullanım önlensin.
Temel Ekranları ve Navigasyonu Taslaklayın
İyi bir AP uygulaması, birisi ilk açtığında sezgisel hissettirmeli. İnsanların nasıl çalıştığına uyan küçük bir ekran seti hedefleyin: faturaları bul, ne olduğunu anla, bekleyenleri onayla ve vadesi gelenleri gözden geçir.
1) Fatura listesi (ana ekranınız)
Varsayılan görünümü, hızlı tarama ve hızlı kararlar için bir tablo yapın.
Durum, tedarikçi ve vade tarihi için filtreler; fatura numarası ve tutarla arama ekleyin. "Sahip ata", "Bilgi isteği" veya "Ödendi olarak işaretle" gibi toplu işlemler ekleyin (izin kontrolleri ile). Haftalık incelemeler için "7 gün içinde vadesi gelen" gibi kaydedilmiş filtre tutun.
2) Fatura detay sayfası (tam hikaye için tek yer)
Detay ekranı şu soruyu cevaplamalı: Bu fatura nedir, nerede takılmış ve sonraki adım nedir?
Açık bir zaman çizelgesi (alındı → doğrulandı → onaylandı → planlandı → ödendi), bağlam için bir notlar dizisi ve ekler (orijinal PDF, e-postalar, destekleyici belgeler) ekleyin. Birincil eylemleri (onayla, reddet, değişiklik iste) üstte koyun ki gizlenmesin.
3) Onay kuyruğu (yönetici dostu)
Sadece işlem gerektirenleri gösteren özel bir kuyruk oluşturun. Yorumla onayla/reddet desteği, ayrıca ekstra tıklama gerektirmemek için hızlı "ana alanları görüntüle" paneli sağlayın. Yöneticilerin kısa aralıklarla çalışabilmesi için listeden geri dönüş kolay olsun.
4) Ödeme durumu görünümü (haftalık inceleme modu)
"Ne vadesi geldi ve ne gecikti?" sorusuna odaklanan basitleştirilmiş bir görünüm sunun. Vade tarihine göre gruplayın (geçmiş, bu hafta, gelecek hafta) ve durumları görsel olarak ayırt edilebilir yapın. Her satırı takip için fatura detayına bağlayın.
Gezinmeyi tutarlı tutun: sol menüde Faturalar, Onaylar, Ödemeler ve Raporlar; detay sayfalarında breadcrumb'lar.
Fatura Yakalama ve Doğrulamayı Kurun
Fatura yakalama, dağınık gerçek dünya girdilerinin sisteme girdiği yerdir; insanlara hoşgörülü, ama veri kalitesine karşı sıkı olun. Birkaç güvenilir giriş yoluyla başlayın, sonra otomasyonu katmanlayın.
Giriş yöntemlerini seçin
Uygulamaya fatura sokmak için birden fazla yol destekleyin:
- Manuel giriş: uç durumlar ve hızlı düzeltmeler için
- Dosya yükleme: masaüstünden veya paylaşılan sürücüden
- E-posta ile yönlendirme: özel adrese (ör. invoices@…) iletilenler otomatik olarak taslak fatura oluşturur
İlk sürüm basit tutulsun: her giriş yöntemi aynı sonucu üretmeli — bir taslak fatura kaydı ve eklenmiş kaynak dosya.
Desteklenen formatlara karar verin
En azından PDF ve yaygın görüntü formatlarını (JPG/PNG) kabul edin. Tedarikçiler yapılandırılmış dosyalar gönderiyorsa, ayrı bir akış olarak CSV içe aktarımı ekleyin; şablon ve açık hata mesajları sağlayın.
Orijinal dosyayı değiştirmeden saklayın ki finans her zaman kaynağa başvurabilsin.
Aşağı yönlü sorunları önleyen doğrulamalar ekleyin
Kaydetme ve onaya gönderme aşamasında doğrulayın:
- Zorunlu alanlar: tedarikçi, fatura numarası, fatura tarihi, toplam, para birimi, vade tarihi
- Tarih mantığı: vade tarihi fatura tarihinden önce olamaz; gelecek tarihlerde uyarı
- Para birimi ve tutarlar: tutarlı formatlama, iki ondalık kuralı, negatif olmayan toplamlar
- Çift kayıt kontrolleri: aynı tedarikçi + fatura numarası uyarı veya engel tetiklemeli
Opsiyonel: insan onaylı OCR
OCR PDF'lerden/görsellerden alanlar önerse bile bunu bir öneri olarak ele alın. Güven seviyesi göstergeleri gösterin ve çıkarılan değerler onaylanmadan fatura ilerlemesin.
Onaylar, İstisnalar ve Değişiklik Kontrolünü Uygulayın
Onaylar, fatura takibini "bir liste" olmaktan gerçek bir AP sürecine dönüştürür. Amaç basit: doğru kişiler doğru faturaları inceler, kararlar kaydedilir ve onay sonrası değişiklikler kontrol altında tutulur.
Onay kurallarını yapılandırın
Teknik olmayan kullanıcıların kolayca açıklayabileceği bir kural motoru ile başlayın. Yaygın yönlendirme kuralları:
- Tutar bazlı (örn. $1.000 altı → yönetici; $10.000 üstü → finans direktörü)
- Maliyet merkezi bazlı (maliyet merkezi sahibine yönlendir)
- Tedarikçi bazlı (bazı tedarikçiler satınalma incelemesi gerektirir)
- Departman bazlı (pazarlama vs. BT farklı onaycılar olabilir)
İlk sürümü öngörülebilir tutun: adım başına birincil onaycı ve açık bir sonraki eylem.
Denetim-dostu bir onay kaydı oluşturun
Her kararın değiştirilemez bir log girişi oluşturmasını sağlayın: fatura ID, adım adı, aktör, eylem (onaylandı/reddedildi/gönderildi), zaman damgası ve yorum. Bu logu düzenlenebilir fatura alanlarından ayrı tutun ki "kim neyi ne zaman onayladı" her zaman cevaplanabilsin.
İstisnaları ele alma: yeniden iş döngüleri ve reddetme nedenleri
Faturalar genellikle düzeltme gerektirir (PO eksik, hatalı kodlama, çift kayıt). "AP'ye geri gönder" desteği sağlayın; yeniden işleme nedenleri zorunlu olsun ve opsiyonel ek dosya ekleme imkanı verin. Reddedilenler için standart nedenler (çift, yanlış tutar, uyumsuz) + serbest metin notu kaydedin.
Onay sonrası değişiklikleri kontrol edin
Bir fatura onaylandıktan sonra düzenlemeler kısıtlanmalı. Pratik iki seçenek:
- Duyarlı alanları kilitle (tutar, tedarikçi, banka detayları, satır kalemleri)
- Önemli alan değişirse yeniden onay gerektir; fatura otomatik olarak önceki adıma döner ve değişiklik talebi loglanır
Bu, sessiz düzenlemeleri önler ve onayların anlamlı kalmasını sağlar.
Ödemeleri İzleyin ve Durumu Mutabakatlayın
Faturalar onaylandıktan sonra uygulama "kim imzalayacak?" yerine "ödeme gerçekliği nedir?" moduna geçmeli. Ödemeleri tek bir onay kutusu gibi değil, birinci sınıf kayıtlar olarak ele alın.
Ödeme kayıtlarını tanımlayın
Her fatura için bir veya daha fazla ödeme girdisi saklayın:
- Yöntem (ACH, havale, çek, kart, işlemci)
- Tarih/saat (paranın gönderildiği zaman)
- Tutar
- Referans ID (banka takip numarası, çek numarası, işlemci işlem ID)
- Opsiyonel notlar (masraflar, döviz dönüşümü, ödeme partisi, başlatan kişi)
Bu, serbest metin zorunluluğu olmadan denetim-dostu bir hikaye sağlar.
Kısmi ve çoklu ödemeleri destekleyin
Ödemeleri birden çoğa ilişki olarak modelleyin: Invoice → Payments. Fatura toplamlarını şöyle hesaplayın:
- Ödenen tutar = ödemelerin toplamı
- Kalan bakiye = fatura toplamı − ödenen tutar
Durum gerçeği yansıtmalı: Unpaid, Partially paid, Paid, Overpaid (nadir olsa da kredi veya çift ödeme durumları ortaya çıkar).
Planlandı vs ödendi
Planlanmış ödemeler için bir Scheduled durumu ekleyin (beklenen mutabakat tarihi opsiyonel). Para gerçekten çıkınca durumu Paid yapın ve nihai zaman damgası ve referans ID'yi kaydedin.
Mutabakat kancaları
Ödemeleri harici kanıtlara bağlayabilecek eşleme iş akışları oluşturun:
- Referans ID, tutar ve tarih penceresi ile muhasebe/ERP girdilerine eşle
- Banka çıktıları (CSV/OFX) içe aktar ve eşleşme öner, sonra kullanıcı onaylasın
Bildirimler, Hatırlatmalar ve Eskalasyonları Ayarlayın
Bildirimler düzenli bir kuyruk ile gecikmiş faturalar arasındaki farktır. Bunları bir eklenti değil iş akışı özelliği olarak ele alın.
Vade tarihleri için hatırlatma kuralları
Önce yaklaşan vadeler, sonra gecikmeler için iki tür hatırlatmayla başlayın. Basit bir varsayılan işe yarar (ör. vade 7 gün kala, 1 gün kala, sonra her 3 günde bir gecikme bildirimleri), ama şirket bazında yapılandırılabilir olsun.
Hatırlatmalar Paid, Canceled veya On Hold faturalarını atlamalı ve bir fatura uyuşmazlıkta ise duraklatılmalıdır.
Onaycılar için kuyruk bildirimleri
Bir fatura onay kuyruğuna girdiğinde onaycılara ilk bildirim gönderin; tanımlı SLA içinde hala bekliyorsa yeniden hatırlatın.
Eskalasyonlar açık olmalı: örn. 48 saat içinde işlem yoksa bir sonraki onaycıya veya finans adminine bildirin ve faturayı UI'da görünür kılmak için Escalated olarak işaretleyin.
Kullanıcıların ne alacağını ayarlamasına izin verin
Kullanıcılara kontrol verin:
- Kanal: e-posta veya uygulama içi
- Sıklık: anlık veya toplu
- Sessiz saatler / hafta sonları
Uygulama içi uyarılar için bildirim merkezi ve rozet sayacı genellikle yeterlidir.
Günlük/haftalık özet e-postaları ekleyin
Özetler gürültüyü azaltır ama sorumluluğu tutar. Kısa bir özet ekleyin: kullanıcının bekleyen faturaları, vadesi yaklaşanlar ve eskale edilenler. Filtrelenmiş görünümlere doğrudan bağlantı verin (ör. Raporlar > Onay Bekleyenler, Vadesi Geçenler).
Son olarak, gönderilen her bildirimi (ve kullanıcının erteleme/abonelik iptali eylemlerini) loglayın ki sorun giderme ve denetimler mümkün olsun.
Entegrasyonlar ve Veri Değişimi Ekleme
Entegrasyonlar zaman kazandırır ama karmaşıklık getirir (kimlik doğrulama, hız sınırları, karışık veriler). Çekirdeğiniz sağlam olana kadar bunları opsiyonel tutun. Temiz dışa aktarmalarla bile iyi bir MVP değer sağlayabilir.
Güvenilir bir dışa aktarmayla başlayın (MVP-dostu)
İlk olarak güvenilir bir CSV dışa aktarma gönderin—tarih, tedarikçi, durum veya ödeme partisi ile filtrelenebilir. Yeniden dışa aktarımın başka bir sistemde tekrar yaratmaması için sabit ID'ler ekleyin.
Örnek alanlar: invoice_number, vendor_name, invoice_date, due_date, total_amount, currency, approval_status, payment_status, internal_invoice_id.
Zaten bir API'niz varsa, JSON dışa aktarma uç noktası hafif otomasyon için faydalıdır.
Formatları, eşlemeleri ve “gerçek kaynağı” planlayın
QuickBooks/Xero/NetSuite/SAP gibi bağlayıcılara geçmeden önce şunu yazın:
- Hangi sistemin vendor kayıtlarına, GL kodlarına ve ödeme teyidine sahip olduğu
- Alanların nasıl eşleneceği (örn. sizin Vendor → Dış Vendor ID)
- Gerekli alanlar eksikse ne olacağı (dışa aktarmayı engelle vs. uyarı ile dışa aktar)
Küçük bir "Entegrasyon Ayarları" ekranı yardımcı olur: dış ID'leri, varsayılan hesapları, vergi işleyişini ve dışa aktarma kurallarını saklayın. Ayarlardan erişilebilir olsun.
Senkron çakışmalarını ve yeniden denemeleri net yönetin
İki yönlü senkron eklediğinizde kısmi hatalar bekleyin. Yeniden deneme kuyruğu kullanın ve insanlara ne olduğunu gösterin:
- "Dışa aktarma hatası: tedarikçi Dış ID eksik. Tedarikçiyi düzeltin ve tekrar deneyin."
- "Fatura zaten Xero'da var (ID …). Eşlemeyi gözden geçirin."
Her senkron denemesi için zaman damgası ve payload özeti ile log tutun ki finans tahmin yürütmek zorunda kalmasın.
Güvenlik, Denetim ve Veri Koruma
Güvenlik, hesaplar ödenecek alanında "iyi olur" değil zorunludur. Faturalar banka detayları, vergi ID'leri, fiyatlandırma ve iç onay notları içerir—sızdırılırsa ciddi zarar verir.
Denetim izi: her önemli değişikliği izleyin
Denetim günlüğünü hata ayıklama aracı değil bir birinci sınıf özellik olarak ele alın. Aşağıdaki anlar için değiştirilemez event'ler kaydedin: fatura gönderimi, OCR/ithalat sonuçları, alan düzenlemeleri, onay kararları, yeniden atamalar, açılan/çözülen istisnalar ve ödeme güncellemeleri.
Kullanışlı bir denetim girdisi genelde şunu içerir: kim yaptı, ne değişti (eski → yeni), ne zaman oldu ve nereden kaynaklandı (UI, API, entegrasyon). Append-only saklayın ki sonradan yeniden yazılamasın.
Taşıma ve dinlenme halindeki veriyi koruyun
Tüm trafiğe TLS kullanın (iç servis çağrıları dahil). Hassas veriyi veritabanında ve obje depolamada (fatura PDF/görseller) şifreleyin. Banka detayları veya vergi kimlikleri saklıyorsanız alan düzeyinde şifreleme düşünün ki bir veritabanı snapshot'u ele geçse bile en kritik değerler korunmuş olsun.
Ayrıca kimlerin orijinal fatura dosyalarını indirebileceğini sınırlayın; genellikle dosya erişimine ihtiyacı olanlar, sadece durum görünürlüğüne ihtiyacı olanlardan daha azdır.
Kimlik doğrulama, oturumlar ve erişim kontrolleri
Güçlü kimlik doğrulama ile başlayın (e-posta/şifre güçlü hash, veya müşteri SSO beklentisi varsa SSO). Oturum kontrolleri: kısa ömürlü oturumlar, secure cookie, CSRF koruması ve admin'ler için opsiyonel MFA ekleyin.
Onaylanmış faturaları düzenleme, ödeme durumunu değiştirme veya veri dışa aktarma gibi işlemler için asgari ayrıcalık prensibini (least privilege) uygulayın.
Saklama ve yedekler (pratik tutun)
Faturaları, logları ve ekleri ne kadar süreyle saklayacağınızı ve silme taleplerini nasıl işleyeceğinizi tanımlayın. Düzenli yedekler ve geri yükleme testleri yapın ki hatalar veya kesintiler sonrası kurtarma öngörülebilir olsun.
Raporlama ve Panolar
Raporlama, günlük fatura güncellemelerini finans için netliğe dönüştürür. Başlangıçta ay sonu kapanışı sırasında sorulan sorulara cevap verecek birkaç yüksek sinyal görünümü ile başlayın.
"Olmazsa olmaz" raporlar
İlk aşamada 3–4 temel rapor yapın, sonra gerçek kullanım bazında genişletin:
- Aging (0–30, 31–60, 61–90, 90+ gün) — takılmış faturaları gösterir
- Vadesi geçmiş faturalar: tedarikçi, vade tarihi, tutar, mevcut durum ve sonraki eylem
- Tedarikçi bazında harcama (opsiyonel maliyet merkezi ile) — bütçeleme ve pazarlık destekler
- Onay çevrim süresi (ortalama ve yüzdelikler) — darboğazları ortaya çıkarır
Kapanış için kaydedilmiş filtreler ve dışa aktarmalar
"Bu hafta vadesi gelen", "$10k üstü onaysız" ve "PO eksik" gibi kaydedilmiş filtreler ekleyin. Her tablo CSV/XLSX dışa aktarılabilir olsun ve sütunlar tutarlı kalsın ki muhasebeciler her ay aynı şablonları kullanabilsin.
Tek ekranda sığan panolar
Grafikleri basit tutun: durum sayıları, yaklaşan vade toplamları ve küçük bir "riskte" paneli (vadesi geçmiş + yüksek değerde). Amaç hızlı triage, detaylı analitik değil.
İzinlere duyarlı raporlama
Raporların rol tabanlı erişim kurallarına uymasını sağlayın: kullanıcılar sadece kendi departman/firma verilerini görmeli; dışa aktarmalar da aynı kuralları uygulamalı ki veri sızıntısı olmasın.
Teknoloji Yığını ve Basit Mimari Seçimi
Bir tedarikçi fatura uygulaması güvenilir olmak için egzotik bir düzene gerekmez. Teslim hızına, sürdürülebilirliğe ve işe alıma öncelik verin—gerektikçe karmaşıklık ekleyin.
Basit bir yığın seçin
Ekibinizin destekleyebileceği, kutularıyla gelen popüler seçeneklerden birini tercih edin:
- React + Node (Express/NestJS): modern SPA ve esnek API'ler istiyorsanız
- Rails: konvansiyonlar ve hızlı CRUD geliştirme önceliğinizse
- Django: güçlü bir admin, net yapı ve olgun ekosistem isterseniz
Bunların hiçbiri fatura yakalama, onaylar ve ödeme durum takibini rahatça yönetir.
Eğer ilk sürümü daha da hızlandırmak isterseniz, Koder.ai gibi sohbet destekli platformlar React tabanlı UI ve backend iş akışı kurmada hız kazandırır—sonra onay kuralları, roller ve raporlarla yineleyebilirsiniz. Hazır olduğunuzda kaynak kodu dışa aktarabilirsiniz.
Mimariyi ilk etapta basit tutun
Başlangıçta bir web uygulaması + bir veritabanı (ör. Postgres) ile başlayın. UI, API ve veritabanı arasında temiz ayrım yapın ama hepsini tek dağıtılabilir hizmette tutun. Gerçek ölçekleme baskıları çıkınca mikroservislere ayırın.
Yavaş işler için arka plan işleri kullanın
OCR, banka/ERP dosyası ithalatı, hatırlatıcı gönderimleri ve PDF üretimleri yavaş veya öngörülemez olabilir. Bunları iş kuyruğu (Sidekiq/Celery/BullMQ) üzerinden çalıştırın ki uygulama duyarlı kalsın ve hatalar güvenle yeniden denensin.
Ek saklamayı erken planlayın
Faturalar ve fişler merkezi. Dosyaları bulut obje depolama (S3 uyumlu) içinde saklayın. Ek olarak:
- Yüklemede virüs taraması
- Değiştirilemez orijinaller (üzerine yazmayın; versiyonlayın)
- Güvenli indirme için signed URL'ler
Bu yaklaşım, sistemi aşırı mühendisleştirmeden güvenilir kılar.
Test, Dağıtım ve Yineleme Planı
Bir tedarikçi fatura uygulaması yalnızca "basit" hissediyorsa, bunun en hızlı yolu testi ve dağıtımı ürün özelliği gibi ele almaktır.
Paranıza zarar verebilecek şeyleri test edin
Sonuçları değiştiren kurallara odaklanın:
- Durum geçişleri için testler yazın (Draft → Submitted → Approved → Paid) ve geçersiz sıçramaları test edin
- İzinler ve rol tabanlı erişim için testler yazın (kim düzenleyebilir, onaylayabilir, iptal edebilir)
- Onay kuralları testi (tutar eşiklerini, gerekli onaycıları, istisnaları ve düzenleme sonrası yeniden onay gereksinimlerini doğrulayın)
Gerçek iş akışını taklit eden birkaç uçtan uca test ekleyin: fatura yükle, onaya yönlendir, ödeme durumunu güncelle ve denetim izini doğrula.
Demo ve QA'yi tekrarlanabilir yapın
Demo ve QA için örnek veri ve scriptler ekleyin: birkaç tedarikçi, farklı durumlarda faturalar ve birkaç “problemli” fatura (PO eksik, çift numara, tutar uyuşmazlığı). Bu, destek, satış ve QA'nın üretime dokunmadan sorunları yeniden üretmesini sağlar.
Staging kapısı ile dağıtın
Dağıtımı baştan staging + production, environment variable'lar ve logging ile planlayın. Staging production ayarlarını yansıtmalı ki onay akışı sürüm öncesi aynı davranış göster
Staging ortamı üretim ile benzer olsun ki onay yönlendirmesi değişikliklerini güvenle test edebilesiniz.
Eğer Koder.ai gibi bir platform kullanıyorsanız, snapshot ve rollback özellikleri onay yönlendirmesi değişikliklerini güvenle test etmeye ve gerekirse hızlı geri almaya yardımcı olur.
Küçük, güvenli adımlarla yayınlayın
Adım adım yayın yapın: önce bir MVP (yakalama, onaylar, ödeme durumu takibi) yayınlayın; sonra ERP/muhasebe entegrasyonları ve en sonunda hatırlatmalar ve eskalasyonlar gibi gelişmiş otomasyonları ekleyin. Her sürümü tek bir ölçülebilir iyileşmeye bağlayın (daha az geciken ödeme, daha az istisna, daha hızlı onaylar).
SSS
Who should be the primary users for an MVP vendor invoice app?
AP personeli ve onaycılar (AP staff + approvers) ile başlayın. Bu ikili temel döngüyü açar: faturalar yakalanır, doğrulanır, onaylanır ve ödemeye kadar izlenir.
İş akışı kararlı hale gelip benimsenme sağlandıktan sonra finans yöneticilerini, raporlama kullanıcılarını ve tedarikçi portalını ekleyin.
What are the best MVP goals to define before building anything?
3 ölçülebilir çıktıyı seçin ve kabul kriteri olarak kullanın, örneğin:
- Daha az geç ödeme (daha iyi vade görünürlüğü ve hatırlatmalar)
- Daha hızlı onaylar (net kuyruqlar ve eskalasyon)
- Daha temiz kayıtlar (tek doğruluk kaynağı + denetim günlüğü)
Bir özellik bu hedeflerden birini geliştirmiyorsa, "sonra" listesine alın.
How do we choose invoice and payment statuses without confusing the team?
Tek resmi durum zinciri ve her değişikliği tetikleyen koşulu yazın, örneğin:
- Draft → Submitted (AP gerekli alanları doldurduğunda)
- Submitted → Approved/Rejected (onaycının kararı kaydedilir)
- Approved → Scheduled (ödeme planlandı)
- Scheduled → Paid (banka/muhasebe onayı + referans ID)
"İşlendi" gibi belirsiz durumlardan kaçının veya ne anlama geldiğini kesin olarak tanımlayın.
What data model should we start with for invoices, approvals, and payments?
Pratikte en az şu tablolar/collection'lar olmalı:
- Vendor
- Invoice
- Approval (değiştirilemez kararlar)
- Payment (kısmi/çoklu ödemeler için one-to-many)
- Attachment
Para alanlarını tam sayı (kuruş) olarak tutun (yuvarlama hatalarını önlemek için) ve orijinal fatura dosyasını değiştirmeden saklayın.
How do we prevent duplicate invoices from being entered or paid twice?
(vendor_id, invoice_number) üzerinde benzersiz kısıtlama uygulayın. Gerekirse, numaralandırmayı tekrar kullanan tedarikçiler için miktar/tarih penceresi gibi ikincil kontroller ekleyin.
UI'da "muhtemel kopya" uyarısı gösterin ve eşleşen faturaların bağlantılarını verin, böylece AP hızlıca çözebilir.
Which roles and permissions are essential in an accounts payable workflow?
Küçük bir rol seti ve eylem bazlı izinler kullanın:
- AP Admin: ayarlar, override'lar
- AP Clerk: oluştur/yükle, onay öncesi düzenleme
- Approver: atananları onayla/reddet
- Finance Admin: ödemeleri doğrular, mutabakat yapar, dışa aktarır
- Read-only: sadece görüntüleme
İzinleri view, edit, approve, export gibi fiillere bağlayın.
How should delegated approvals (out-of-office coverage) work?
Delegasyonu şu şekilde destekleyin:
- Başlangıç/bitiş tarihleri
- "X adına Delege tarafından onaylandı" gibi denetim notu
- Oluşturma iznini sınırlayın (AP Admin veya yönetici)
Ayrıca aktif delegasyonları gösteren basit bir sayfa sağlayın ki kapsama görünür olsun.
What invoice capture and validation rules prevent downstream issues?
Doğrulamayı kaydetme ve gönderme aşamalarında kapı olarak ele alın:
- Zorunlu alanlar: tedarikçi, fatura numarası, fatura tarihi, toplam, para birimi, vade tarihi
- Tarih kuralları: vade tarihi fatura tarihinden önce olamaz; gelecek tarihleri uyar
- Tutar kuralları: negatif olmayan toplamlar; tutarlı yuvarlama
- Çift kayıt kontrolleri: politika bazlı bloklama veya uyarı
Tüm giriş yöntemleri (manuel, yükleme, e-posta) aynı sonucu üretmeli: taslak fatura + orijinal ek.
How do we model partial payments and track “scheduled” vs “paid” accurately?
Ödemeleri birincil kayıtlar olarak saklayın:
- Yöntem, tutar, gönderilen/ödenen tarih
- Referans ID (trace/çek/işlem numarası)
Hesapla:
- Ödenen tutar = ödemelerin toplamı
- Kalan bakiye = fatura toplamı − ödenen tutar
Bu, kısmi ödemeleri ve mutabakatı basitleştirir ve "onay kutusu muhasebesi"nin önüne geçer.
What’s the safest way to add accounting/ERP integrations without breaking the workflow?
İlk entegrasyonlar için MVP-dostu yaklaşım:
- İç ID'leri içeren güvenilir bir CSV dışa aktarma gönderin, böylece tekrar içe aktarımda çoğaltma olmaz
- Hangi sistemin tedarikçi kayıtlarına, GL kodlarına ve ödeme teyidine sahip olduğunu belirleyin
- Her dışa aktarma/senkron denemesi için net hata nedenleri ve tekrar deneme log'u tutun
İki yönlü senkronu, iç iş akışı güvenilir ve denetlenebilir hale geldikten sonra ekleyin.