Kurumsal E-Fatura Operasyonlarında Sıfır Kayıp ve Yüksek Performanslı Veri Hattı
E-fatura ve e-arşiv fatura süreçleri, dijitalleşen işletmelerin en kritik yasal operasyonudur. Günde binlerce e-fatura düzenleyen e-ticaret, toptan dağıtım veya imalat firmalarında fatura aktarımının 1 saat bile durması; sevkiyatların kapıda beklemesine, tırların yola çıkamamasına ve müşteri memnuniyetsizliğine yol açar.
Piyasadaki birçok entegratörün sağladığı hantal masaüstü aktarım uygulamaları, Windows servislerinde askıda kalır, ağ kesintilerinde aynı faturayı mükerrer oluşturur veya ERP'de onaylanan faturayı GİB'e iletemez. Şirket içi yazılım ekipleri ise sürekli değişen UBL-TR XML şemaları ve karmaşık SOAP/REST entegrasyon servisleri arasında boğulur.
E-fatura veri aktarım yazılımı firması arayışında olan kurumlar için Appsoni; ERP sisteminizle (SAP, Logo Tiger, Mikro, Canias) özel entegratör servisleri (Sovos/Foriba, Logo Connect, EDM, Uyumsoft) arasında yüksek verimli, hataya dayanıklı (fault-tolerant) ve kuyruk tabanlı veri aktarım platformları geliştirir.

