Man working on a laptop analyzing business data and financial graphs indoors.
SAP

Sakarya’da otomotiv yan sanayi (vites kolu, fren parçası) üreten 165 çalışanlı bir firma, SAP Business One 10 PL03 üzerinde çalışıyor, ancak e-Fatura için ayrı bir portal kullanıyordu. Çift veri girişi, mutabakat hataları, GİB cezası riski. 5 ayda tüm e-Dönüşüm modülleri SAP B1 entegre edildi. Bu yazı projenin teknik notlarını paylaşıyor.

Türkiye e-Dönüşüm Zorunlulukları

Belge Zorunluluk eşiği (örnek) Format
e-Fatura Brüt satış 3M TL üzeri (artıyor) UBL-TR XML
e-Arşiv Fatura e-Fatura mükellefi olmayanlara kesilen UBL-TR XML
e-İrsaliye Belirli ciro + sektör UBL-TR XML
e-Defter e-Fatura mükellefleri XBRL-GL XML
e-Müstahsil Makbuzu Tarımsal alımlar UBL-TR XML

Firma 4 modülü birden geçirdi (e-Defter HQ muhasebe yapıyor zaten).

Mimari: SAP B1 + Özel Entegratör

[SAP B1] → AddOn → [Entegratör API REST/SOAP] → [GİB]
                      ↓
                 [Mutabakat ekranı]
                      ↓
                 [Gönderim/Kabul/Red durumu]

Özel entegratör seçildi (in-house GİB direkt bağlantı yerine). Sebep: küçük firma için dedicated GİB sertifikası ve kapasitesi gereksiz; entegratör SLA + UI veriyor.

Entegratör Karşılaştırması

Kriter Entegratör A Entegratör B Entegratör C
Aylık fatura ücreti (binde) ~~25 TL/1000 ~~32 TL/1000 ~~22 TL/1000
SAP B1 native AddOn Var (önerilen) API only API only
Mutabakat ekranı Web Yok Web + mobile
e-Defter desteği Var Var Var
SLA uptime %99.9 %99.5 %99.7
Destek (TR mesai içi) İyi Orta İyi

Entegratör A seçildi (native AddOn, mutabakat ekranı için).

SAP B1 Tarafında Konfigürasyon

BP (Business Partner) Master Data

-- e-Fatura mükellefi sorgu (entegratör API'den senkron)
UPDATE OCRD
SET U_GIB_eFatura = 'Y',
    U_PostaKutusu = 'urn:mail:defaultpk@example.com.tr',
    U_VKN_TCKN = '1234567890'
WHERE CardCode = 'C00248';

Item Master: GTIP Kodu, Brand

Otomotiv parçaları için GTIP kodu zorunlu (e-İrsaliye için):

UPDATE OITM
SET U_GTIP = '8708.30.91.00.00',  -- Fren tertibatı
    U_BrandName = 'XYZ Brand'
WHERE ItemCode = 'PRD-FRK-450';

UDF (User Defined Field) Eklenenler

  • e-Belge UUID
  • GİB durumu (Beklemede / Kabul / Red / Hata)
  • Gönderim zamanı
  • Kabul/Red zamanı
  • Senaryo (TICARI / TEMEL / EARSIVFATURA)

UBL-TR XML Örneği

<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
         xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
         xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
  <cbc:ProfileID>TICARIFATURA</cbc:ProfileID>
  <cbc:ID>ABC2026000001234</cbc:ID>
  <cbc:UUID>f81d4fae-7dec-11d0-a765-00a0c91e6bf6</cbc:UUID>
  <cbc:IssueDate>2026-04-25</cbc:IssueDate>
  <cbc:InvoiceTypeCode>SATIS</cbc:InvoiceTypeCode>
  <cac:AccountingSupplierParty>
    <cac:Party>
      <cbc:WebsiteURI>www.firma.com.tr</cbc:WebsiteURI>
      <cac:PartyIdentification>
        <cbc:ID schemeID="VKN">1234567890</cbc:ID>
      </cac:PartyIdentification>
      ...
    </cac:Party>
  </cac:AccountingSupplierParty>
  ...
</Invoice>

Gönderim Akışı (SAP B1 → Entegratör → GİB)

  1. SAP B1’de fatura kaydedilir (status: Onaylanmış)
  2. AddOn UBL-TR XML üretir, entegratör API’ye gönderir
  3. Entegratör imzalar (Mali Mühür) ve GİB’e gönderir
  4. GİB UUID + ETTN üretir, response döner
  5. SAP B1 UDF’lerine durum kaydedilir
  6. Alıcı kabul/red ederse webhook ile durum güncellenir

Gelen Faturaların İşlenmesi

// Webhook handler (entegratörden gelen)
[HttpPost("inbound-invoice")]
public async Task<IActionResult> Receive(InboundInvoice payload)
{
    // 1. UBL XML parse
    var invoice = UblParser.Parse(payload.Xml);
    
    // 2. SAP B1'de eşleşen sipariş ara
    var po = await _b1.GetPOByVendorAndAmount(invoice.SupplierVKN, invoice.Total);
    
    // 3. AP Invoice oluştur (3-way match)
    if (po != null && po.Items.Match(invoice.Items))
    {
        await _b1.CreateAPInvoiceFromXml(invoice, po.DocEntry);
        await _entegrator.AcceptInvoice(invoice.UUID);
    }
    else
    {
        // Manuel inceleme kuyruğu
        await _queue.EnqueueForReview(invoice);
    }
    
    return Ok();
}

e-Defter Aylık Süreç

  1. Ay sonu: SAP B1’den XBRL-GL formatında defter export
  2. Entegratör imzalar (Mali Mühür)
  3. GİB’e yüklenir, berat alınır
  4. Berat e-Defter sistemine geri kaydedilir
  5. Süre: ay sonundan sonraki ayın sonuna kadar (Yevmiye + Kebir)

Sonuçlar

Metrik Önce Sonra
Çift veri girişi (SAP + portal) ~~22 saat/ay 0
Hatalı fatura (SAP-portal eşleşmeme) ~~14/ay ~~1/ay
Gelen fatura işleme süresi ~~8 dk/fatura ~~45 saniye (otomatik 3-way match)
Mutabakat (ay kapanış) 3-4 gün 0.5 gün
GİB ceza riski Yüksek Düşük

Sahada Düşülen Üç Tuzak

  1. BP master data temizliği yapmadan başlamak: VKN/TCKN hataları, posta kutusu eksikleri faturayı reddedilir. Önce BP cleanup, sonra entegrasyon.
  2. e-İrsaliye için GTIP eksik: Otomotiv + tekstil + gıda gibi sektörlerde GTIP zorunlu. Item master’da eksiklik = irsaliye reddi.
  3. Test ortamı testlerini atlamak: Entegratörlerin test ortamı (preprod) GİB simülatörüne bağlı. Production’a geçmeden 100+ test fatura mutlaka.

CloudSpark olarak SAP Business One e-Dönüşüm projelerinde entegratör seçimi, AddOn deployment, BP master data temizliği, gelen-giden fatura akışı ve e-Defter süreçleri için danışmanlık veriyoruz.

🇹🇷 Türkçe🇬🇧 English🇩🇪 Deutsch🇫🇷 Français🇸🇦 العربية🇷🇺 Русский🇪🇸 Español