Sorumluluklar
Entegratör Sorumlulukları
Entegratörün veri hazırlama, doğrulama ve belge oluşturma sürecindeki sorumlulukları.
İlk Başarılı Belge İçin Uçtan Uca Akış
İlk entegrasyon, aşağıdaki sırayla tamamlandığında senaryo seçimi ile API çağrısı arasında açıkta adım kalmaz.
- Token alınmalı ve sonraki çağrılarda
VbtAuthorizationheader'ı gönderilmelidir. - Kullanım senaryosu üzerinden
SATISveyaIADE; iade ise teslim, belge ve vekalet seçenekleri belirlenmelidir. - JSON veya hazır UBL yöntemi seçilmelidir. Aynı belge için iki yöntemin alan taşıma kuralları karıştırılmamalıdır.
- Doğrulama sağlayıcısı çağrılmalı; doğrulanmış kod, telefon, yöntem, sağlayıcı adı ve VKN aynı doğrulama kaydından hazırlanmalıdır.
- Kargolu iadede
CargoCompanies/GetAllçağrılmalı; JSON içinCode, hazır UBL için aynı kaydınDeliveryPartyalanları kullanılmalıdır. - İade edilen belge ve varsa vekil bilgileri senaryoya göre eklenmelidir. BELGESIZ iadede T.C. vatandaşı için TCKN, yabancı uyruklu kişi için PASAPORTNO kullanılmalıdır.
- İstenirse
PreviewOutgoingExpenseVoucherile içerik doğrulanmalı; ardından ilgili Add veya Update endpointi çağrılmalıdır. - Yanıtta
HasErrorveErrors[]kontrol edilmeli; başarılı işlemde dönen ETTN veya belge numarasıyla belge durumu sorgulanmalıdır.
Data.HasError=false olmalı; hata varsa aynı request koşulsuz tekrarlanmamalı, hata koduna göre düzeltilmelidir.Data.HasError=false yanıtı belgenin imzalandığı anlamına gelmez; belge önce ExpenseVoucherAndXmlCreated durumuna geçer ve imza kuyruğuna alınır. Nihai Signed durumuna geçiş arka planda tamamlanır. Entegratör Add/Update yanıtından hemen sonra imzalı sonucu beklememeli, belgeyi yeniden sorgulayarak güncel durumu (OutgoingExpenseVoucherStatusForUser) takip etmelidir.Veri Sorumluluk Tablosu
Entegratörün (ERP/POS) API çağrısından önce hazırlaması ve aynı belge requesti içinde göndermesi gereken veriler aşağıdadır.
| # | Veri | Kim Üretir | Entegratör Ne Yapmalı | Hata |
|---|---|---|---|---|
| 1 | SMS/İade Kodu | Entegratörün doğrulama süreci | Doğrulanmış kod, ilişkili telefon ve yöntem aynı requestte gönderilmelidir | Eksik veya uyumsuz request reddedilir |
| 2 | Sağlayıcı bilgileri | SMS/iade kodu sağlayıcısı | Entegratör adını değil; sağlayıcının açık uygulama adını ve VKN'sini gönder | Eksik sağlayıcı kaydı reddedilir |
| 3 | İade belgesi bilgisi | Kendi sistemi | Orijinal belge no/tarih/tür bul | Validasyon hatası |
| 4 | Kargo şirketi referansı | Platform (CargoCompanies/GetAll) | JSON çağrısında kaydın Code değerini gönder; hazır UBL çağrısında aynı kaydın VKN, unvan, yetki belge no ve adres alanlarıyla DeliveryParty bölümünü hazırla | JSON'da geçersiz CargoCompanyCode genel zorunlu alan hatası döner; hazır UBL'de DeliveryParty uyumsuzluğu EGP0087 ile reddedilir |
| 5 | Gerçek kimlik | Müşteri | BELGESIZ iadede doğrula | GİB reddi |
| 6 | VerificationMethod | Doğrulama yöntemi | SMS veya IADEKODU seç; GİB provider değerini platform üretir | Senaryoya uygun olmayan yöntem reddedilir |
| 7 | Telefon | Doğrulama işlemi | Kodun gerçekten ilişkilendirildiği telefonu aynı doğrulama kaydıyla gönder | Eksik telefon reddedilir |
| 8 | Vekil bilgisi | Entegratör | Kimlik tipi, kimlik değeri ve adı birlikte gönder | EGP0054 / EGP0055 / EGP0084 |
Senaryo Bazlı Hazırlık Matrisi
Belge gönderilmeden önce doğrulama yöntemi ile senaryoya özgü alanlar birlikte hazırlanmalıdır.
| Senaryo | Doğrulama | Ek bilgiler |
|---|---|---|
SATIS | VerificationMethod=SMS | VerificationProvider ve VerificationInfo eksiksiz gönderilmelidir. |
Yüz yüze IADE | VerificationMethod=SMS veya VerificationMethod=IADEKODU | ReturnedDocumentReference gönderilmelidir. |
Kargolu IADE | VerificationMethod=IADEKODU | ReturnedDocumentReference ve CargoCompanyCode gönderilmelidir. |
Vekaletli IADE | Teslim biçiminin izin verdiği doğrulama yöntemi | Asıl alıcı korunmalı; DelegateReceiver kimlik tipi, kimlik değeri ve ad ile gönderilmelidir. |
Metot Bazlı Özel Kurallar
Aynı belge verisi farklı giriş metotlarında farklı taşıma biçimleri kullanır. Ayrıntılı request ve response sözleşmeleri Entegratör API Endpoint Referansı içinde yer alır.
| Metot grubu | Entegratörün göndermesi gereken | Özel durum |
|---|---|---|
| JSON Add | Tam belge requesti ile VerificationInfo ve VerificationProvider | Altı doğrulama alanı aynı doğrulama kaydına ait olmalıdır. |
| JSON Update | Güncel tam belge ve doğrulama alanları | Eski doğrulama bilgisinin otomatik korunacağı varsayılmamalıdır. |
| UBL Add / Update | Doğrulama ve sağlayıcı bilgilerini içeren güncel UBL | Bilgiler ilgili Contact düğümlerinde bulunmalı; mevcut taraf bilgileri ve tek Contact yapısı korunmalıdır. |
| ERP/API Preview | Normal gönderimle aynı doğrulama alanları | Önizleme kayıt oluşturmaz; ancak aynı içerik validasyonundan geçer. |
Hazır UBL Endpoint Kuralları
Hazır UBL kullanan entegratör, JSON request alanlarını ayrıca göndermez; aynı iş bilgisini UBL içindeki taraf ve Contact düğümleriyle taşır.
| Endpoint | Beklenen UBL içeriği | Özel durum |
|---|---|---|
AddOutgoingExpenseVoucherByUbl | Senaryoya uygun sağlayıcı, doğrulama, kargo ve belge referansı alanları UBL içinde eksiksiz bulunmalıdır. | IsSigned=true, entegratörün belgenin imzalı olduğuna ilişkin beyanıdır ve yalnız gerçekten imzalanmış UBL için kullanılmalıdır. Platform bu beyana güvenir; imzalı UBL byte içeriğini tamamlamaz veya değiştirmez. |
UpdateOutgoingExpenseVoucherByUbl | Güncel belge ve doğrulama bilgileri UBL içinde yeniden sağlanmalıdır. | Eski UBL'deki doğrulama bilgisi otomatik olarak miras alınmaz. |
AccountingCustomerParty/Party/Contact altında gönderilmelidir. İade işlemini asıl alıcı yerine vekil gerçekleştiriyorsa vekilin kimlik ve ad bilgileri BuyerCustomerParty içinde; doğrulama bilgileri de BuyerCustomerParty/Party/Contact altında gönderilmelidir. Asıl alıcının AccountingCustomerParty bilgileri korunmalıdır. GİB raporundaki aliciBilgileri/bilgiDetay, vekile ait doğrulama bilgileri üzerinden üretilir.Hazır UBL Örnekleri
Aşağıdaki parça hem Add hem Update UBL çağrısında FileBytes içine konulan tam UBL belgesinin ilgili bölümlerini gösterir. Tarafların mevcut kimlik, unvan, adres ve vergi alanları korunmalıdır.
Başarılı SMS doğrulama alanları
<cac:AccountingCustomerParty>
<cac:Party>
<!-- Mevcut taraf alanları korunur -->
<cac:Contact>
<cbc:ID>482193</cbc:ID>
<cbc:Name>SMS</cbc:Name>
<cbc:Telephone>05551112233</cbc:Telephone>
</cac:Contact>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:AccountingSupplierParty>
<cac:Party>
<!-- Mevcut taraf alanları korunur -->
<cac:Contact>
<cac:OtherCommunication>
<cbc:ChannelCode name="SMS_PROVIDER">SMS_SAGLAYICI_ADI</cbc:ChannelCode>
<cbc:Value>1234567890</cbc:Value>
</cac:OtherCommunication>
</cac:Contact>
</cac:Party>
</cac:AccountingSupplierParty>Vekaleten yapılan iade — BuyerCustomerParty ve Contact
<cac:AccountingSupplierParty>
<cac:Party>
<!-- Satıcı bilgileri korunur -->
<cac:Contact>
<cac:OtherCommunication>
<cbc:ChannelCode name="IADE_PROVIDER">IADE_KODU_SAGLAYICI_ADI</cbc:ChannelCode>
<cbc:Value>1234567890</cbc:Value>
</cac:OtherCommunication>
</cac:Contact>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:AccountingCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="TCKN">11111111110</cbc:ID>
</cac:PartyIdentification>
<!-- Asıl alıcının diğer taraf bilgileri korunur -->
</cac:Party>
</cac:AccountingCustomerParty>
<cac:BuyerCustomerParty>
<cac:Party>
<cac:PartyIdentification>
<cbc:ID schemeID="PASAPORTNO">U12345678</cbc:ID>
</cac:PartyIdentification>
<cac:Person>
<cbc:FirstName>Vekil Ad Soyad</cbc:FirstName>
</cac:Person>
<cac:Contact>
<cbc:ID>IADE-482193</cbc:ID>
<cbc:Name>IADEKODU</cbc:Name>
<cbc:Telephone>05551112233</cbc:Telephone>
</cac:Contact>
</cac:Party>
</cac:BuyerCustomerParty>
Vekilin kimliği TCKN veya PASAPORTNO olabilir. Doğrulama Contact alanları asıl alıcıya değil, vekili temsil eden BuyerCustomerParty altına yazılmalıdır.
Kargolu iade — DeliveryParty ve IADEKODU
<cac:AccountingCustomerParty>
<cac:Party>
<!-- İadeyi yapan gerçek kişinin kimlik ve taraf bilgileri -->
<cac:Contact>
<cbc:ID>IADE-739251</cbc:ID>
<cbc:Name>IADEKODU</cbc:Name>
<cbc:Telephone>05551112233</cbc:Telephone>
</cac:Contact>
</cac:Party>
</cac:AccountingCustomerParty>
<cac:AccountingSupplierParty>
<cac:Party>
<!-- Satıcı bilgileri korunur -->
<cac:Contact>
<cac:OtherCommunication>
<cbc:ChannelCode name="IADE_PROVIDER">IADE_KODU_SAGLAYICI_ADI</cbc:ChannelCode>
<cbc:Value>1234567890</cbc:Value>
</cac:OtherCommunication>
</cac:Contact>
</cac:Party>
</cac:AccountingSupplierParty>
<cac:Delivery>
<cac:DeliveryParty>
<cbc:IndustryClassificationCode name="YETKIBELGENO">İST.U-NET.M2.34.60</cbc:IndustryClassificationCode>
<cac:PartyIdentification>
<cbc:ID schemeID="VKN">9860008925</cbc:ID>
</cac:PartyIdentification>
<cac:PartyName>
<cbc:Name>Yurtiçi Kargo Servisi A.Ş.</cbc:Name>
</cac:PartyName>
<cac:PostalAddress>
<cbc:CityName>İstanbul</cbc:CityName>
<cbc:CitySubdivisionName>Sarıyer</cbc:CitySubdivisionName>
<cac:Country><cbc:Name>Türkiye</cbc:Name></cac:Country>
</cac:PostalAddress>
</cac:DeliveryParty>
</cac:Delivery>
Kargolu iadede SMS yöntemi kullanılamaz. JSON request'te VerificationMethod=IADEKODU gönderilmelidir. DeliveryParty; CargoCompanies/GetAll kaydındaki VKN, unvan, yetki belge numarası, şehir, ilçe ve ülke değerleriyle hazırlanmalıdır. Platform bu alanları değiştirmez; kayıtla uyuşmayan UBL'yi EGP0087 ile reddeder. IsSigned=true belgelerde bütün alanlar imzadan önce UBL'ye eklenmiş olmalıdır.
İade edilen belge türü — e-Arşiv Fatura, Satış Fişi ve Belgesiz
<!-- e-Arşiv Fatura -->
<cac:BillingReference>
<cac:InvoiceDocumentReference>
<cbc:ID schemeID="EARSIV_FATURA">GIB2026000000002</cbc:ID>
<cbc:IssueDate>2026-07-18</cbc:IssueDate>
</cac:InvoiceDocumentReference>
</cac:BillingReference>
<!-- Satış Fişi -->
<cac:BillingReference>
<cac:InvoiceDocumentReference>
<cbc:ID schemeID="SATIS_FISI">FIS-001245</cbc:ID>
<cbc:IssueDate>2026-07-18</cbc:IssueDate>
</cac:InvoiceDocumentReference>
</cac:BillingReference>
<!-- Belgesiz -->
<cac:BillingReference>
<cac:InvoiceDocumentReference>
<cbc:ID schemeID="BELGESIZ"></cbc:ID>
<cbc:IssueDate>2026-07-18</cbc:IssueDate>
</cac:InvoiceDocumentReference>
</cac:BillingReference>
EARSIV_FATURA ve SATIS_FISI seçimlerinde belge numarası gönderilmelidir. BELGESIZ seçiminde numara boş olabilir; tarih yine zorunludur. AccountingCustomerParty içinde T.C. vatandaşı için gerçek TCKN, yabancı uyruklu kişi için PASAPORTNO bulunmalıdır.
Başarısız — eksik sağlayıcı bilgisi
<cac:OtherCommunication>
<cbc:ChannelCode name="SMS_PROVIDER">SMS_SAGLAYICI_ADI</cbc:ChannelCode>
<!-- cbc:Value sağlayıcı VKN'si eksik -->
</cac:OtherCommunication>
VerificationProvider.Vkn karşılığı bulunmadığı için UBL reddedilir. ChannelCode/@name, sağlayıcı adı ve sağlayıcı VKN'si birlikte gönderilmelidir.
VerificationMethod=SMS; yüz yüze IADE için SMS veya IADEKODU; kargolu IADE için yalnız VerificationMethod=IADEKODU kullanılmalıdır. Gerçek kişi alıcı ve vekil kimliği T.C. vatandaşı için TCKN, yabancı uyruklu kişi için PASAPORTNO olmalıdır; bu ayrım BELGESIZ iadede de geçerlidir.Party altında bir Contact düğümü zaten varsa doğrulama alanları bu düğümle birleştirilmelidir. Aynı taraf altında ikinci ve çelişen bir Contact oluşturulmamalıdır. JSON request'te ise yalnız VerificationMethod seçilir; GİB alanlarını platform üretir.Gönderim Kontrol Listesi
- Belge tipi, doğrulama sağlayıcısı ve doğrulama tipi birbiriyle eşleşmelidir.
- Sağlayıcı alanlarında entegratörün değil, doğrulama hizmetini sunan kuruluşun uygulama adı ve VKN'si gönderilmelidir.
- IADE belgesinde iade edilen belge bilgisi; kargolu iadede kargo kodu; vekaletli iadede vekil bilgileri eksiksiz gönderilmelidir.
- Başarısız çağrı aynı anda yeniden tetiklenmemeli; hata koduna göre request düzeltilmeli veya bekleme süresi tamamlanmalıdır.
- Başarılı yanıt alınmadan belge doğrulanmış veya işleme hazır kabul edilmemelidir.
Adım Süreci
Entegratör tarafındaki hazırlık süreci, belge senaryosu ve doğrulama bilgisinin doğru kurulmasıyla başlar; akış bu hazırlığın API gönderimine nasıl bağlandığını gösterir.