e-Fatura

Referans

Teknik Referans

Enum değerleri, hata/mesaj kodları, alan kuralları ve sözleşme bakım notları.

Enumlar

Bu rehber, EARSIVFATURA dışında desteklenen 10 e-Fatura profilini kapsar. InvoiceTypeCode değerleri profile göre sınırlandırılır; geçerli değer kümesi ve profile özgü koşullar için güncel GİB teknik kılavuzu esas alınır.

InvoiceProfile (değer)GİB koduRehber kapsamında mı?
TemelFatura (1)TEMELFATURAEvet
TicariFatura (2)TICARIFATURAEvet
YolcuBeraberFatura (3)YOLCUBERABERFATURAEvet
Ihracat (4)IHRACATEvet
EarsivFatura (5)EARSIVFATURAHayır — ayrı e-Arşiv Fatura rehberinde
Kamu (6)KAMUEvet
HalKayitSistemi (7)HKSEvet
YatirimTesvik (10)YATIRIMTESVIKEvet
Idis (11)IDISEvet
IlacTibbiCihaz (15)ILAC_TIBBICIHAZEvet
Enerji (99)ENERJIEvet

InvoiceTypeCode (tam liste — 21 değer, hepsi ortak enum üzerinden tüm profillerde paylaşılır):

InvoiceTypeCodeGİB kodu
SatisSATIS
IadeIADE
TevkifatTEVKIFAT
IstisnaISTISNA
OzelMatrahOZELMATRAH
IhracKayitliIHRACKAYITLI
SgkSGK
KomisyoncuKOMISYONCU
HksSatisHKSSATIS
HksKomisyoncuHKSKOMISYONCU
TevkifatIadeTEVKIFATIADE
KonaklamaVergisiKONAKLAMAVERGISI
IlacTibbiCihazILAC_TIBBICIHAZ
YtbSatisYTBSATIS
YtbIadeYTBIADE
YtbIstisnaYTBISTISNA
YtbTevkifatYTBTEVKIFAT
YtbTevkifatIadeYTBTEVKIFATIADE
SarjSARJ
SarjAnlikSARJANLIK
TeknolojiDestekTEKNOLOJIDESTEK
Dikkat — TeknolojiDestek bu rehberin profillerinde geçersizdir: InvoiceTypeCode=TEKNOLOJIDESTEK gönderildiğinde ProfileID'nin yalnızca EARSIVFATURA olmasına izin verilir. Bu rehberin kapsadığı 10 profilden hiçbiriyle birlikte gönderilemez.

Belge Durum Kodları

Durum yanıtları iki alanı birlikte taşır: ayrıntılı teknik süreç durumu ve kullanıcıya gösterilmeye uygun özet durum. Entegratör otomasyon kararını teknik alanla, kullanıcı mesajını ise *StatusForUser alanıyla vermelidir; ekranda teknik enum adı gösterilmemelidir. Bu bölüm enum sözlüğüdür; durumların hangi sırayla ilerlediği Giden Fatura Akışı ve Gelen Fatura Akışı sayfalarında gösterilir.

Giden Fatura Teknik Durumları

DeğerKodDışarıdan gözlenebilir anlamEntegratör aksiyonu
InvoiceAndXmlCreated20Fatura ve UBL oluşturuldu.ETTN'yi saklayın; gönderim otomatik değilse gönderim işlemini başlatın.
Signed30Belge imzalandı ve gönderime hazır.Durum sorgulamaya devam edin.
WaitingForSendingToGib35GİB'e gönderim sırasına alındı.Yeni belge oluşturmayın veya aynı ETTN'yi tekrar göndermeyin.
CouldNotSentToGib45GİB'e gönderim tamamlanamadı.Hata detayını ve yeniden gönderim politikasını değerlendirin.
SentToGib50GİB'e gönderildi; sistem yanıtı bekleniyor.Bekleyin ve aynı ETTN ile sorgulayın.
GibFailed55GİB faturayı hata ile sonuçlandırdı.GİB hata bilgisini inceleyin; yeni işlemden önce nedeni düzeltin.
GibReceived60GİB belgeyi aldı ve alıcıya iletiyor.Nihai teslim veya alıcı yanıtını bekleyin.
GibCouldNotSendToParty65GİB belgeyi alıcıya ulaştıramadı.Durumu izleyin; otomatik tekrar sürerken yeni fatura üretmeyin.
SentToParty75Belge alıcıya iletildi; gerekiyorsa yanıt bekleniyor.Profilin tek veya iki taraflı akışına göre sonucu izleyin.
PartyReturnedError80Alıcı sistem hata yanıtı verdi.Yanıt ayrıntısını inceleyin ve iş sürecini hata olarak kapatın.
PartyReceivedAndWaitingForApproval85Alıcı kabul veya red kararı verecek.Uygulama yanıtı gelene kadar sorgulamayı sürdürün.
Rejected90Fatura reddedildi.Red açıklamasını işleyin; aynı belgeyi tekrar göndermeyin.
Approved95Fatura onaylandı.İş akışını başarılı ve nihai olarak kapatın.
Cancelled100GİB Portal iptali platforma yansıdı.Yerel durumu iptal olarak güncelleyin.
Objected105Fatura için itiraz kaydı bulundu.Yerel itiraz sürecini ve belge ilişkisini saklayın.