E-Fatura Veri Aktarım ve Doğrulama Mimarisi
Uçtan uca kurduğumuz e-fatura aktarım hattı mikroservis mimarisiyle çalışır:
[ERP Sistemi] (Logo / Mikro / SAP B1 / Özel SQL Veritabanı)
│
▼ (Trigger / Change Data Capture / REST API)
[Giden Fatura Veri Hazırlama & XML Derleme Motoru]
├─ UBL-TR 2.1 XML Dokümanı Üretimi
├─ Yerel XSD & Schematron Kural Doğrulama (SCH-TR Validasyonu)
└─ Yerel Mali Mühür / E-İmza Damgalama (HSM / Token Desteği)
│
▼
[Kurumsal Mesaj Kuyruğu & Dağıtık İşleyici (RabbitMQ / Kafka)]
├─ Kuyruk: q_efatura_outbound (İşleme Hızı: 5.000 msg/dk)
├─ Dead Letter Queue (DLQ): q_efatura_retry (Exponential Backoff)
└─ Şifreleme: TLS 1.3 mTLS Güvenli İletişim Tüneli
│
▼
[Entegratör SOAP / REST İletişim Katmanı]
├─ Servis Çağrısı: SendDocument (Sovos, Logo, EDM, Uyumsoft)
├─ GİB Zarf Durum Takibi: 1200 (Zarf Gönderildi) -> 1220 (İşlendi)
└─ GİB Yanıt Kodları Analizi (1300 Başarılı / 1210-1230 Hata Ayrıştırma)
│
▼
[Çift Yönlü ERP Durum Eşitleme ve Bildirim Servisi]
├─ ERP'de Fatura Statüsünü Güncelleme (Fatura Kilitlendi / İletildi)
├─ 7 Günlük Ticari Fatura Kabul/Red Bildirimlerinin Alınması
└─ Kritik Hata Durumlarında BT & Finans Telegram/Slack Alarmları
Veri Şeması ve Teknik Alanlar (50+ Benzersiz Veri Noktası)
Kurumsal e-fatura aktarım motorumuzun temel tablo yapısı, telemetri alanları ve süreç değişkenleri:
| Tablo Adı |
Teknik Alan Adı |
Veri Tipi |
Mevzuat ve Süreç Kuralı Açıklaması |
efatura_zarf |
zarf_id_guid |
UUID |
GİB'e iletilen 36 karakterlik tekil zarf ETTN kimliği |
efatura_zarf |
gonderici_vkn |
VARCHAR(11) |
Faturayı kesen firmanın 10 haneli VKN veya 11 haneli TCKN'si |
efatura_zarf |
alici_vkn |
VARCHAR(11) |
Muhatap firmanın vergi kimlik numarası |
efatura_zarf |
zarf_tipi_kod |
VARCHAR(15) |
'SENDERENVELOPE', 'POSTBOXENVELOPE', 'SYSTEMENVELOPE' |
efatura_zarf |
zarf_olusturma_ts |
TIMESTAMP |
Zarfın oluşturulduğu mikrosaniye hassasiyetli zaman |
efatura_zarf |
zarf_durum_kodu |
INT |
GİB Durum Kodu: 1200, 1215, 1220, 1230, 1300 |
efatura_zarf |
zarf_durum_aciklama |
VARCHAR(255) |
GİB resmi durum açıklaması (ör. 'Doküman başarıyla işlendi') |
efatura_dokuman |
ettn_fatura_guid |
UUID |
Faturanın evrensel tekil numarası (ETTN) |
efatura_dokuman |
fatura_seri_sira_no |
VARCHAR(16) |
3 harf seri + 13 rakam sıra numarası (ör. 'APP2026000002148') |
efatura_dokuman |
senaryo_turu |
VARCHAR(20) |
'TICARIFATURA', 'TEMELFATURA', 'IHRACAT', 'KAMU', 'EARSIV' |
efatura_dokuman |
fatura_tip_kodu |
VARCHAR(20) |
'SATIS', 'IADE', 'TEVKIFAT', 'ISTISNA', 'OZELMATRAH' |
efatura_dokuman |
fatura_duzenleme_tarihi |
DATE |
Faturanın resmi düzenlenme tarihi |
efatura_dokuman |
fatura_duzenleme_saati |
TIME |
Faturanın resmi düzenlenme saati |
efatura_dokuman |
para_birimi_iso |
VARCHAR(3) |
'TRY', 'USD', 'EUR', 'GBP' |
efatura_dokuman |
doviz_kuru_tcmb |
DECIMAL(12,4) |
Faturada uygulanan döviz çevrim kuru |
efatura_dokuman |
toplam_odenecek_tutar |
DECIMAL(18,2) |
KDV ve tevkifat dahil ödenecek toplam tutar |
efatura_dokuman |
ubl_xml_hash_sha256 |
VARCHAR(64) |
İmzalı XML dosyasının bozulmadığını kanıtlayan hash |
efatura_dokuman |
xml_dosya_boyutu_kb |
DECIMAL(8,2) |
UBL-TR XML dosyasının kilobayt cinsinden boyutu |
sematron_denetim |
kural_id |
VARCHAR(30) |
GİB Schematron kural kodu (ör. 'SCH-TR-001', 'SCH-TR-014') |
sematron_denetim |
kural_kategori |
VARCHAR(25) |
'VERGI_HESAPLAMA', 'VKN_KONTROL', 'TEVKIFAT_UYUM', 'ZORUNLU_ALAN' |
sematron_denetim |
dogrulama_durumu |
BOOLEAN |
Kural denetiminden başarıyla geçti mi? |
sematron_denetim |
hata_detay_mesaji |
VARCHAR(255) |
Kural ihlal edildiğinde dönen teknik hata açıklaması |
kuyruk_yonetimi |
mesaj_id_guid |
UUID |
Kuyruktaki paketin tekil kimliği |
kuyruk_yonetimi |
hedef_entegrator |
VARCHAR(20) |
'SOVOS', 'LOGO_CONNECT', 'EDM', 'UYUMSOFT', 'KOLAYBI' |
kuyruk_yonetimi |
kuyruk_oncelik_seviyesi |
INT |
1 (Acil İhracat/Sevkiyat) - 5 (Normal E-Arşiv) |
kuyruk_yonetimi |
deneme_sayaci |
INT |
Başarısızlık halinde yapılan tekrar sayısı (Maks: 5) |
kuyruk_yonetimi |
son_tekrar_zamani |
TIMESTAMP |
Son aktarım deneme zamanı |
kuyruk_yonetimi |
sonraki_deneme_zamani |
TIMESTAMP |
Exponential backoff ile hesaplanan bir sonraki deneme |
kuyruk_yonetimi |
kuyrukta_kalma_suresi_ms |
INT |
Mesajın kuyruğa girmesi ile çıkışı arasındaki milisaniye |
erp_senkron |
erp_fatura_referans_id |
VARCHAR(50) |
ERP'deki dahili hareket numarası (ör. Logo LOGICALREF) |
erp_senkron |
erp_aktarim_yonu |
VARCHAR(10) |
'OUTBOUND' (ERP -> Entegratör) / 'INBOUND' (Entegratör -> ERP) |
erp_senkron |
erp_guncelleme_durumu |
VARCHAR(20) |
'BEKLIYOR', 'ISLENDI', 'ERP_KILITLENDI', 'HATA_ALDI' |
erp_senkron |
erp_yanit_suresi_ms |
INT |
ERP veritabanı veya nesne katmanının yanıt süresi |
ticari_onay_takip |
ticari_yanit_kodu |
VARCHAR(15) |
'KABUL', 'RED', 'IADE_TALEBI', 'SURE_ASIMI' |
ticari_onay_takip |
itiraz_yasal_son_tarih |
DATE |
Tebliğ tarihinden itibaren 8. iş günü sonu |
ticari_onay_takip |
itiraz_aciklama_metni |
VARCHAR(255) |
Müşterinin faturayı reddetme resmi gerekçesi |
guvenlik_audit |
istemci_ip_adresi |
VARCHAR(45) |
SOAP/REST çağrısını yapan sistemin IP adresi |
guvenlik_audit |
tls_protokol_versiyonu |
VARCHAR(10) |
'TLSv1.3', 'TLSv1.2' |
guvenlik_audit |
imza_dogrulama_sonucu |
BOOLEAN |
Mali mühür sertifikasının geçerlilik teyidi |
guvenlik_audit |
hsm_anahtar_etiketi |
VARCHAR(50) |
Donanımsal imzalama modülü anahtar referansı |
Entegratör API Protokolleri ve SOAP/REST Entegrasyonu
Geliştirdiğimiz yazılım mimarisi, Türkiye'nin önde gelen özel entegratörleriyle native seviyede konuşur:
1. Sovos (Foriba) / Logo Connect SOAP Servisleri
- WSDL Uç Noktaları:
ClientEInvoiceServices?wsdl, ClientEArchiveServices?wsdl
- Çağrılan Metotlar:
sendDocument(envelopeXml, hash): Zarf ve fatura gönderimi
getDocumentList(startDate, endDate): Gelen faturaların sorgulanması
getApplicationResponse(ettn): Ticari fatura kabul/ret yanıtı dönme
- Yetkilendirme: WS-Security (WSS) UsernameToken ve SSL Client Certificate.
2. Gelir İdaresi Başkanlığı Durum Kodları Ayrıştırması
Aktarım motorumuz GİB durum kodlarını otomatik sınıflandırır:
- 1200: Zarf başarıyla kuyruğa alındı (Bekleme).
- 1215: Doküman GİB sistemine ulaştı, şematron denetimi sürüyor.
- 1220: Belge başarıyla alıcı posta kutusuna iletildi (Kesin onay).
- 1210 / 1230: Şematron hatası veya imza geçersizliği (Kritik alarm - Anında müdahale).
- 1300: Doküman başarıyla tamamlandı.
3. Kafka / RabbitMQ Olay Mesajı Şablonu
{
"event_type": "einvoice.inbound.processed",
"event_id": "8fa1e57c-9b34-4b52-a7f1-7c9802c61234",
"timestamp": "2026-10-24T02:20:15.000Z",
"payload": {
"ettn": "f81d4fae-7dec-11d0-a765-00a0c91e6bf6",
"fatura_no": "ABC2026000009841",
"gonderici_vkn": "1234567890",
"alici_vkn": "9876543210",
"senaryo": "TICARIFATURA",
"tutar": 458900.50,
"para_birimi": "TRY",
"sematron_kontrol": "PASSED",
"erp_hedef": "LOGO_TIGER_3",
"erp_aktarim_suresi_ms": 142
}
}
Süreç Kısıtları, SLA ve Hata Yönetimi
Performans ve SLA Eşikleri:
- Maksimum Aktarım Gecikmesi: ERP'de onaylanan fatura en geç 3 saniye içinde kuyruğa girer ve entegratöre iletilir.
- Şematron Doğrulama Süresi: 100 kalemlik bir faturanın yerel kurallardan geçirilmesi < 150 ms sürer.
- Ticari Fatura İtiraz Takibi: Ticari senaryodaki faturaların 7 günlük yasal yanıt süresi her gün saat 09:00'da kontrol edilerek yanıt vermeyen müşteriler için otomatik uyarı açılır.
Rol Bazlı Sorumluluklar:
- Entegrasyon Mühendisi: Entegratör API anahtarları, SSL sertifikaları ve kuyruk limitlerini yönetir.
- Muhasebe Yetkilisi: Hatalı veya GİB'den dönen faturaların düzeltme sürecini koordine eder.
- Mali İşler Direktörü: Fatura iptal ve iade süreçlerinin yasal sirküler onaylarını verir.
İstisna Yönetimi ve Ağ Kesintisi Fallback:
- Özel entegratör servislerinde planlı bakım veya kesinti olduğunda giden faturalar yerel diske şifreli olarak yedeklenir (
local_buffer_storage).
- Servis geri geldiğinde kuyruk 'Rate-Limiting' korumasıyla devreye girer; entegratör API'sini 'Too Many Requests (429)' hatasına düşürmeden saniyede kontrollü paketler halinde aktarımı tamamlar.