Xpensio, kurumsal şirketlerin kağıt tabanlı masraf süreçlerini tamamen dijitalleştirmek için geliştirilmiş, uçtan uca bir masraf yönetimi platformudur. Çalışanlar, akıllı telefonlarıyla çektikleri fiş fotoğraflarını saniyeler içinde onaya gönderebilirken yöneticiler web veya mobil arayüz üzerinden tek tıkla onay veya ret kararı alabilmektedir.
Platform; web uygulaması (Next.js), iOS ve Android mobil uygulama (Flutter) ile kurumsal API (NestJS) bileşenlerinden oluşur. Tüm bileşenler tek bir monorepo altında yönetilmekte ve aynı sürüm döngüsüyle güncellenmektedir. Çok kiracılı (multi-tenant) mimari sayesinde her şirketin verileri birbirinden tam olarak izole tutulmaktadır.
Yapay zeka destekli OCR motoru, Gemini 2.5 Flash, GPT-4o ve Tesseract.js katmanlarını sırasıyla devreye alarak fiş görüntüsünden tarih, tutar, para birimi, tedarikçi adı, KDV tutarı ve döviz kuru dahil 10 farklı alanı otomatik olarak okumaktadır. Bu sayede manuel veri girişi ihtiyacı büyük ölçüde ortadan kalkmakta, hem zaman tasarrufu hem de veri doğruluğu sağlanmaktadır.
Kurumsal müşteriler için SAP ECC ve SAP S/4HANA entegrasyonu sunulmaktadır. Enterprise plan dahilinde Xpensio teknik ekibi, SAP tarafındaki ABAP geliştirmeleri, RFC bağlantıları ve FI-GL nakil konfigürasyonlarını tamamen üstlenmektedir. Böylece şirketlerin BT ekiplerinin iş yükü en aza indirilmektedir. Diğer ERP sistemleri için REST API adaptörleri sağlanmakta; bağlantı tarafının teknik entegrasyonu müşteri ekibine bırakılmaktadır.
Xpensio, esnek ve dinamik bir rol yapısı üzerine tasarlanmıştır. Aşağıdaki beş rol varsayılan konfigürasyon olarak tanımlanmıştır; ancak organizasyonun HR veya LDAP sistemi entegre edildiğinde kullanıcı rolleri, departman hiyerarşisi, yönetici zincirleri ve çalışan bilgileri otomatik olarak güncellenir. Şirketin organizasyon yapısı Xpensio'da gerçek zamanlı olarak yansıtılır.
Dinamik Yapı: Azure Active Directory, LDAP, SAP HCM veya SAP S/4HANA'dan gelen organizasyon verisiyle Xpensio otomatik senkronize olur. Çalışanın yöneticisi, grade'i ve departmanı HR sisteminden okunarak onay zinciri dinamik olarak oluşturulur. Çalışan organizasyonda hiyerarşik bir pozisyona geçtiğinde rolü otomatik olarak güncellenir.
| Rol | Tanım | Temel Yetkiler | Sınırlı Yetkiler |
|---|---|---|---|
| EMPLOYEE | Standart çalışan | Masraf oluşturma, fiş yükleme, kendi masraflarını görüntüleme | Başkasının masrafını görüntüleyemez |
| MANAGER | Ekip yöneticisi | Ekibinden gelen masrafları onaylama veya reddetme, ekip raporlarını görüntüleme | Finance işlemlerini yapamaz |
| FINANCE | Finans/muhasebe | Tüm onaylanmış masrafları inceleme, ERP'ye gönderme, Excel export | Sistem konfigürasyonu yapamaz |
| ADMIN | Organizasyon yöneticisi | Kullanıcı yönetimi, rol atama, şirket konfigürasyonu, tüm raporlar | Başka organizasyonu yönetemez |
| SUPER_ADMIN | Platform sahibi (multi-org bypass) | Tüm organizasyonları görüntüleme + yönetebilme, demo request listesi, factory reset | Üretimde sadece Xpensio operatöründe |
Önemli — Org izolasyonu: Her kullanıcı yalnızca kendi organizasyonuna (orgId) ait verileri görebilir; bu kural her API endpoint'inde zorunlu filter'dır. ADMIN/FINANCE rolleri ek olarak allowedCompanyIds whitelist'iyle kısıtlanabilir (IDOR koruması). Sadece isSuperAdmin=true kullanıcı bu filtreleri bypass edebilir.
Not — UPPER_MANAGER ayrı bir rol değildir: Onay zincirinde "üst yönetici" adımı, çalışanın bağlı olduğu MANAGER'ın bir üstü (skip-level) olarak HR/LDAP hiyerarşisinden veya upperManagerId alanından otomatik çözümlenir. Aynı kullanıcı bir ekip için MANAGER, başka ekip için UPPER_MANAGER olabilir.
MANAGER rolü, organizasyon hiyerarşisine bağlı olarak onay zincirinde birden fazla seviyede bulunabilir. Her çalışan için onay zinciri HR/LDAP verisinden otomatik olarak oluşturulur:
| Onay Seviyesi | Onaycı | Ne Zaman Devreye Girer? | Kaynak |
|---|---|---|---|
| 1. Onaycı | Direkt Yönetici (MANAGER) | Her zaman — çalışanın atanmış yöneticisi | HR/LDAP veya manuel atama |
| 2. Onaycı | Üst Yönetici (UPPER_MANAGER) | Tutar, çalışanın grade limitini aştığında otomatik | HR/LDAP hiyerarşisi (skip-level manager) |
| 3. Onaycı | CFO (otomatik seçilen yüksek grade kullanıcı) | Tutar Grade Approval Limit'i aştığında VEYA çalışanın grade'i CFO threshold'un üstündeyse | Organizasyonun cfoGradeThreshold üstündeki en yetkili kullanıcısı (varsayılan G≥18, "Finans/Mali İşler" departmanına öncelik) |
| 4. Onaycı | Finans Ekibi (FINANCE) | Her zaman — son adım, ERP gönderimi bu adımda | FINANCE rolüne sahip kullanıcı |
HR Entegrasyonu ile Otomatik Konfigürasyon: Organizasyonun LDAP, Azure AD, SAP HCM veya SAP S/4HANA sistemi bağlandığında; çalışanların yöneticileri, grade bilgileri ve departman hiyerarşileri otomatik senkronize edilir. Gece 01:00'de çalışan otomatik senkronizasyon ile organizasyon değişiklikleri (terfi, transfer, yeni işe alım) Xpensio'ya yansıtılır ve onay zincirleri güncellenir.
Excel (.xlsx) dosyasıyla çok sayıda kullanıcıyı aynı anda sisteme ekleyin. İçe aktarılan kullanıcılar ilk girişte şifre değiştirmeye yönlendirilir.
Her kullanıcıya rol (EMPLOYEE/MANAGER/FINANCE) ve harcama limiti belirleyen grade (A/B/C/D) atanabilir. Değişiklikler anlık olarak geçerli olur.
Admin, herhangi bir kullanıcı için şifre sıfırlama başlatabilir. Kullanıcıya güvenli link içeren email gönderilir, oturum sonrası sona erer.
Ayrılan çalışanların hesapları silinmeksizin pasife alınabilir. Pasif hesaplar sisteme giremez, tüm geçmiş veriler korunur.
Xpensio, organizasyon hiyerarşisine dayalı dinamik bir onay iş akışı sunmaktadır. Masraf onaya gönderildiğinde, çalışanın yönetici zinciri ve tutara göre onay adımları otomatik olarak oluşturulur. HR/LDAP entegrasyonu mevcutsa zincir doğrudan organizasyon yapısından alınır; entegrasyon yoksa admin tarafından manuel atanmış yöneticiler kullanılır.
Çalışan masraf kaydını oluşturur. Fiş fotoğrafı yüklenir, OCR verileri otomatik doldurulur. Masraf onaya gönderilmeden düzenlenebilir, silinebilir. Kaydedilen taslaklar çalışanın "Masraflarım" listesinde görünür.
Çalışan "Onaya Gönder" butonuna bastığında durum SUBMITTED olur. Sorumlu yöneticiye anlık email ve push bildirimi gönderilir. Bu aşamadan itibaren çalışan masrafı düzenleyemez.
Masraf, atanmış yöneticinin onay kuyruğuna girer. Yönetici, web veya mobil uygulama üzerinden onaylama ya da reddetme kararı verebilir. Ret durumunda çalışana neden belirtilir.
Masraf tutarı çalışanın grade limitini aşarsa, direkt yöneticinin onayından sonra üst yönetici (skip-level manager) onay adımı otomatik devreye girer. Üst yönetici, HR/LDAP sistemindeki hiyerarşiden veya admin atamasından belirlenir. Bu adım, organizasyonun onay politikasına göre yapılandırılabilir.
Masraf tutarı 50.000 TRY veya üzerindeyse önceki onaylardan sonra otomatik olarak CFO (ADMIN rolüne sahip kullanıcı) onay adımı eklenir. Standart tutardaki masraflar bu adımı atlayarak doğrudan finansa geçer.
Tüm yönetici onaylarından sonra masraf, finans/muhasebe ekibinin inceleme kuyruğuna girer. Finans kullanıcıları belge doğrulaması yapar, muhasebe kodlarını kontrol eder ve ERP'ye gönderim kararı alır. FINANCE_APPROVED durumuna geçer.
Finans onayının ardından ERP entegrasyonu aktifse masraf otomatik olarak ERP sistemine iletilir (SAP, Oracle, Netsis vb.). ERP'den dönen belge numarası Xpensio kaydına eklenir. Çalışana onay email ve push bildirimi gönderilir.
Herhangi bir onay aşamasında ret kararı alınırsa masraf REJECTED durumuna geçer. Çalışana ret nedeni ve açıklama içeren email + push bildirimi gönderilir. Reddedilen masraf, çalışan tarafından düzenlenip tekrar onaya gönderilebilir.
| Mevcut Durum | İzin Verilen Eylemler | Yetkili Roller | Sonraki Durum |
|---|---|---|---|
| DRAFT | Düzenle, Sil, Onaya Gönder | EMPLOYEE (sahip) | SUBMITTED |
| SUBMITTED | Onaya Al (sistem) | Sistem otomatik | PENDING_MANAGER |
| PENDING_MANAGER | Onayla, Reddet | MANAGER (atanmış) | PENDING_CFO veya PENDING_FINANCE |
| PENDING_CFO | Onayla, Reddet | ADMIN (CFO), FINANCE | PENDING_FINANCE veya REJECTED |
| PENDING_FINANCE | Onayla, Reddet, Bilgi İste, SAP Gönder | FINANCE, ADMIN | FINANCE_APPROVED, REQUEST_INFO veya REJECTED |
| REQUEST_INFO | Düzenle, Tekrar Gönder (Resubmit) | EMPLOYEE (sahip) | SUBMITTED → onay zinciri tekrarı |
| FINANCE_APPROVED | SAP Push (otomatik) — başarısızsa Retry / Debug / Manual Fix | FINANCE, ADMIN, sistem cron | POSTED_TO_SAP veya SAP_FAILED (audit log'a düşer) |
| POSTED_TO_SAP | F110 Polling otomatik kontrol; manuel "Ödeme Tamamlandı" mümkün | Sistem cron (F110), FINANCE | PAYMENT_PENDING → PAID |
| PAYMENT_PENDING | SAP F110 ödeme run sonucu izlenir | Sistem cron | PAID (F110'dan PYMT belge no döndüğünde) |
| PAID | Görüntüle, Excel Export — ödeme tarihi ve bank reference görünür | Tüm roller (read-only) | Terminal durum |
| REJECTED | Düzenle, Tekrar Gönder | EMPLOYEE (sahip) | SUBMITTED (yeniden) |
SAP F110 Ödeme Polling: Onaylı masraf SAP FI'ya post edildikten sonra Xpensio gece çalışan cron job ile F110 ödeme run sonuçlarını sorgular. Personel ödemesi gerçekleştiğinde durum otomatik PAID olur, ödeme tarihi ve banka referans no kaydedilir. Çalışan mobil veya web'de "ödendi/beklemede" durumunu canlı görür — finans departmanına "ödememi ne zaman alırım?" sorusu sıfırlanır.
Xpensio'nun yapay zeka destekli OCR motoru, üç katmanlı bir mimari ile çalışmaktadır. Her katman bir öncekinin başarısız olduğu durumda devreye girerek maksimum başarı oranı sağlanmaktadır.
| # | Alan Adı | Açıklama | Örnek Değer |
|---|---|---|---|
| 1 | Tarih | Fiş/fatura tarihi | 15.03.2026 |
| 2 | Toplam Tutar | KDV dahil toplam ödeme | 1.250,00 |
| 3 | Para Birimi | ISO 4217 kodu | TRY, EUR, USD |
| 4 | Tedarikçi Adı | Satıcı/işletme adı | ABC Teknoloji A.Ş. |
| 5 | KDV Tutarı | Hesaplanan KDV | 200,20 |
| 6 | KDV Oranı | Uygulanan KDV yüzdesi | %20, %10, %8, %1, %0 |
| 7 | Masraf Kategorisi | AI tarafından sınıflandırılan kategori | Ulaşım, Konaklama, Yemek |
| 8 | Döviz Kuru | Yabancı para birimlerinde kur | 1 EUR = 38,50 TRY |
| 9 | Fatura Numarası | Belge referans numarası | INV-2026-00145 |
| 10 | Açıklama | Kısa masraf açıklaması | İstanbul-Ankara uçak bileti |
Türkiye vergi mevzuatına uygun altı KDV oran kodu standart olarak gelir; her organizasyon kendi ülke oranlarını tanımlayabilir. OCR motoru fişteki KDV yüzdesini otomatik algılayarak uygun V-kodu önerir.
| V-Kod | Oran | Uygulama Alanları |
|---|---|---|
V0 |
%0 | KDV muaf — ihracat, sağlık, eğitim |
V1 |
%1 | Temel gıda, gazete, kitap, su |
V2 |
%8 | Eski %8 oranı — fişlerde halen görünebilir |
V3 |
%18 | Eski %18 oranı (legacy) — geriye dönük muhasebe için kullanılır |
V4 |
%10 | Konaklama, restoran hizmetleri, bazı gıda ürünleri |
V5 |
%20 | Standart oran — genel hizmetler, yazılım, danışmanlık, telekomünikasyon |
Çalışanın seçtiği ödeme yöntemi SAP FI Posting sırasında özel hesap kodu (Sondkennzeichen / UMSKZ) olarak otomatik dönüştürülür. Bu, kurumsal kart ile şahsi cebimden harcanan masrafların farklı GL hesaplarına post edilmesini sağlar (BAPI_ACC_DOCUMENT_POST üzerinden tek belgede).
| Ödeme Yöntemi (paymentMethodType) | UMSKZ | SAP Hesap | Senaryo |
|---|---|---|---|
| 0 — Nakit | N | 335/100 — Personel/Kasa | Çalışan kendi cebinden nakit ödedi, masraf personel iadesinde mahsup edilir |
| 1 — Şahsi Kredi Kartı | I | 195 — İş Avansı | Çalışan kendi kartı kullandı; iade dönüşünde 195 hesabı kapanır |
| 2 — Şirket Ödedi (avans) | I | 195 — İş Avansı | Şirket çalışan adına önceden ödedi (avans), masrafla mahsup ediliyor |
| 3 — Kurumsal Kredi Kartı | O | 309 — Şirket KK | Banka tarafından şirket adına kesilen kart; ekstre Card Reconciliation modülünde eşleşir |
ZEXP_CFG_02: SAP tarafında bu eşleşme tablosu standart şekilde gelir. UMSKZ değerleri ve hesap kodları müşteri bazında erpConfig.glConfig.byCompany alanından özelleştirilebilir.
Akaryakıt, otopark ve bakım masrafları için çalışanlar masraf kaydına araç plakasını ekleyebilir. Bu özellik, araç bazlı maliyet analizini ve filoya ait masrafların otomatik sınıflandırılmasını sağlar.
Web ve mobil uygulamada masraf formunda isteğe bağlı "Araç Plakası" alanı bulunur. Çalışan plakayı manuel girer; gelecekte OCR ile fişten otomatik okunması planlanmaktadır.
Finance ve Admin kullanıcıları, masraf listesini araç plakasına göre filtreleyerek belirli bir araca ait tüm harcamaları listeleyebilir.
Excel export dosyasında "Araç Plakası" sütunu yer alır. Bu sayede muhasebe ekipleri araç bazlı maliyet raporu çıkarabilir.
SAP entegrasyonunda araç plakası, ilgili alanla eşleştirilerek FI-GL nakil kaydına dahil edilir. Böylece araç maliyetleri SAP'ta da takip edilebilir.
Finance ve Admin rolündeki kullanıcılar, tüm masraf verilerini tek tıkla Excel formatında (.xlsx) dışa aktarabilir. Export işlemi organizasyon verilerini tam olarak izole ederek yalnızca yetkili kullanıcının organizasyonuna ait masrafları içerir.
Masraflar ve Raporlar sayfasındaki yeşil "Excel" butonu ile tüm görünüm filtreleri uygulanmış hâlde export alınır. Dosya tarayıcıya otomatik indirilir.
AppBar'daki download ikonuna dokunularak export başlatılır. share_plus entegrasyonu sayesinde dosya doğrudan e-posta, Slack veya diğer uygulamalara paylaşılabilir.
| Sütun | İçerik | Format |
|---|---|---|
| ID | Masraf benzersiz kimliği | Sayısal |
| Tarih | Masraf tarihi | GG.AA.YYYY |
| Çalışan | Ad Soyad | Metin |
| Kategori | Masraf kategorisi | Metin |
| Tutar | Masraf tutarı | Sayısal (2 ondalık) |
| Para Birimi | ISO 4217 kodu | Metin |
| KDV Tutarı | Hesaplanan KDV | Sayısal |
| Araç Plakası | Varsa araç plakası | Metin |
| Durum | Onay durumu | Metin |
| Açıklama | Masraf açıklaması | Metin |
| Onaylayan | Son onay veren kişi | Metin |
| ERP Şirket Kodu | SAP BUKRS değeri | Metin |
Xpensio'nun kapsamlı kullanıcı yönetimi modülü, organizasyon yöneticilerine (ADMIN) kullanıcı yaşam döngüsünü tamamen kontrol etme imkânı sunar. Tüm işlemler orgId bazında izole çalışır.
Ad, e-posta, rol ve grade bilgileri girilerek yeni kullanıcı oluşturulur. Kullanıcıya hoşgeldin e-postası gönderilir; ilk girişte şifre değiştirme zorunludur.
Yüzlerce kullanıcı tek bir .xlsx dosyasıyla içe aktarılabilir. Her satır bir kullanıcıyı temsil eder. İçe aktarılan tüm kullanıcılar mustChangePassword=true ile oluşturulur.
Mevcut kullanıcının rolü, grade'i, bağlı yöneticisi veya aktif durumu PATCH endpoint'i üzerinden anlık olarak güncellenebilir.
Admin, herhangi bir kullanıcı için şifre sıfırlama başlatabilir. SHA-256 token içeren güvenli link e-postayla iletilir, 1 saat geçerlidir.
Kullanıcılar kendi başlarına şifre sıfırlama talep edebilir. E-posta doğrulamasıyla güvenli bağlantı gönderilir.
Kullanıcılar mevcut şifrelerini doğrulayarak yeni şifre belirleyebilir. Şifre değişikliğinde tüm aktif oturumlar sonlandırılır.
Xpensio'da grade sayısal bir alan'dır (örn. 8, 12, 15, 18, 22). Şirketin HR/SAP HCM sistemindeki kariyer skalasına birebir denk gelir; örneğin Hepsiburada gibi büyük kurumlarda 1-25 aralığında işler. Her organizasyon kendi grade aralığını ve limitlerini tanımlar — A/B/C/D gibi sabit etiket yoktur.
Admin "Grade Limitleri" ekranından (/admin/grade-limits) her grade için bir tek-masraf limiti tanımlar. Limit aşıldığında onay zinciri otomatik genişler:
| Çalışanın Grade'i | Tek Masraf Limiti (örnek) | Limit Aşılırsa Eklenen Adım |
|---|---|---|
| ≤ 11 (Junior/Specialist) | 10.000 TL | + Upper Manager |
| 12-15 (Senior/Manager) | 25.000 TL | + Upper Manager |
| 16-18 (Director) | 50.000 TL | + CFO (Mali İşler tetiği) |
| ≥ 19 (VP/C-level) | Limitsiz | (Direkt Finance'a düşer) |
Per-org bazlı: Tablodaki limitler sadece örnek; her organizasyon kendi cetvelini setup wizard'da tanımlar. GradeApprovalLimit tablosu (org × grade × limit) cron'larda da yenilenir — HR sisteminden grade güncellemesi geldiğinde otomatik etkinleşir.
Organizasyon ayarında bir cfoGradeThreshold (varsayılan 18) tanımlanır. Onay zincirinde CFO adımı tetiklendiğinde Xpensio, CFO yerine atayacağı kişiyi şu sırayla seçer:
Böylece "CFO yok, kim onaylayacak?" sorusu sıfırlanır ve onay zinciri her zaman tamamlanır.
Çalışanların hangi maliyet merkezlerine masraf girebileceği iki katmanda belirlenir:
costCenterCode (RELID) vardır. Form'da bu CC otomatik gelir ve read-only olur — çalışan başka CC seçemez.snapshotCostCenterCode, snapshotCostCenterName). Sonradan kullanıcının CC'si değişse bile rapor hep doğru kalır.SAP CO uyumlu: Bu yetki modeli, SAP CO'daki "kullanıcı bazlı maliyet merkezi yetki nesnesi (K_CSKS)" ile birebir paraleldir. Müşterinin SAP'ta tanımlı yetki yapısı Xpensio'ya tek tıkla import edilebilir.
ADMIN/FINANCE rolündeki kullanıcılar için tüm konfigürasyon tek panelde toplanır. Şirket yapısı, hesap planı ve onay politikası kod yazmadan yönetilebilir:
| Ekran | İşlev | Erişim |
|---|---|---|
/admin/setup | 4 adımlı Setup Wizard — Org, Company/SubCompany, ERP credential (şifreli), GL/CC mapping. SAP push çalışmadan önce mutlaka tamamlanmalı. | Sadece ADMIN |
/admin/companies & /admin/sub-companies | Şirket ve alt şirket yapısı (BUKRS değerleri, SAP company code). | ADMIN |
/admin/cost-centers | Maliyet merkezleri (RELID listesi). SAP'tan toplu import edilebilir veya Excel ile yüklenir. | ADMIN |
/admin/grade-limits | Grade × Limit cetveli — onay zinciri buradan dinamik üretilir. | ADMIN/FINANCE |
/admin/gl-mappings | Kategori × ExpenseGl × TaxGl × CostCenter eşlemesi. Excel toplu import. | ADMIN/FINANCE |
/admin/gl-kkeg-mappings | 7194 KKEG (Kanunen Kabul Edilmeyen Gider) eşlemesi. Yakıt, eğlence vs. limit aşımı kısımları KKEG hesabına otomatik bölünür. | ADMIN/FINANCE |
/admin/categories | Masraf kategorileri (SAP expense type code'larıyla eşli, ör. '21', '35'). | ADMIN/FINANCE |
/admin/sap-clients | SAP RFC kullanıcı/şifre bilgileri (AES-256-GCM şifreli erpConfig içinde). | SUPER_ADMIN |
/admin/audit-logs | Tüm sistem aktivitesinin denetim izi — login, masraf state geçişi, kullanıcı değişikliği, SAP push deneme/sonuç. | ADMIN/SUPER_ADMIN |
/admin/fraud | Şüpheli fişler kuyruğu (SHA-256 dup, round-amount, Gemini AI işaretli). | ADMIN/FINANCE |
/admin/card-reconciliation | Kurumsal kart ekstre import + auto-match + eksik fatura raporu (Bölüm 6). | ADMIN/FINANCE |
Xpensio, ERP bağımsız bir entegrasyon mimarisi üzerine kurulmuştur. Temel misyonumuz; hangi ERP veya HR sistemini kullanırsanız kullanın, masraf yönetimini o sistemle sorunsuz entegre etmektir. SAP konusundaki derin deneyimimizin yanı sıra Oracle, Microsoft Dynamics, Logo, Netsis ve diğer kurumsal sistemlerle de entegrasyon uç noktaları sağlıyoruz.
RFC, OData, BAPI protokolleri. FI-GL otomatik nakil, ABAP geliştirme. Enterprise Plan kapsamında Xpensio ekibi tüm teknik entegrasyonu üstlenir.
REST API adaptörü. Oracle Financials ile masraf aktarımı için hazır uç noktalar. Teknik entegrasyon tarafı müşteri ekibine rehberlikle tamamlanır.
D365 Finance & Operations entegrasyonu için REST bağlayıcı. Azure AD ile kimlik yönetimi entegrasyonu da dahildir.
Türk ERP sistemleri için özel REST API adaptörleri. Logo Tiger, Netsis Enterprise ve Mikro ile yerli muhasebe entegrasyonu.
Xpensio, kullanıcı ve organizasyon yapısını otomatik senkronize etmek için aşağıdaki HR ve kimlik sistemleriyle entegre olabilir:
| Sistem | Entegrasyon Türü | Ne Senkronize Edilir? |
|---|---|---|
| Azure Active Directory / Microsoft 365 | Microsoft Graph API | Kullanıcılar, departmanlar, yönetici hiyerarşisi, gruplar |
| LDAP / On-Premise Active Directory | LDAP protokolü (ldaps://) | Kullanıcılar, OU yapısı, yönetici ilişkileri |
| SAP HCM (İnsan Kaynakları) | SAP RFC / OData | Personel, grade, pozisyon, departman, yönetici zinciri, şirket kodları |
| SAP S/4HANA Cloud HR | SAP BTP / OData v4 | Çalışan verileri, org hiyerarşisi, maliyet merkezleri |
| SAP S/4HANA On-Premise HR | SAP RFC | PERNR, ORGEH, PLANS, yönetici email alanları |
| SAP SuccessFactors | OData v2 + OAuth2 (XSUAA) | Cloud HR — Employee Central, Job Info, Position |
| External DB (Generic) | JDBC/ODBC — herhangi bir SQL veritabanı | Şirketin kendi HR DB'si veya custom HRIS'i için |
| Mock Provider | Yok — sandbox | POC, demo ve test ortamları için 5 hazır variant (SAP_HCM, S4_OnPrem, S4_Cloud, AzureAD, Standalone) |
| Null (Standalone) | Yok | HR entegrasyonu olmayan müşteriler için — kullanıcılar manuel veya Excel ile eklenir |
9 Identity Adaptörü: Toplam 9 farklı kimlik kaynağı Factory Pattern ile dinamik olarak yüklenir (identity/ modülü). Yeni bir HR sistemi eklemek isterseniz adapter interface'ini implemente etmek yeterli — core kod değişmez.
FI nakil tarafı için de aynı adapter mimarisi: her organizasyon kendi erpType ayarına göre uygun adapter'ı yükler. Tüm credential bilgileri AES-256-GCM ile şifreli erpConfig alanında saklanır.
| Adapter | Protokol | FI Posting Yöntemi |
|---|---|---|
| SAP ECC 6.0 | RFC over HTTPS (SICF) | BAPI_ACC_DOCUMENT_POST + Z-tablo (ZEXP_T_*) |
| SAP S/4HANA On-Premise | RFC veya OData v2 | BAPI veya OData FI Journal Entry |
| SAP S/4HANA Cloud | OData v4 + OAuth2 (XSUAA) | Journal Entry API (ManageJournalEntry) |
| SuccessFactors-FI | OData v2 + OAuth2 | Cloud FI/Travel module entegrasyonu |
| Mock | Local stub server | Demo ve test için — hiçbir gerçek SAP isteği gönderilmez |
Müşteri tercihi ve SAP altyapısına göre Xpensio iki farklı çalışma modu sunar — biri "Xpensio SAP'a yazar", diğeri "SAP Xpensio'dan çeker":
Masraf FINANCE onayı sonrası Xpensio doğrudan SAP'a POST eder (BAPI veya OData). FI belge no anında döner ve POSTED_TO_SAP durumuna geçer. Hızlı geri bildirim — müşterinin SAP tarafında ABAP geliştirmesi gerekmez. Hepsiburada gibi modern SAP altyapılarında ideal.
SAP tarafı kendi cron'uyla Xpensio'yu çağırır (ZEXP_GET_EXPENSES ABAP raporu). Xpensio bekleyen masraf listesini döndürür, SAP kendi tarafında muhasebeleştirir, sonucu POST /pull/reports/:id/posted ile bildirir. Xpensio'ya internet erişimi olmayan kapalı SAP networkleri için ideal.
İki mod arasında geçiş Organization.integrationMode alanında PUSH veya PULL olarak tek tıkla yapılır; kullanıcı deneyimi değişmez.
Vergi reformu 7194 sayılı kanun ile bazı giderlerin KDV indirim hakkı ve gider yazma sınırı getirildi (örn. araç yakıt, eğlence, hediye). Xpensio bu kuralları otomatik işler:
/admin/gl-kkeg-mappings ekranından ekler/günceller. Excel ile toplu import edilebilir.Otomatik Organizasyon Güncellemesi: HR sistemi entegre edildiğinde kullanıcı ekleme/çıkarma, departman değişiklikleri, yönetici atamaları ve grade güncellemeleri her gece 01:00'de otomatik senkronize edilir. Manuel işlem gerekmez. Onay zincirleri organizasyon yapısından dinamik olarak oluşturulur.
SAP ECC ve SAP S/4HANA entegrasyonu Enterprise Plan kapsamında Xpensio teknik ekibi tarafından tamamen sağlanır. Müşteri BT ekibinin SAP tarafında herhangi bir geliştirme yapmasına gerek yoktur.
| Özellik | SAP Enterprise Plan | Diğer ERP Sistemleri |
|---|---|---|
| Entegrasyon Türü | SAP RFC / OData / BAPI | REST API adaptörü (her sisteme özel) |
| Teknik Sorumluluk | Xpensio ekibi tamamen üstlenir | Xpensio API + teknik rehberlik; bağlantı tarafı müşteri ekibi |
| ABAP Geliştirmesi | Xpensio sağlar | Geçerli değil |
| FI-GL Nakil | Otomatik, yapılandırılmış | ERP'ye uygun aktarım formatı hazırlanır |
| Şirket Kodu (BUKRS / CompanyCode) | Xpensio arayüzünden yönetilir | Müşteri yapılandırması, Xpensio'ya eşlenir |
| Test Ortamı | Xpensio test SAP sistemi | Müşteri sağlar |
| Destek Seviyesi | 7/24 SLA ile tam destek | Teknik rehberlik + kapsamlı API dokümantasyonu |
| Go-live Süresi | 2-4 hafta | Müşteri entegrasyon hızına bağlı |
Masraf PENDING_FINANCE aşamasında Finance kullanıcısı tarafından onaylanır. Tüm belgeler doğrulanmış ve ERP Şirket Kodu atanmış olmalıdır.
Xpensio backend'i ilgili ERP adaptörünü çağırır. Masraf verileri ERP sisteminin beklediği formata dönüştürülür.
SAP için ZCL_EXPENSE.POST_EXPENSE ABAP fonksiyonu çağrılır. FI-GL muhasebe kaydı oluşturulur, belge numarası alınır.
SAP onayı döndüğünde masraf otomatik olarak ERP_SENT durumuna geçer. SAP belge numarası Xpensio kaydına eklenir, izlenebilirlik sağlanır.
Önemli Not: ERP entegrasyonu için her masrafın ilgili şirkete karşılık gelen ERP Şirket Kodu ile ilişkilendirilmiş olması gerekmektedir (SAP'ta BUKRS, diğer ERP'lerde company code). Bu yapılandırma, Xpensio organizasyon ayarlarından ADMIN kullanıcı tarafından yönetilmektedir. HR entegrasyonu mevcutsa şirket kodları otomatik senkronize edilir.
Xpensio, kurumsal güvenlik standartlarını karşılayan çok katmanlı bir güvenlik mimarisi ile tasarlanmıştır. Her katmanda bağımsız güvenlik önlemleri uygulanmakta ve hiçbir tek noktada güvenlik ihlali tüm sistemi tehdit etmemektedir.
Her API isteği imzalı JWT token ile doğrulanır. Token payload'ı sub, email, role ve orgId içerir. Şifre değişikliğinde tüm aktif tokenlar geçersiz kılınır.
Her kullanıcı yalnızca kendi organizasyonuna (orgId) ait verilere erişebilir. Bu kural tüm API endpoint'lerinde otomatik olarak zorlanır. IDOR saldırıları önlenir.
Yüklenen her fiş görüntüsü SHA-256 ile hashlenir. Aynı fiş ikinci kez yüklenmeye çalışılırsa otomatik olarak tespit edilir. Gemini AI ek fraud analizi yapar.
Her endpoint, izin verilen rolleri açıkça tanımlar. Guard katmanı, yetersiz yetkili istekleri 403 hatası ile engeller. Rol yükseltme sadece ADMIN yapabilir.
OCR ile doldurulduktan sonra fatura/fiş numarası alanı kilitlenir. Kullanıcılar bu alanı değiştiremez; veri bütünlüğü korunur.
Uygulama her açıldığında kimlik doğrulama zorunlu tutulur. Geçersiz veya süresi dolmuş token tespit edildiğinde kullanıcı otomatik olarak giriş ekranına yönlendirilir.
Parolalar bcrypt ile hashlenerek saklanır. Düz metin parola hiçbir zaman veritabanında tutulmaz. Sıfırlama tokenları SHA-256 ile hashlenir ve 1 saat geçerlidir.
Tüm auth endpoint'lerinde rate limiting uygulanır. 5 hatalı şifre denemesi sonrası kullanıcı 15 dakika kilitlenir (failedLoginCount + lockedUntil alanları). Şüpheli aktivitede IP geçici engellenir.
Müşterinin SAP/ERP RFC kullanıcı adı ve şifresi erpConfig alanında AES-256-GCM ile şifreli saklanır (ENCRYPTION_KEY env değişkeni). DB'ye doğrudan erişen biri bile credential'ı okuyamaz. crypto.service sadece runtime'da deşifrelemek için authorized request'ler içinde çalışır.
Login, masraf state geçişleri (DRAFT→SUBMITTED→APPROVED→POSTED_TO_SAP→PAID), kullanıcı rol/grade/manager değişiklikleri, SAP push deneme ve sonuçları, fraud bayrakları — hepsi AuditLog tablosunda tutulur. ADMIN /admin/audit-logs ekranından arar; KVKK/SOC2 uyumu için kanıt.
Aynı satıcı VKN + fiş numarası çifti aynı org'da iki kez girilemez. Bir fiş yanlışlıkla ya da kasıtlı olarak iki masrafa konulamaz; backend duplicate fish denemesini yakalar ve kullanıcıya hangi masraf no'da kayıtlı olduğunu bildirir.
Platform sahibi isSuperAdmin=true kullanıcı, HR sync sırasında "ADMIN'den EMPLOYEE'ye düşürüldü" gibi hatalı senaryolardan otomatik korunur (user-sync.service skip listesi). Setup wizard sahibini ezmez.
Xpensio'nun 3 katmanlı fraud detection motoru, fiş yüklendiği anda devreye girer ve şüpheli aktivite finance ekibinin gözüne anında çarpar:
| Katman | Mekanizma | Yakaladığı Senaryo |
|---|---|---|
| Tier 1 — SHA256 Hash | Yüklenen her fiş görüntüsünün SHA-256'sı kaydedilir. | Aynı fişin iki çalışan tarafından, ya da aynı çalışan tarafından iki masrafa eklenmesi. |
| Tier 2 — Round-amount | İstatistiksel kontrol: tutar yuvarlak (1.000, 5.000, 10.000) ise score artar. | "Tutar uydurma" şüphesi — gerçek fiş genelde 1.247,50 gibi spesifiktir. |
| Tier 3 — Gemini AI | Gemini Vision aynı satıcıdan üst üste fiş, gece yarısı submission, politika dışı tutar pattern'larını analiz eder. | Tekrar eden satıcı kötüye kullanımı, anormal saat şüphesi, görsel manipülasyon işaretleri. |
Her fiş 0-100 arası bir fraudScore alır. Skor ≥ 75 → otomatik SUSPICIOUS bayrağı + finance bildirimi. ADMIN/FINANCE /admin/fraud ekranından şüpheli kuyruğunu inceler, her satırı "Onaylandı / Engellendi" olarak resolve eder.
Xpensio, masraf iş akışının kritik noktalarında hem email hem de mobil push bildirimi göndererek tüm paydaşların anlık olarak haberdar edilmesini sağlar.
| Olay | Alıcı | Kanal | İçerik |
|---|---|---|---|
| Masraf onaya gönderildi | Atanmış Yönetici | Email + Push | Masraf adı, tutar, çalışan adı, link |
| Masraf yönetici tarafından onaylandı | Çalışan | Email + Push | Masraf adı, tutar, onay tarihi |
| Masraf reddedildi | Çalışan | Email + Push | Masraf adı, ret nedeni, açıklama |
| 50K+ TRY masraf CFO onayında | CFO (ADMIN) | Email + Push | Yüksek tutarlı masraf uyarısı |
| Masraf ERP'ye gönderildi | Çalışan + Finance | SAP belge numarası, tarih | |
| Yeni kullanıcı oluşturuldu | Yeni Kullanıcı | Hoşgeldin, geçici şifre, login linki | |
| Şifre sıfırlama talebi | Kullanıcı | SHA-256 güvenli link, 1 saat geçerli |
Kurumsal kredi kartı kullanan organizasyonlar için Xpensio, banka ekstresini (CSV / PDF / Excel) tek tıkla içeri alır; her satırı çalışanların girdiği masraf kayıtlarıyla otomatik karşılaştırır. Finance ekibinin ay sonu kapanışta saatlerce manuel mutabakat işi saniyelere iner.
Garanti, İş Bankası, Akbank şablonları ek olarak Generic CSV ve banka bazlı PDF parser. Tenant başına özel kolon eşleştirmesi ile yeni bankalar admin panelinden tanımlanır.
Skor algoritması: tarih (±2 gün), tutar (TRY karşılığı, FX dönüşümü dahil), satıcı/merchant fuzzy eşleşme, fatura/fiş varlığı. Skor ≥ 80 ise otomatik bağlanır.
Bir kart hareketi birden çok faturaya bölünebilir (örn. restoranda iki fiş, yakıt + market aynı POS). Toplam = ekstre tutarı kontrolü zorunlu.
Yurt dışı seyahat USD / EUR / GBP harcamaları canlı kurla TRY'a çevrilerek karşılaştırılır. Cross-currency tolerans %2.
Kart kullanılmış fakat Xpensio'da masraf girilmemiş hareketler tek listede. Finance kullanıcıya hatırlatma e-postası tetikleyebilir.
Kurumsal kart muhasebe akışı standart geliyor: BORÇ Gider hesabı / ALACAK 309 (Kurumsal Kredi Kartı) — eşleşmiş satırlar mevcut SAP FI Push akışına düşer, ek geliştirme yok.
Erişim: Sol menü → "Kart Mutabakatı" (ADMIN/FINANCE) ya da kullanıcı için "Kartlarım" (kendi kartının eksik fatura listesi). 4 sekme: Kartlar / Ekstreler / Eksik Fatura / CSV Şablonları.
Xpensio, farklı büyüklükteki şirketler için iki fiyatlandırma planı sunmaktadır. Tüm planlar kullanıcı başına aylık ücretlendirme modelini esas alır. Enterprise plan, büyük ölçekli şirketler için özel fiyatlandırma ve öncelikli destek içerir.
Fiyat Avantajı: Enterprise plan, Standard plana göre %40 daha uygun fiyatlıdır. 100 kullanıcılı bir şirket için yıllık fark: (€10 - €6) × 100 × 12 = €4.800 tasarruf.
| Hizmet | Açıklama | Ücret |
|---|---|---|
| Kurulum ve Onboarding | İlk kurulum, veri göçü, eğitim | Plana göre değişir (görüşme) |
| SAP Entegrasyon Projesi | Enterprise'a dahil; özel SAP yapılandırmaları | Enterprise Plan dahil |
| Özel Geliştirme | Müşteriye özel özellik geliştirme | Proje bazlı (teklif) |
| Ek Depolama | Fiş arşivleme limiti aşılırsa | Görüşme |
Xpensio, modern ve ölçeklenebilir teknoloji yığını üzerine inşa edilmiştir. Tüm bileşenler açık kaynaklı teknolojiler kullanılmakta ve üretim ortamı Hetzner VPS üzerinde Docker Compose ile yönetilmektedir.
Port 3001 | REST API | JWT Auth | Prisma ORM
Prisma migrations | Multi-tenant schema | ACID uyumlu
Port 3000 | Vercel deploy | Zustand state | Tailwind CSS
iOS + Android | 25+ ekran | FCM push | OCR client preview | Çevrimdışı taslak | share_plus + open_filex | v1.4.2'de Edge-to-Edge (Android 15 SDK35)
Gemini 2.5 + pgvector RAG (768d MRL embedding) | Function calling tools | Web + mobil + widget frontend
Şu an lokal Hetzner disk; disk %60'a ulaşınca Cloudflare R2'ye migrasyon (free tier yeterli)
Google AI | Fallback: GPT-4o | Fallback: Tesseract.js
FCM push | Nodemailer email | HTML şablonlar
SAP RFC+OData | Azure AD | LDAP | SAP HCM | REST API adaptör katmanı
89.167.115.209 | Docker Compose | Nginx reverse proxy
Sunucu tarafı Excel üretimi | .xlsx format | Türkçe karakter desteği
| Bileşen | URL | Platform |
|---|---|---|
| Web Uygulaması | https://app.xpensioapp.com |
Vercel |
| API (Backend) | https://api.xpensioapp.com |
Hetzner VPS + Docker |
| Pazarlama Sitesi | https://xpensioapp.com |
Vercel |
| iOS Uygulaması | App Store — Xpensio (canlı) | Apple App Store |
| Android Uygulaması | Google Play — Xpensio v1.4.1 (canlı) | Google Play Store |
Standard plan için kurulum genellikle 1-3 iş günü içinde tamamlanır. Kullanıcı verileri Excel ile toplu içe aktarılabilir. SAP Enterprise entegrasyonu için ortalama 2-4 hafta öngörülmektedir; bu süre mevcut SAP ortamınızın karmaşıklığına göre değişebilir.
SAP ECC (ERP Central Component) ve SAP S/4HANA her iki sürümde desteklenmektedir. Entegrasyon, SAP RFC ve OData protokolleri üzerinden gerçekleştirilir. Enterprise Plan kapsamında gerekli ABAP geliştirmeleri Xpensio teknik ekibi tarafından sağlanır.
Gemini 2.5 Flash ile %95+ doğruluk oranı elde edilmektedir. Zayıf görüntü kalitesi veya el yazılı fişlerde GPT-4o veya Tesseract.js yedek olarak devreye girer. Kullanıcılar OCR sonuçlarını her zaman düzenleyebilir; okunamayan alanlar manuel doldurulabilir.
Tüm veriler şifrelenmiş bağlantılar üzerinden iletilir (TLS 1.3). Şifreler bcrypt ile hashlenir. Her organizasyonun verileri teknik olarak tam izole tutulur. KVKK uyum çalışmaları devam etmekte olup gizlilik politikası ve çerez bildirimi yakında yayınlanacaktır.
iOS 14+ ve Android 8.0+ sürümlerinde çalışmaktadır. Flutter teknolojisi ile geliştirilen uygulama her iki platformda da native performans sunar. Google Play kapalı test aşamasında, App Store onay sürecindedir.
Xpensio, Excel tabanlı toplu kullanıcı içe aktarma özelliği sunmaktadır. Ad, soyad, e-posta, rol ve grade bilgilerini içeren bir .xlsx dosyası hazırlayarak tek seferinde yüzlerce kullanıcı ekleyebilirsiniz. İçe aktarılan kullanıcılar ilk girişte şifre belirlemek için yönlendirilir.
Evet, tüm planlar için REST API erişimi ve Swagger/OpenAPI dokümantasyonu sağlanmaktadır. Enterprise müşteriler için özel entegrasyon desteği ve dedicated teknik muhatap atanmaktadır. Webhook desteği de mevcuttur.
Abonelik iptali öncesinde tüm masraf verilerinizi Excel veya PDF formatında dışa aktarabilirsiniz. Veri teslim süreci, iptal talebinizden itibaren 30 iş günü içinde tamamlanır. Verileriniz güvenli biçimde silinerek silme belgesi tarafınıza iletilir.
Xpensio sürekli geliştirilmektedir. 2026 ilk yarısında devreye alınan kurumsal düzeydeki yeni özellikler:
Admin tek tıkla bir kullanıcıya N tane masraf yeri (cost center) yetkisi verir. Çalışan kendi RELID'sine kilitli, yöneticiler ise birden fazla maliyet merkezini yönetebilir. SAP CO yetki konseptiyle birebir uyumlu. Yetkisiz CC seçilirse backend 403 ile reddeder.
Aynı satıcıdan tekrarlı fişler, gece yarısı submission'lar, politika dışı tutarlar Gemini AI ile otomatik işaretlenir. Finans ekibi sadece anomali listesini inceler.
SAP'a aktarılan masraf F110 ödeme run'ı ile günlük eşleşir. Ödeme tamamlandığında çalışan mobil/web'de canlı görür — "ödememi ne zaman alırım?" sorusu yok.
Fiş numarası + satıcı VKN çifti zaten girilmişse sistem reddeder. Aynı fişin iki kez kullanılması imkansız — kasıtlı veya kazara.
Admin panelinden GL hesap eşleştirmeleri (/admin/gl-mappings) ve KKEG eşleştirmeleri (/admin/gl-kkeg-mappings) ayrı ekranlardan yönetilir. Excel ile toplu içe aktarma desteklenir.
Her organizasyon kendi şifreli ERP konfigürasyonu, kendi adapter'ı ile çalışır. Multi-tenant izolasyonu tam — bir müşterinin SAP credential'ları başka müşterinin sorgularına yansımaz.
SAP HCM, SuccessFactors, S/4 Cloud, S/4 OnPrem, Azure AD (Entra), LDAP, External DB, Mock, Null. Her kurumun kimlik altyapısına çıplak entegrasyon — özel geliştirme olmadan.
Xpensio platformuna doğal dilde soru sorabilen AI asistan entegre edilmiştir. Kullanıcı "Geçen ay onaylanmamış masraflarım var mı?", "Hepsiburada ile aramızdaki anlaşma kaç kullanıcı için?" gibi soruları yazıp anında yanıt alır.
Tüm Xpensio dokümantasyonu ve kullanım kılavuzları gemini-embedding-001 ile vektörleştirilip pgvector üzerinde indekslidir. Kullanıcının sorusu en yakın 5 chunk ile birlikte Gemini'ye iletilir — yanıtlar her zaman ürün bilgisinden türetilir, hayal ürünü cevap üretmez.
Kullanıcı "geçen ay benim onaylı masraflarım toplamı?" gibi canlı veri istediğinde bot otomatik olarak ilgili Xpensio API'sini çağırır (kullanıcının kendi JWT'si ile, yetki sınırları içinde). RAG bilgisi + canlı veri birleşip yanıtlanır.
(1) Web dashboard'da sağ alt köşedeki sohbet widget'ı, (2) mobile app içinde ayrı tab, (3) xpensioapp.com ana sayfada satış öncesi ürün soru-cevap. Aynı backend API, üç farklı UI.
Kullanıcı kendi org'undan başka org'un verisini soramaz; tool çağrıları orgId filter'ıyla yapılır. Public widget (xpensioapp.com) sadece pazarlama dokümanı kapsamında cevap verir, müşteri verisine erişmez.
SAP_FAILED listesini çeker.Faz B planlaması: Şu an mevcut tools içinde örnek "kullanıcı sayım", "bu ay onaylı masraflar" gibi temel sorgular var. Faz B ile genişletilecek tool grubu: cost center bazlı drilldown, fraud kuyruk özeti, departman bazlı bütçe tüketimi, vb.