Gelen Fatura Kullanıcı Durumları

DeğerKodAnlamBeklenen davranış
ApproveOrRejectNotStarted3Onay/red süreci henüz başlamadı.Profilin yanıt gerektirip gerektirmediğini belirleyin.
WaitingForApproveOrReject5Kullanıcı veya ERP kararı bekleniyor.Gerekli profilde kabul/red çağrısı yapın.
Approving6Kabul yanıtı işleniyor.İkinci kez yanıt göndermeden sonucu izleyin.
Rejecting7Red yanıtı işleniyor.İkinci kez yanıt göndermeden sonucu izleyin.
ApproveOrRejectSentWithError11Uygulama yanıtı hata ile sonuçlandı.Hata ayrıntısını değerlendirin; kör tekrar yapmayın.
Approved12Kabul işlemi tamamlandı.ERP iş sürecini başarılı kapatın.
Rejected13Red işlemi tamamlandı.Red nedenini ve belge durumunu saklayın.
Cancelled14GİB Portal iptali yansıdı.Yerel faturayı iptal durumuna alın.
Objected15İtiraz kaydı yansıdı.İtiraz belgesi ve tarihini yerel kayıtla ilişkilendirin.
Polling kuralı: Bekleyen veya işlemde olan durumlarda aynı ETTN ile durum sorgulanır. Zaman aşımı, ağ hatası veya belirsiz HTTP sonucu yeni fatura oluşturma gerekçesi değildir; önce mevcut ETTN'nin platformdaki sonucu sorgulanmalıdır.

Hata ve Mesaj Kodları

Hata davranışları üç grupta ele alınır: senaryo kurallarında ortak SCHEME kodu, genel belge kurallarında paylaşımlı kodlar ve belirli alanlara ait özel kodlar. Entegratör, işlem sonucunda dönen ErrorCode ile ErrorMessage alanlarını birlikte değerlendirmelidir.

Üç ayrı hata kodu katmanı: Bu modülde dönen ErrorCode alanı üç farklı kaynaktan gelir.
  • Katman A — literal "SCHEME": Profil/tip uyumluluğu, HKS, İDİS, YTB, İhracat, Kamu, iade ve tevkifat kurallarının büyük kısmı ErrorCode="SCHEME" döner — hepsi aynı kodu taşır, ayrım yalnızca ErrorMessage metnindedir. Bu kurallar için programatik switch/case yapılamaz.
  • Katman B — genel SCM00xx/DOC00xx kodları: Para birimi, vergi tipi, istisna kodu gibi GİB kod listesi kontrollerinde ve kardinalite hatalarında kullanılan paylaşımlı kodlardır; tek bir kod birden fazla farklı alanı kapsayabilir.
  • Katman C — gerçek, alana özel kodlar: INVxxxx/COMxxxx/SGKxxxx öneki taşıyan, her biri tek bir kurala karşılık gelen kodlardır.

Katman C — Alana Özel Kodlar (bu rehberin 10 profiline uygulanan alt küme)

Aşağıdaki tablo yalnızca bu rehberin profillerinde dönebilen alan özel hata kodlarını listeler. InternetPayment ve ÖKC (OKCBF) ile ilgili INV0036INV0043, INV0168, INV0263, INV0221 ve PTY0003 kodları e-Arşiv Fatura kapsamındadır; ayrıntıları e-Arşiv Fatura rehberinin teknik referansında yer alır.

