E-fatura entegrasyonu üç yöntemden biriyle yapılır: GİB e-Fatura Portalı (ücretsiz, manuel, düşük hacim için), özel entegratör (en yaygın yöntem; abonelik veya kontör ücretiyle çalışır ve size bir API verir) ve doğrudan entegrasyon (GİB onayı gerektiren, yalnızca çok yüksek hacimli kurumlar için mantıklı model). Kendi ön muhasebe, ERP ya da e-ticaret yazılımınızın faturayı otomatik kesmesini istiyorsanız pratikte özel entegratörün API’sini kullanırsınız: entegratör tarafı yıllık birkaç bin TL’den başlar, yazılım tarafındaki geliştirme ise kapsamına göre 2-6 hafta sürer. Aşağıda üç yöntemi, gerçek maliyet kalemlerini, teknik akışı ve projelerin en sık takıldığı noktaları bulacaksınız.
E-fatura entegrasyonu nedir, kimler için zorunlu?
E-Fatura, kâğıt faturanın yerine geçen ve alıcısı da e-Fatura mükellefi olan elektronik belgedir. Alıcı mükellef değilse aynı satış için e-Arşiv Fatura düzenlenir; ikisi teknik olarak farklı senaryolardır ve yazılımınızın bunu her fatura öncesinde ayırt etmesi gerekir. “Entegrasyon” ise bu belgelerin elle bir portala girilmesi yerine, satışın gerçekleştiği sistemden — e-ticaret sitesi, ERP, sipariş yönetimi veya kendi özel yazılımınız — otomatik olarak üretilip GİB’e iletilmesidir. Zorunluluk kapsamı brüt satış hasılatı eşiğine ve sektöre göre GİB tebliğleriyle belirlenir; eşiği aşan mükellefler, takip eden yılın yedinci ayının başında e-Fatura’ya geçmek zorundadır. E-ticaret üzerinden satış yapanlar için eşik çok daha düşüktür. Eşik rakamları her yıl güncellendiği için planlama yaparken güncel tebliği mali müşavirinizle birlikte doğrulayın.
Üç entegrasyon yöntemi ve hangisi size uygun?
Yöntem seçimini belirleyen tek şey aylık fatura adediniz ve faturanın nerede doğduğudur. Fatura sayısı azsa ve satış zaten elle kaydediliyorsa portal yeterlidir; fatura bir yazılımın içinde doğuyorsa entegratör API’si şarttır:
- GİB e-Fatura Portalı — Ücretsiz. Faturayı GİB’in kendi arayüzünden elle girer ya da Excel şablonuyla toplu yüklersiniz. Aylık birkaç düzine faturaya kadar makul; ancak hiçbir yazılımınızla konuşmaz, dolayısıyla operasyon manuel kalır ve fatura adedi arttıkça personel maliyeti gizli gider hâline gelir.
- Özel entegratör — GİB’den izin almış aracı firma (Nilvera, İzibiz, Uyumsoft, Paraşüt, e-Logo, Mikro, Sovos gibi). Mali mühürle imzalama, zarflama, GİB’e iletim, yanıt takibi ve on yıllık arşivleme yükünü üstlenir; karşılığında size bir REST API ve yönetim paneli verir. Şirketlerin büyük çoğunluğu için doğru cevap budur.
- Doğrudan entegrasyon — Kendi sistemlerinizi aracısız biçimde GİB’e bağlarsınız. 7/24 kesintisiz çalışan altyapı, GİB’in teknik testlerinden geçme ve süreçleri kendi ekibinizle sürdürme yükümlülüğü doğar. Yalnızca çok yüksek fatura hacmi ve kendi BT ekibi olan büyük kurumlarda toplam maliyeti düşürür.
Pratikte kararı şöyle verin: ayda 50 faturanın altındaysanız ve fatura elle kesiliyorsa portal; fatura bir yazılımın (e-ticaret, ERP, saha satış) içinde doğuyorsa entegratör API’si; ayda on binlerce fatura kesip kendi sistem ekibinizi çalıştırıyorsanız doğrudan entegrasyon. API entegrasyonunun genel mantığına aşina değilseniz API entegrasyonu nedir yazımız iyi bir başlangıç noktasıdır.
E-fatura entegrasyonu ücreti: hangi kalemleri ödersiniz?
Toplam maliyet iki tarafta doğar: entegratöre ödenen tekrarlayan bedel ve kendi yazılımınızda yapılacak geliştirme. Tipik piyasa bantları şöyledir (sağlayıcıya ve pakete göre değişir, teklifte yenileme fiyatını da sorun):
- GİB Portal: 0 TL. Görünmeyen maliyet, faturaları elle giren personelin zamanıdır — ayda 100 fatura, aylık yarım günlük iş demektir.
- Entegratör aboneliği: yıllık 2.000-15.000 TL bandında. e-Fatura, e-Arşiv, e-İrsaliye, e-Defter ve e-SMM genelde ayrı modüller olarak fiyatlanır; yalnızca kullanacağınız modülleri açtırın.
- Kontör (belge başı ücret): belge başına yaklaşık 0,5-3 TL; toplu alımda birim fiyat düşer. Kontörlerin son kullanma tarihi olabildiği için yıllık fatura adedinizi gerçekçi tahmin edin, iki katını peşin almayın.
- Mali mühür (tüzel kişi) veya nitelikli e-imza (şahıs firması): TÜBİTAK Kamu SM üzerinden ~1.500-3.000 TL, üç yıl geçerli. Başvuru ve kargo süreci tek başına 1-3 hafta alabilir; projeyi bu adımla başlatın.
- Yazılım tarafı geliştirme: e-ticaret sitesi veya basit ön muhasebe için 2-4 hafta; çok şirketli/çok depolu ERP, iade-iptal senaryoları ve e-İrsaliye dâhil edildiğinde 6-12 hafta. Tek seferlik proje bedelidir ve toplamın en büyük kalemidir.
- Bakım: entegratör API sürümleri ve GİB şema güncellemeleri yılda birkaç kez değişir. Yıllık bakım bütçesi ayırmayan şirketler, bir mevzuat değişikliğinde faturalama durduğu için acil müdahale ücreti öder.
Bütçeyi şaşırtan kalem neredeyse hiçbir zaman entegratör ücreti olmaz; kendi tarafınızdaki veri kalitesidir. Müşteri VKN/TCKN alanları eksikse, ürün birimleri (adet/kg/paket) standart değilse veya KDV oranları serbest metin olarak tutuluyorsa faturalar GİB’e giderken reddedilir. Gerçek projelerde ilk haftanın tamamı hemen her zaman veri temizliğiyle geçer — planı buna göre yapın.
Kendi yazılımınıza e-fatura entegrasyonu: teknik akış
Entegratör API’leri ayrıntıda farklılaşsa da akış hemen her sağlayıcıda aynıdır: alıcının mükellefiyet durumunu sorgula, senaryoyu seç, belgeyi UBL-TR formatında oluştur, gönder, ardından durumunu takip et. Kritik nokta, gönderimin senkron bir işlem gibi kurgulanmaması: GİB tarafı yanıtı dakikalar sonra dönebilir, bu yüzden kuyruk ve tekrar deneme mantığı baştan kurulmalıdır.
// 1) Alıcı e-Fatura mükellefi mi? Senaryoyu bu belirler.
// Mükellef listesi her gün değişir: cache'lerseniz günde bir yenileyin.
const { isEInvoiceUser } = await integrator.checkTaxpayer(customer.taxNumber);
const documentType = isEInvoiceUser ? 'EINVOICE' : 'EARCHIVE';
// 2) Belgeyi oluştur (UBL-TR alanları entegratör tarafında üretilir).
const document = {
documentType,
profile: isEInvoiceUser ? 'TICARIFATURA' : 'EARSIVFATURA',
invoiceNumber: null, // numarayı entegratör verir; kendiniz üretmeyin
issueDate: order.paidAt,
customer: {
taxNumber: customer.taxNumber, // VKN (10) veya TCKN (11)
name: customer.legalName,
taxOffice: customer.taxOffice,
address: customer.billingAddress,
},
lines: order.items.map((item) => ({
name: item.title,
quantity: item.quantity,
unitCode: item.unitCode, // 'C62' (adet), 'KGM' (kg) — serbest metin olmaz
unitPrice: item.netPrice,
vatRate: item.vatRate, // 0 | 1 | 10 | 20
})),
};
// 3) Gönder — idempotency anahtarı olmadan retry çift fatura üretir.
const { uuid } = await integrator.send(document, {
idempotencyKey: `order-${order.id}`,
});
// 4) Durumu webhook ile takip et; senkron bekleme yapmayın.
// GİB yanıtı 'SUCCEED' | 'REJECTED' | 'WAITING' olarak döner.
await invoiceRepository.save({ orderId: order.id, uuid, status: 'WAITING' });Bu akış, faturanın doğduğu her sistemde aynıdır: e-ticaret altyapısı, saha satış uygulaması ya da şirket içi yönetim paneli. Faturalamayı zaten bir ERP üzerinden yönetiyorsanız entegrasyonun ERP tarafına kurulması gerekir — hangi verinin nerede tutulacağı sorusuna ERP nedir yazımızda değindik. Faturalama, stok ve sipariş süreçlerini tek bir akışta birleştiren şirket içi çözümler için şirket içi otomasyon yazılımı yazımıza da bakabilirsiniz.
Projelerde en sık yapılan altı hata
- Mükellefiyet sorgusunu atlamak: e-Fatura mükellefi olan bir alıcıya e-Arşiv fatura kesmek belgeyi geçersiz kılar. Sorguyu her fatura öncesinde yapın; listeyi haftalarca önbellekte tutmayın.
- İade ve iptal akışını sonraya bırakmak: e-Arşiv faturada iptal, düzenleme tarihini izleyen sekiz gün içinde GİB’in iptal/itiraz portalına bildirilir; e-Faturada ticari senaryoda alıcı sekiz gün içinde red yanıtı gönderebilir, temel senaryoda ise iade faturası gerekir. Yazılım bunu modellemezse yük muhasebeye elle biner.
- Idempotency (tekrar koruması) kurmamak: ağ hatasında yapılan otomatik tekrar, aynı siparişe iki fatura keser. Her belge için sipariş bazlı bir anahtar üretin.
- Test ortamını atlamak: her entegratörün test ortamı vardır. İade, kısmi iade, farklı KDV oranı, yabancı müşteri ve iskonto senaryoları canlıya çıkmadan uçtan uca koşulmalıdır.
- Arşivi tamamen entegratöre bırakmak: yasal saklama süresi on yıldır ve sözleşme bittiğinde belgelere erişim sorun olabilir. Belgelerin kopyasını kendi sisteminizde de tutun.
- Kesinti senaryosunu planlamamak: GİB veya entegratör tarafı yanıt vermediğinde kuyruk yoksa sipariş akışı durur. Faturalama, satışı bloke etmeyecek biçimde asenkron kurgulanmalıdır.
Proje ne kadar sürer?
Tipik bir e-ticaret ya da ön muhasebe entegrasyonunda takvim şöyle işler: mali mühür başvurusu ve entegratör sözleşmesi 1-3 hafta (paralel yürür), veri temizliği ve alan eşleme 1 hafta, API geliştirmesi ve test ortamı senaryoları 1-2 hafta, canlı geçiş ve ilk hafta gözetimi 1 hafta. Toplamda 3-6 hafta gerçekçi bir aralıktır. Süreyi uzatan şey neredeyse her zaman yazılım değil, üçüncü taraf onaylarıdır — mali mühür kargosu, entegratör hesabının açılması ve GİB tarafındaki tanımlamalar. Bu yüzden proje planına ilk gün başlanacak iş olarak mühür başvurusunu yazın.
Sonuç
E-fatura entegrasyonunda doğru soru “hangi entegratör” değil, “fatura nerede doğuyor” sorusudur. Fatura elle kesiliyorsa GİB portalı ücretsiz ve yeterlidir; fatura bir yazılımın içinde doğuyorsa entegratör API’sine bağlanmak hem hata oranını hem de personel maliyetini kalıcı olarak düşürür. Bütçenin büyük kısmı entegratör aboneliğinde değil, kendi yazılımınızdaki geliştirmede ve veri temizliğindedir; bunu baştan kabul eden projeler 3-6 haftada, ertelenen projeler aylarca sürüyor. Mevcut sisteminizi e-faturaya bağlamak ya da faturalamayı içinde barındıran bir çözüm kurdurmak istiyorsanız özel yazılım hizmetimizi inceleyebilir, kurum genelinde bir yapı planlıyorsanız kurumsal çözümler sayfamıza göz atabilir ya da mevcut sisteminizi ve aylık fatura adedinizi iletip ücretsiz teklif alabilirsiniz.