E-İhracat faturası keserken GTİP kodlarını girdikten sonra imzalama aşamasında mali mühür "Encoding error: UTF-8 BOM" hatası döndürüyor, fatura XML'inde Türkçe karakter sorunu mu var?
2 Cevap
Yaşadığınız sorun kesinlikle Türkçe karakterlerden (ç, ğ, ı, ö, ş, ü) kaynaklanmamaktadır. Hata mesajında yer alan "UTF-8 BOM" ifadesi, doğrudan XML dosyasının başına eklenen görünmez 3 baytlık bayt sırası işaretinden (Byte Order Mark - EF BB BF) kaynaklanan teknik bir dosya kodlama uyuşmazlığıdır.
Gelir İdaresi Başkanlığı'nın (GİB) UBL-TR standartlarına göre, tüm e-belge XML dosyaları kesinlikle BOM içermeyen UTF-8 (UTF-8 without BOM) formatında kodlanmak zorundadır. Dijital imzalama kütüphaneleri (Kamu SM AKİS veya Java XML-DSig motorları), XML belgesini kanonikleştirirken (Canonicalization - C14N) dosyanın ilk karakterinin standart XML prologu (<?xml...) olmasını bekler. Dosyanın başında gizli bir BOM imzası olduğunda, imzalama motoru bunu geçersiz/bozuk karakter olarak algılar ve imzalama işlemini güvenlik gerekçesiyle durdurarak bu hatayı fırlatır.
Bu durum genellikle şu iki senaryoda meydana gelir:
- Excel'den Kopyala-Yapıştır: GTİP kodlarını veya ürün listesini Excel veya Windows Not Defteri'nden ERP yazılımınıza yapıştırırken gizli kontrol karakterleri veya BOM formatı metin alanına taşınmış olabilir.
- ERP / Entegratör Yazılım Hatası: Kullandığınız ERP yazılımı e-ihracat XML'ini oluştururken dosyayı UTF-8 BOM'lu olarak kaydetmektedir.
Çözüm Yolları:
- Eğer faturayı ERP üzerinden kesiyorsanız, ERP firmanızın teknik destek birimiyle görüşerek e-ihracat modülünün XML üretim fonksiyonunun 'UTF-8 Without BOM' standardına güncellenmesini talep edin.
- Eğer faturayı XML olarak dışarı aktarıp manuel veya portal üzerinden imzalıyorsanız; XML dosyasını Notepad++ veya gelişmiş bir kod editörüyle açın. Üst menüden
Kodlama (Encoding)sekmesine tıklayın veUTF-8'e Dönüştür (BOM olmadan)seçeneğini işaretleyip dosyayı kaydedin. Ardından mali mühür ile tekrar imzalayın.
Bu hatanın Türkçe karakterlerle bir ilgisi yoktur; fatura XML dosyasının en başında Windows'un eklediği 3 baytlık gizli BOM (Byte Order Mark) karakteri bulunmaktadır. XML dosyasını Notepad++ gibi bir editörle açıp menüden 'UTF-8'e Dönüştür (BOM olmadan)' seçeneğiyle kaydedip tekrar imzalarsanız sorun çözülecektir. Sürekli tekrarlıyorsa muhasebe programınızın XML dışa aktarma modülü için güncelleme almanız gerekir.