API
Entegratör API Endpoint Referansı
Entegratörün doğrudan ERP/API entegrasyonunda kullandığı belge endpointleri, alan sözleşmeleri ve yanıt örnekleri.
API Endpointlerini detaylı bir şekilde incelemek için swagger dokümantasyonuna ulaşabilirsiniz
https://edonusumtestgpapi.vbt.com.tr/swagger/ui/index
Kimlik Doğrulama
API çağrıları, firmanın yetki bağlamı ve oturum token'ı üzerinden ilerler; bu alanda kullanılacak header ve token akışı netleştirilir.
VbtAuthorization header'ı gerektirir. Token almak için POST /api/Account/Token kullanın.Oturum token'ı alır. Tüm diğer endpointler bu token'ı VbtAuthorization header'ında bekler.
| Request | TokenRequestModel — { Email, Password } |
| Response | TokenResponseModel — { Token } |
Alan Zorunluluk Matrisi
Request modeli, zorunlu alanlar ile senaryoya bağlı alanları birlikte taşır. Aşağıdaki matris GİB belge sözleşmesini gösterir. VerificationInfo ve VerificationProvider doğrudan entegrasyonlarda eksiksiz gönderilmelidir.
| Alan | SATIS | IADE YüzYüze | IADE Kargo | Not |
|---|---|---|---|---|
ExpenseVoucherExternalId | Z | Z | Z | Tekil kimlik |
ExpenseVoucherTypeCode | Z | Z | Z | SATIS/IADE |
VerificationMethod | SMS | SMS / IADEKODU | IADEKODU | GİB yöntem alanlarını platform üretir |
ProfileId | Z | Z | Z | GIDERPUSULASI |
DocumentCurrencyCode | Z | Z | Z | ISO 4217 |
IssueDate | Z | Z | Z | — |
VerificationProvider | K | K | K | Doğrudan ERP/API için zorunlu |
VerificationInfo | K | K | K | Doğrudan ERP/API için zorunlu |
AccountingCustomerParty | Z | Z | Z | — |
LegalMonetaryTotal | Z | Z | Z | — |
TaxTotal | Z | Z | Z | — |
ExpenseVoucherLine | Z | Z | Z | Min 1 kalem |
ReturnedDocumentReference | — | Z | Z | IADE'de |
CargoCompanyCode | — | — | Z | Kargo iade |
DelegateReceiver | — | O | O | Vekalet |
UUId | O | O | O | Boşsa üretilir |
ExpenseVoucherNumber | O | O | O | Boşsa üretilir |
Z Zorunlu · O Opsiyonel · Ş Şartlı
Ekleme
Yeni e-Gider Pusulası oluşturma çağrıları, belge içeriğini, doğrulama bilgisini ve senaryo detaylarını platforma teslim eder.
Yeni bir e-Gider Pusulası oluşturur ve sisteme kaydeder.
| Request | OutgoingExpenseVoucherRequestModel |
| Response | OutgoingExpenseVoucherAddResponseModel |
| Başarılı Yanıt | { ExpenseVoucherNumber, Ettn, HasError, Errors[] } |
| Entegratör kuralı | VerificationInfo ve VerificationProvider, seçilen senaryoya uygun ve eksiksiz gönderilmelidir. |
Yeni e-Gider Pusulasını hazır UBL belgesiyle oluşturur.
| Alan | Beklenti |
|---|---|
ExpenseVoucherExternalId | Entegratör sistemindeki benzersiz belge kimliği gönderilmelidir. |
FileBytes | Tam UBL XML veya ZIP içeriği Base64 olarak gönderilmelidir. |
IsZipped | FileBytes ZIP ise true, doğrudan XML ise false gönderilmelidir. |
IsSigned | Yalnızca gerçekten imzalanmış UBL için true gönderilmelidir. Bu durumda belge Signed kullanıcı durumuyla içe alınır. |
EArchiveMailTo | Bilgilendirme adresi varsa gönderilebilir. |
| UBL içeriği | Altı sağlayıcı/doğrulama değeri ilgili Contact düğümlerinde eksiksiz bulunmalıdır. |
| Response | OutgoingExpenseVoucherAddResponseModel |
Request örneği
{
"ExpenseVoucherExternalId": "ERP-GP-2026-145",
"FileBytes": "BASE64_ENCODED_UBL_XML",
"IsZipped": false,
"IsSigned": false,
"EArchiveMailTo": "muhasebe@example.com"
}
FileBytes içindeki UBL'nin sağlayıcı ve doğrulama alanları hazır UBL örneklerinde gösterilir.
Gider Pusulasını kaydetmeden önizleme yapar. Doğrulama ve format kontrollerini içerir.
| Request | OutgoingExpenseVoucherRequestModel |
| Response | OutgoingExpenseVoucherPreviewResponseModel — { ExpenseVoucherPdfFileBytes, HasError, Errors[] } |
| ERP/API çağrısı | Önizleme kayıt oluşturmasa da belge validasyonunu çalıştırır; doğrulama alanları eksiksiz gönderilmelidir. |
| Portal çağrısı | Doğrulama alanları boş bırakılabilir. Önizleme belgeyi kaydetmez veya doğrulama sürecini tamamlamaz; gerçek kayıt sonrasında Portal akışı ayrıca yürütülür. |
Güncelleme
Güncelleme işlemleri, belge kesinleşmeden önceki düzeltme ihtiyacını karşılar; imza ve rapor durumu bu işlemin doğal sınırını belirler.
Mevcut bir Gider Pusulasını günceller. Belge henüz imzalanmamış olmalıdır.
| Request | OutgoingExpenseVoucherRequestModel (Id veya UUId zorunlu) |
| Response | OutgoingExpenseVoucherUpdateResponseModel — { ExpenseVoucherNumber, Ettn, HasError, Errors[] } |
| Doğrulama kuralı | Önceki doğrulama bilgisinin korunacağı varsayılmamalıdır. Güncel VerificationInfo ve VerificationProvider request içinde yeniden gönderilmelidir. |
Mevcut e-Gider Pusulasını güncel UBL belgesiyle değiştirir.
| Alan | Beklenti |
|---|---|
ExpenseVoucherExternalId | Güncellenecek mevcut belgeyi bulmak için aynı harici kimlik gönderilmelidir. |
FileBytes | Yalnız değişen alanlar değil, güncel belgenin tamamını içeren UBL XML veya ZIP Base64 olarak gönderilmelidir. |
IsZipped | Gönderilen içeriğin XML/ZIP biçimiyle uyumlu olmalıdır. |
IsSigned | Yalnız gerçekten imzalanmış güncel UBL için true gönderilmelidir. |
EArchiveMailTo | Güncel bilgilendirme adresi varsa gönderilebilir. |
| UBL içeriği | Önceki doğrulama bilgisi miras alınmaz; altı alan güncel UBL içinde yeniden ve eksiksiz sağlanmalıdır. |
| Response | OutgoingExpenseVoucherUpdateResponseModel |
Request örneği
{
"ExpenseVoucherExternalId": "ERP-GP-2026-145",
"FileBytes": "BASE64_ENCODED_CURRENT_UBL_XML_OR_ZIP",
"IsZipped": true,
"IsSigned": false,
"EArchiveMailTo": "muhasebe@example.com"
}
Örnekteki FileBytes, eski UBL'ye uygulanacak bir yama değil; doğrulama alanları dahil güncel belgenin tamamıdır.
İptal
İptal çağrısı, düzenlenmiş e-Gider Pusulası'nın durumuna göre değerlendirilir; platform yalnızca iptal için uygun belgelerde süreci başlatır.
İptale uygun durumdaki e-Gider Pusulasını iptal eder. Kod gönderilmişse bildirim denenir; raporlanmış belgede iptal raporu oluşturulur.
| Ön koşul | WaitingForVerification, WaitingForSmsCode veya imzalanmış belge iptal edilebilir. İmzalama aşamasında olup henüz imzalanmamış belge reddedilir. Belgenin platformda kayıtlı e-Arşiv durumu ayrıca Valid olmalıdır; istemci request içinde durum göndermez. |
| Request | ExpenseVoucherCancelRequestModel — { Id, ExpenseVoucherExternalId, Ettn, ExpenseVoucherNumber, EArchiveCancelDescription }. Belge kimliği alanlarından en az biri gönderilmelidir; öncelik sırası Id, ExpenseVoucherExternalId, Ettn, ExpenseVoucherNumber şeklindedir. |
| Response | bool |
Sorgulama & Görüntüleme
Sorgulama uçları, oluşturulmuş belgelerin durumunu, görüntüleme çıktısını ve teknik paket bilgisini aynı referans altında toplar.
Belge detay bilgisi. ETTN ile sorgulanır; tüm bilgiler döner.
| Parametre | id (query) — Elektronik Belge Takip Numarası (ETTN) |
| Response | OutgoingExpenseVoucherResponseModel |
Gider Pusulası özet bilgilerini içeren liste. Entegratör sorgusu için uygundur.
| Request | SearchRequestModel<OutgoingExpenseVoucherGetRequestModel> — { Query: { UUId, ExpenseVoucherNumber, IssueDate... }, Skip, Take } |
| Response | SearchResponseModel<OutgoingExpenseVoucherSummaryResponseModel> |
Belgenin PDF formatındaki görselini döner.
| Request | ExpenseVoucherPdfRequestModel — { ExpenseVoucherEttns: ["ettn1", "ettn2"...] } |
| Response | ExpenseVoucherPdfResponseModel — { ExpenseVoucherPdfFileBytes } (base64) |
Belgenin HTML görüntüsünü döner (iframe içinde gösterim için).
| Request | ExpenseVoucherViewRequestModel — { Ettn, IsRead } |
| Response | ExpenseVoucherViewResponseModel — { ExpenseVoucherHtmlView } |
Kargo Şirketi
Kargo iadelerinde kullanılacak şirket bilgisi platform referanslarından seçilir; bu uç, geçerli kargo kayıtlarını entegrasyon tarafına açar.
Platformda tanımlı kargo şirketlerini listeler. JSON çağrısında Code; hazır UBL çağrısında VKN, unvan, yetki belge no ve adres alanları referans alınır.
| Alan | Tip | Açıklama |
|---|---|---|
Id | int | Kayıt Id |
Code | string | Kargo şirketi kodu — bu değeri CargoCompanyCode olarak göndereceksiniz |
Title | string | Kargo şirketi unvanı |
VKN | string | Vergi Kimlik Numarası |
ClassificationCode | string | Yetki Belge No |
CityName | string | Şehir |
CitySubdivisionName | string | İlçe |
CountryName | string | Ülke |
Entegratör kargo iadesi yaparken:
JSON:
CargoCompanies/GetAll çağır → listeden Code seç → CargoCompanyCode alanına yaz. Platform kendi ürettiği UBL'de diğer alanları tamamlar.Hazır UBL: Aynı endpoint kaydındaki VKN, unvan, yetki belge no, şehir, ilçe ve ülke değerlerini değiştirmeden
DeliveryParty içine yaz. Platform hazır UBL'yi değiştirmez; uyumsuz içeriği EGP0087 ile reddeder.
VerificationInfo → AccountingCustomerParty/Party/Contact altına yazılır. DelegateReceiver dolu gönderildiğinde aynı doğrulama bilgisi UBL içinde BuyerCustomerParty/Party/Contact altına taşınır. GİB raporundaki aliciBilgileri/bilgiDetay ise her durumda belge oluşturma veya güncelleme anında kaydedilen VerificationInfo kaynağından üretilir.Alt Modeller
Ekleme ve güncelleme çağrılarında geçen doğrulama, vekalet, iade ve kargo alt modelleri burada tek başlık altında toplanır.
VerificationMethod alanı SMS veya IADEKODU alır. GİB'in UBL ve raporda beklediği SMS_PROVIDER/IADE_PROVIDER karşılıklarını platform üretir.VerificationProvider
SMS veya iade kodu gönderimi için kullanılan üçüncü parti doğrulama sağlayıcısının bilgileri. Entegratörün adı değil, doğrulama hizmetini sağlayan uygulamanın adı ve VKN'si yazılır. UBL'de AccountingSupplierParty/Party/Contact/OtherCommunication altına, GİB raporunda operatorUygulamaBilgi alanına taşınır. Doğrudan entegrasyonlarda eksiksiz gönderilmelidir.
| Alan | Tip | Geçerli Değerler |
|---|---|---|
ApplicationName | string | Serbest |
Vkn | string | 10 hane rakam |
VerificationInfo
Muhataba iletilen doğrulama bilgisi — SMS kodu veya iade kodu ile bu kodun ilişkilendirildiği telefon. Doğrudan entegrasyonlarda VerificationProvider ile birlikte eksiksiz gönderilmelidir. UBL'de AccountingCustomerParty/Party/Contact altına yazılır (vekalet varsa BuyerCustomerParty/Party/Contact); GİB raporunda aliciBilgileri/bilgiDetay alanına yansır.
| Alan | Tip | Geçerli Değerler |
|---|---|---|
Code | string | Serbest |
PhoneNumber | string | 0XXXXXXXXXX |
DelegateReceiver (doluysa 3 alan zorunlu)
Vekil kişi bilgisi — iade edilecek ürünü orijinal alıcı yerine teslim eden kişi. Yalnızca IADE belgelerinde kullanılır. Kimlik tipi, kimlik değeri ve ad birlikte gönderilmelidir. Doğrulama kodu, tipi ve telefon bu modelde tekrarlanmaz; ayrı VerificationInfo modelinde taşınır.
| Alan | Tip | Geçerli Değerler |
|---|---|---|
PartyId | int | Yalnız Portal seçimi için; doğrudan entegrasyon ve UBL akışında zorunlu değildir |
Identification | string | TCKN veya pasaport no |
IdentificationType | string | TCKN, PASAPORTNO |
Name | string | Serbest |
ReturnedDocumentReference (IADE'de zorunlu)
İadeye konu olan orijinal belgenin referansı — hangi belgeye karşılık iade yapıldığını tanımlar. IADE belgelerinde zorunlu, SATIS'te kullanılmaz. UBL'de BillingReference/InvoiceDocumentReference olarak, GİB raporunda iadeDetay alanına yazılır. BELGESIZ iadede DocumentNumber boş bırakılabilir ancak alıcının gerçek kimliği zorunludur.
| Alan | Tip | Not | |
|---|---|---|---|
DocumentType | string | Z | EARSIV_FATURA / SATIS_FISI / BELGESIZ |
DocumentNumber | string | Ş | BELGESIZ'de boş olabilir |
IssueDate | string | Z | yyyy-MM-dd |
CargoCompany (kargo iadede zorunlu)
Kargo ile yapılan iadelerde kullanılan kargo şirketi bilgisi. Entegratör bu modeli doğrudan doldurmaz — sadece CargoCompanyCode alanına kargo firmasının kodunu yazar. Platform, bu koda karşılık gelen aşağıdaki bilgileri tamamlar ve UBL'de Delivery/DeliveryParty alanına yazar:
| Alan | Tip | Açıklama |
|---|---|---|
Code | string | Kargo firma kodu (entegratörün gönderdiği) |
Title | string | Firma unvanı |
VKN | string | 10 hane |
ClassificationCode | string | Yetki belge no |
Enum Değerleri
API modellerinde kullanılan sabit değerler burada kısa bağlamıyla yer alır; enumların business anlamı, hata kodlarıyla ilişkisi ve validasyon referansları Teknik Referans sayfasında takip edilir.
Response — Belge Detay
Belge detay response'u, teknik durum bilgisiyle iş verisini birlikte döner; alan açıklamaları bu ayrımı görünür kılar.
| Alan | Tip | Açıklama |
|---|---|---|
Id | int | Belge Id |
UUId | string | ETTN |
ExpenseVoucherExternalId | string | Tekil kimlik |
ExpenseVoucherNumber | string | Belge no |
ExpenseVoucherTypeCode | string | SATIS/IADE |
VerificationMethod | string | SMS/IADEKODU |
DocumentCurrencyCode | string | Para birimi |
IssueDate | DateTime | Düzenleme tarihi |
OutgoingExpenseVoucherStatus | string | Belge durumu |
PayableAmount | decimal | Ödenecek tutar |
TaxTotalAmount | decimal | Toplam vergi |
AccountingCustomerPartyName | string | Alıcı adı |
AccountingCustomerPartyIdentificationNumber | string | Kimlik no |
AccountingCustomerPartySchemeId | string | Kimlik tipi |
SigningTime | DateTime? | İmza zamanı |
EArchiveReportStatus | int | Rapor durumu |
VerificationProvider | object | Operatör |
VerificationInfo | object | Doğrulama |
DelegateReceiver | object? | Vekil |
ReturnedDocumentReference | object? | İade belgesi |
TaxTotal | array | Vergi |
ExpenseVoucherLine | array | Kalemler |
Belge Detay ve Liste Yanıtları
Belge detay ve liste yanıtlarına OutgoingExpenseVoucherStatusForUser alanını içerir. Bu alan SMS ve iade kodu bekleme adımlarını kullanıcıya açıklar; OutgoingExpenseVoucherStatus teknik belge durumunu taşımaya devam eder.
| Değer | Ne zaman görülür? | Entegratör nasıl yorumlamalı? |
|---|---|---|
ExpenseVoucherAndXmlCreated | Doğrulama bilgisi eksiksiz kabul edildiğinde veya Portal doğrulaması tamamlandığında | Belge ve XML oluşturulmuştur; imza süreci takip edilmelidir. Bu değer henüz Signed anlamına gelmez. |
WaitingForVerification | Portal belgeyi doğrulama verisi olmadan kaydettiğinde | Portal kullanıcısının senaryoya uygun doğrulama yöntemini tamamlaması beklenir. Doğrudan entegrasyonun başarılı gönderim sonucu değildir. |
WaitingForSmsCode | Portal SMS'i başarıyla gönderdikten sonra | Kod doğrulanmadan belge imza sürecine ilerlemez. ERP bu durumu kendi SMS çağrısını başlatma talebi olarak yorumlamamalıdır. |
Signed | Belge imzalandığında | Belge GİB'e gönderime hazırdır; doğrulama adımı tamamlanmıştır. |
Yanıt Örnekleri
Oluşturma ve güncelleme endpointlerinde iş sonucu Data.HasError üzerinden değerlendirilmelidir. HTTP çağrısının tamamlanması tek başına belgenin kabul edildiği anlamına gelmez.
| Yanıt biçimi | Nerede görülür? | Başarı kararı |
|---|---|---|
Data.HasError | Belge oluşturma ve güncelleme endpointleri | false ise işlem başarılıdır; true ise Data.Errors okunmalıdır. |
ErrorCode içeren API hata zarfı | Portalın SMS ve iade kodu işlemleri | Akış, değişebilecek mesaj metnine değil hata koduna göre yönlendirilmelidir. |
Başarılı oluşturma yanıtı
{
"RefreshToken": "",
"Data": {
"HasError": false,
"Errors": [],
"ExpenseVoucherNumber": "GIP2026000000145",
"Ettn": "550e8400-e29b-41d4-a716-446655440000"
}
}
Data.HasError = false üzerinden verilmelidir. Belge numarası ve ETTN aynı Data nesnesinden okunmalıdır.Başarısız oluşturma yanıtı
Doğrudan entegrasyonda doğrulama alanlarından biri eksik veya uyumsuz gönderilirse oluşturma ya da güncelleme sonucu aşağıdaki biçimde döner.
{
"RefreshToken": "",
"Data": {
"HasError": true,
"Errors": [
{
"ErrorCode": "SCM0002",
"ErrorMessage": "VerificationProvider.Vkn zorunlu bir elemandır boş geçilemez!"
}
],
"ExpenseVoucherNumber": null,
"Ettn": null
}
}
Data.HasError = true ise belge kabul edilmiş sayılmamalıdır. Eksik veya uyumsuz alanlar düzeltilerek request yeniden gönderilmelidir.Portal doğrulama endpointi hata yanıtı
Portal işlemleri mevcut API hata zarfını kullanır. Entegrasyon bu endpointleri çağırmamalı; hata ayrımında HTTP durumuyla birlikte ErrorCode dikkate alınmalıdır. Portal endpointlerinin tam sözleşmesi Portal API Endpoint Referansı sayfasındadır.
{
"Type": 2,
"Type_Desc": "Business",
"ErrorCode": "EGP0072",
"Message": "Telefon numarası geçerli formatta değildir.",
"Detail": null
}