KodMesaj (birebir)Koşul
INV0220Alıcı bilgisindeki VKN GİB e-Fatura mükelleflerinde kayıtlı değildir!Bu rehberdeki profillerden biri gönderilmiş ancak alıcı GİB e-Fatura kullanıcı listesinde bulunamamıştır.
INV0229Alıcı fatura tarihinden sonraki saatlerde/günlerde e-fatura mükellefi olmuştur!Alıcının e-Fatura mükellefiyet başlangıcı, faturanın düzenleme tarihinden sonradır.
COM0030Alıcı için gönderilen etiket bilgisi ilgili mükellef için mevcut değildir!ReceiverIdentifier ile gönderilen etiket alıcıya ait değildir. Kontrol TemelFatura, TicariFatura ve Kamu profillerinde uygulanır.
SGK0001SgkAdditionalDocumentReferenceRequiredInvoiceTypeCode=SGK iken AdditionalDocumentReference gönderilmemiştir.
SGK0002SgkAdditionalDocumentTypeCodeErrorSağlık harcama tipleri için MukellefKodu, MukellefAdi veya DosyaNo referanslarından biri eksiktir.
SGK0003SgkAdditionalDocumentTypeCodeFileNumberErrorAbonelik veya MalHizmet harcama tipinde DosyaNo referansı eksiktir.
SGK0004SgkAdditionalDocumentPeriodErrorSağlık veya abonelik harcama tipinde InvoicePeriod gönderilmemiştir.

Katman A — Senaryo Kuralları (hepsi ErrorCode="SCHEME")

Aşağıdaki mesajlar ayrı bir koda sahip değildir; ayrım ErrorMessage metnine bakılarak yapılmalıdır.

SenaryoGözlenebilir mesaj veya kural
Tip/profil uyumu — IADE "Fatura tipi IADE iken fatura profili sadece TEMELFATURA, EARSIVFATURA, ILAC_TIBBICIHAZ, YATIRIMTESVIK veya IDIS olabilir"
Tip/profil uyumu — İDİS"IDIS fatura senaryosunda fatura tipi SATIS, ISTISNA, IADE, TEVKIFAT, TEVKIFATIADE veya IHRACKAYITLI tiplerinden biri olmalıdır."
Tip/profil uyumu — SGK"Fatura profili SGK iken fatura tipi sadece TEMELFATURA olabilir" (mesaj metni böyledir; kastedilen: InvoiceTypeCode=SGK iken ProfileID yalnızca TEMELFATURA olabilir)
Tip/profil uyumu — İHRACAT"Fatura profili IHRACAT iken fatura tipi sadece ISTISNA olabilir"
Tip/profil uyumu — YOLCUBERABERFATURA"Fatura profili YOLCUBERABERFATURA iken fatura tipi sadece ISTISNA olabilir"
Tip/profil uyumu — ENERJI"cbc:ProfileID değeri ENERJI olduğu durumda cbc:InvoiceTypeCode değeri SARJ veya SARJANLIK olmalıdır."
Tip/profil uyumu — ILAC_TIBBICIHAZ"ILAC_TIBBICIHAZ Fatura senaryosunda fatura tipi SATIS, ISTISNA, TEVKIFAT, TEVKIFATIADE, IADE ve IHRACKAYITLI tiplerinden biri olmalıdır."
Tip/profil uyumu — YATIRIMTESVIKGİB'e gönderilecek e-Faturada SATIS, ISTISNA veya IADE kullanılır; güncel GİB kılavuzu esas alınır.
HKS kalem kimliği "ProfileID elemanının değeri HKS iken her InvoiceLine elemanı 19 karakterli KUNYENO içermelidir"
ILAC_TIBBICIHAZ kalem kimliği "ProfileID elemanının değeri ILAC_TIBBICIHAZ iken her InvoiceLine elemanı Item.AdditionalItemIdentification.SchemeID'si ILAC veya TIBBICIHAZ olan bilgi içermelidir"
İDİS sevkiyat no "IDIS türündeki faturalarda IdisSevkiyatNo alanı 'SE-' ile başlayıp ardından 7 haneli sayı içermelidir."
İDİS kalem etiket no"...schemeId değeri ETIKETNO olan bilgilerin İlk 2 karakteri harf, sonraki 7 karakter rakam olmak üzere toplam 9 karakter alfanumerik olmak üzere üretilmelidir."
YTB — YTBNO zorunluluğu "YTB Türündeki faturalarda YTB Numarasının bulunacağı ContractDocumentReference alanı dolu olmalıdır." / "6 haneli Yatırım Teşvik Belgesi Numarası zorunludur."
YTB — harcama tip kodu/tip uyumu"YTB Türündeki faturalarda CommodityClassification.ItemClassificationCode alanı 01 ise fatura tipi yalnızca satış veya istisna olmalıdır." (02/03/04 kodları için benzer, farklı izinli tip listeleriyle)
İhracat — teslimat/Incoterm/GTİP "...Invoice ve InvoiceLine elemanlarından en az bir tanesi Delivery.DeliveryAddress elemanı içermelidir" / "...schemeID niteliği değeri 'INCOTERMS' olan en az bir ID elemanı içermelidir" / "GTİP kodu 12 haneli numaralardan oluşmalıdır..."
İhracat — alıcı/vergi dairesi"...BuyerCustomerParty.Party.PartyLegalEntity.RegistrationName elamanı dolu olmalıdır" / "AccountingSupplierParty.Party.PartyTaxScheme.TaxScheme.Name elamanı dolu olmalıdır"
İhracat/Yolcu Beraber — sabit alıcı adresi "Receiver.Identifier elemanının değeri urn:mail:ihracatpk@gtb.gov.tr iken Invoice.ProfileID elemanının değeri IHRACAT olmalıdır" (Yolcu Beraber için urn:mail:yolcuberaberpk@gtb.gov.tr ile aynı desen)
Yolcu Beraber — TaxRepresentativeParty "...TaxRepresentativeParty.PartyIdentification elemanı schemeID niteliği değeri 'ARACIKURUMVKN' olan ve değeri geçerli bir vkn/tckn olan bir tane ID elemanı içermelidir." (aynı desen ARACIKURUMETIKET için de geçerlidir)
Kamu — IBAN/para birimi "ProfileID elemanının değeri KAMU iken PaymentMeans.PayeeFinancialAccount.ID alanına geçerli bir Türkiye IBAN numarası yazılmalıdır" / "Kamu faturalarında PayeeFinancialAccount.CurrencyCode alanı boş geçilemez"
Tevkifat (belge seviyesi) "WithholdingTaxTotal elamanı varken fatura tipi TEVKIFAT, YTBTEVKIFAT, IADE, YTBIADE, SGK, SARJ veya SARJANLIK olabilir" / "TaxTypeCode değeri 4171 ise fatura tipi TEVKIFAT, IADE, YTBIADE veya SGK olabilir"
Mükerrer/iade — eksik referans "IADE, TEVKIFATIADE, YTBIADE ve YTBTEVKIFATIADE fatura tiplerinde iade bilgilerini içeren BillingReference/InvoiceDocumentReference elemanı zorunludur."
Mükerrer/iade — DocumentTypeCode/ID/tekillik"...DocumentTypeCode değeri 'IADE' olmalıdır..." / "...ID 16 haneli olmalıdır..." / "Mükerrer iade fatura numarası mevcut. Mükerrer Belge Numaraları: {csv}"

Katman B — Genel Kodlar

KodMesaj
SCM0001{0} için girilen kod geçerli değildir! (GİB kod listesinde bulunmayan değer — para birimi, vergi tipi, istisna kodu, ödeme aracı vb.)
SCM0002{0} zorunlu bir elemandır boş geçilemez!
SCM0005CopyIndicator false olmalıdır!
SCM0006SCM0008IssueDate zorunlu/gelecek olamaz/saat bileşeni zorunlu
SCM0011Kalem detay ID bilgileri mükerrer olmamalıdır!
DOC0006Ampersand (&) karakter içeren veri bulundu!

Doğrulama Kapsamı

Hata kataloğu yalnızca profil kurallarından oluşmaz. Aşağıdaki tablo, e-Fatura oluşturma sırasında uygulanan doğrulama ailelerinin tamamını ve hatanın hangi katmanda gözlenebileceğini gösterir. Alan adı içeren genel mesajlarda entegratör, dönen ErrorCode ile ErrorMessage değerini birlikte kaydetmelidir.

Doğrulama ailesiKontrol edilen sözleşmeHata katmanı
Belge kimliği ve tarihUUID, fatura numarası, IssueDate, IssueTime ve CopyIndicatorSCM00xx / DOC00xx
Kod listeleri ve para birimiPara birimi, vergi, istisna, ödeme aracı ve diğer GİB kod listeleriSCM0001 ve alan mesajı
Taraflar ve mükellefiyetGönderici/alıcı kimliği, GİB mükellefiyeti, mükellefiyet tarihi ve alıcı etiketiINV0220, INV0229, COM0030
Belge toplamlarıVergi hariç/dahil tutar, indirim/artırım, yuvarlama ve ödenecek tutar dengesiSCHEME / SCM00xx
Vergi ve tevkifatTaxTotal, TaxSubtotal, istisna nedeni, WithholdingTaxTotal ve TaxTypeCode=4171SCHEME / SCM00xx
Fatura kalemleriMiktar, birim, fiyat, kalem tutarı, kalem kimliği ve mükerrer satır kimliğiSCHEME / SCM0011
İndirim ve artırımlarBelge/kalem seviyesinde AllowanceCharge, oran, temel tutar ve sıraSCHEME / SCM00xx
Ödeme ve referanslarPaymentMeans, sipariş/irsaliye referansı ve iade için BillingReferenceSCHEME / SCM00xx
Profil ve fatura tipiProfileID ile InvoiceTypeCode uyumuSCHEME
İhracat ve yolcu beraberGTİP, Incoterm, teslimat, ihracat alıcısı, pasaport ve aracı kurum bilgileriSCHEME
KamuTR IBAN, hesap para birimi ve alıcı taraf alanlarıSCHEME
SGKEk belge, dosya numarası ve fatura dönemiSGK0001SGK0004
HKS, İDİS ve İlaç/Tıbbi CihazKünye, sevkiyat/etiket ve ürün izlenebilirlik kimlikleriSCHEME
Yatırım teşvikYTB numarası/tarihi, harcama tipi ve güncel GİB fatura tipi kümesiSCHEME
Bilinen doğrulama davranışı: İstisna kodu grubu kullanılan ve fatura tipi doğru seçilmiş bir istekte de "Vergi istisna muhafiyet kodu : {code} için fatura tipi ISTISNA, IADE, IHRACKAYITLI veya SGK olabilir." hatası alınabilir. Alanlar bu kurala uygun olduğu hâlde hata sürüyorsa request'i değiştirmeden destek ekibine hata yanıtıyla birlikte iletin.

Validasyon Referansları

Senaryo bazlı anlatım için Giden Fatura Senaryoları ile Gelen Fatura Senaryoları sayfalarına bakın. Operasyonel görevler de yön bazında giden ve gelen fatura sorumlulukları sayfalarında açıklanır; aşağıdaki tablo alanlarla gözlenebilir hata davranışlarını eşleştirir.

KonuKural
Profil → izinli InvoiceTypeCode kümesiSeçilen profile göre izinli türler Alan Zorunluluk Matrisi'nde listelenir.
Alıcının GİB e-Fatura mükellefi olmasıTüm 10 profil için zorunlu (INV0220); mükellefiyet tarihi fatura tarihinden sonra ise INV0229
Etiket (ReceiverIdentifier) doğrulamasıYalnızca TemelFatura/TicariFatura/Kamu profillerinde (COM0030)
SGK ek belge/dönem kurallarıYalnızca InvoiceTypeCode=SGK (dolayısıyla ProfileID=TEMELFATURA) için (SGK0001SGK0004)
WithholdingTaxTotal / TaxTypeCode=4171 kısıtıWithholdingTaxTotal yalnızca izin verilen fatura tiplerinde gönderilir; 4171 kodu yalnızca TEVKIFAT, IADE, YTBIADE veya SGK tiplerinde kabul edilir.
İade fatura referans bütünlüğüIADE, TEVKIFATIADE, YTBIADE ve YTBTEVKIFATIADE tiplerinde iade edilen belgeyi gösteren BillingReference/InvoiceDocumentReference zorunludur.
Vergi istisna kodu gruplarıAlanlar kurala uygun olduğu hâlde tip uyumsuzluğu hatası alınırsa yukarıdaki bilinen doğrulama davranışı uygulanır.

Sözleşme Bakımı

Profil, fatura tipi, alan zorunluluğu veya hata kodu değiştiğinde bu referans API sözleşmesiyle birlikte güncellenmelidir. Entegratör yalnızca bu sayfada yayımlanan alan ve hata davranışlarına bağımlı olmalıdır.