e-Serbest Meslek Makbuzu

Sorumluluklar

Entegratör Sorumlulukları

Entegratörün veri hazırlama, kimlik, tutar, vergi ve sonuç yönetimi sorumlulukları.

İlk Başarılı Belge İçin Uçtan Uca Akış

Sağlıklı bir entegrasyon yalnız endpoint çağrısından ibaret değildir. Token yönetimi, veri hazırlığı, toplam kontrolü, iş sonucu ve sonradan sorgulama tek bir bütün olarak ele alınmalıdır.

Token alfirma + kanalRequest hazırlataraf + kalemToplam kontrolüvergi + kesintiBelge oluşturPOSTSonucu okuHasErrorSaklaUUID + noDetay / PDF ile doğrula ve uzlaştır

Veri Sorumluluk Tablosu

Veri grubuEntegratör sorumluluğuVBT’nin sağladığı davranışDoğrulama sinyali
Kimlik ve oturumDoğru firma ve kanal için token almak, yenilenen tokenı saklamakToken üretir ve standart zarf içinde yenileme bilgisini döner.HTTP başarı + geçerli Token/RefreshToken
Dış referansHer yeni işlem için benzersiz SmmExternalId üretmekBelgeyi dış referansla ilişkilendirir.Oluşturma sonucunda HasError = false
AlıcıKimlik tipine uygun ad/unvan, vergi dairesi ve adresi göndermekVeriyi belge ve raporlama kaydına taşır.Detay sorgusunda taraf alanları
Hizmet satırlarıHer satırın açıklama, brüt, oran, vergi ve kesinti tutarlarını hesaplamakGönderilen iş verisinden belge görünümünü üretir.PDF ve detay response’u
Belge toplamlarıSatır toplamlarıyla üst toplamları uzlaştırmakİş kurallarını doğrular ve sonucu döner.Data.Errors[] boş olmalı
TeslimGönderim şeklini ve elektronik teslim adresini doğru belirlemekPDF üretir; Portal e-posta gönderim işlevlerini sunar.Liste/detay e-posta durumu
İptalDoğru UUID ile iptal çağrısı yapmak ve sonucu ERP’ye işlemekBelgeyi iptal eder ve GİB bildirimini raporlama sürecinde yönetir.Data = true, liste/detay durumu

Senaryo Bazlı Hazırlık Matrisi

KararGönderilmesi gerekenGönderim öncesi kontrol
VKN alıcıUnvan, VergiDaire, adresVKN 10 hane ve yalnız rakam
TCKN alıcıAd, Soyad, adresTCKN 11 hane ve yalnız rakam
TRYDocumentCurrencyCode = TRY, CalculationRate = 1Döviz karşılığı yanlışlıkla gönderilmemiş olmalı
DövizISO 4217 kodu, işlem kuru, gerekiyorsa KurKur sıfırdan büyük ve toplam karşılıkları tutarlı
StopajOran, stopaj tutarı, net ücretStopaj tutarı brüt üzerinden hesaplanmış olmalı
TevkifatOran, kod, tevkifat tutarı, ödenecek KDVTevkifat hesaplanan KDV üzerinden hesaplanmış olmalı
Elektronik teslimGonderimSekli, kullanılacak e-posta adresiAdres biçimi ve çoklu adres ayırıcıları
GüncellemeMevcut Id, UUId ve tam güncel modelGüncel belge önce sorgulanmış olmalı

Hesaplama ve Yuvarlama Kuralları

VBT request’i ekonomik işlemin hazır sonucu olarak kabul eder. Entegratör, kalem ve belge düzeyindeki tutarları aynı hesaplama politikasıyla üretmelidir.

AlanHesaplama ilişkisiKontrol
HesaplananKdvTotalAmount × KdvOran / 100Satır ve üst toplam KDV toplamı aynı olmalı
TaxStopajTotalAmountTotalAmount × StopajOran / 100Stopaj yoksa oran ve tutar sıfır
WithholdingTaxTotalAmountHesaplananKdv × TevkifatOran / 100Tevkifat varsa kod da gönderilmeli
TaxKdvTotalAmountHesaplananKdv − WithholdingTaxTotalAmountNegatif olamaz
NetUcretTotalAmount − TaxStopajTotalAmountBrüt ücretle stopaj uyumlu olmalı
PayableAmountNetUcret + TaxKdvTotalAmountNihai tahsilat/ödeme tutarıyla eşleşmeli
Yuvarlama: Oranlardan hesaplanan değerleri ve belge toplamlarını farklı adımlarda farklı hassasiyetle yuvarlamayın. ERP’de kullanılan yuvarlama politikası satır ve üst toplamda aynı olmalıdır.

Kimlik ve Tekrar Çağrı Yönetimi

SmmExternalId entegratörün idempotency anahtarıdır. Ağ hatası veya zaman aşımı sonrasında çağrının sonucu belirsizse aynı ekonomik işlemi yeni bir dış referansla tekrar göndermek mükerrer belge riski oluşturur.

  1. Oluşturma request’i gönderilmeden dış referansı kalıcı olarak ayırın.
  2. Yanıt başarıyla geldiyse SmmNumber ve UUId ile birlikte saklayın.
  3. Yanıt alınamadıysa önce liste sorgusunda SmmExternalId filtresiyle kontrol edin.
  4. Kayıt bulunduysa sonucu uzlaştırın; bulunmadıysa aynı dış referansla kontrollü tekrar deneyin.

Token ve Header Yönetimi

Account/Token dışındaki çağrılarda VbtAuthorization header’ı gönderilmelidir. Her standart yanıttaki RefreshToken boş değilse istemcinin sakladığı token atomik biçimde güncellenmelidir.

POST /api/Smm/AddOutgoingSmm HTTP/1.1
Content-Type: application/json
VbtAuthorization: <token>
Paralel istekler: Aynı firma için eşzamanlı çağrılar varsa token yenileme yarışını önlemek üzere en son geçerli token merkezi ve güvenli biçimde saklanmalıdır.

Yanıt ve Hata Yönetimi

HTTP isteğinin tamamlanmış olması belge iş sonucunun başarılı olduğu anlamına gelmez. Oluşturma, güncelleme ve önizleme sonuçlarında içteki Data.HasError ve Data.Errors[] birlikte değerlendirilmelidir.

SinyalAnlamİstemci davranışı
HTTP 2xx + Data.HasError = falseİşlem kabul edildi.Kimlikleri sakla; gerekirse detay/PDF ile doğrula.
HTTP 2xx + Data.HasError = trueİş kuralı veya içerik doğrulaması başarısız.Errors[] listesini kullanıcıya göster; veri düzeltilmeden otomatik tekrar yapma.
HTTP 401/403Oturum veya yetki geçersiz.Tokenı yenile; aynı iş emrini kontrollü tekrar gönder.
HTTP 5xx / zaman aşımıSonuç belirsiz olabilir.Dış referansla sorgulamadan yeni belge oluşturma.
RefreshToken doluYeni oturum tokenı sağlandı.Bir sonraki istekten önce güvenli biçimde sakla.

Gönderim Öncesi Kontrol Listesi

Kimlik ve taraf kontrolü
  • SmmExternalId boş değil ve bu işleme özgü.
  • VKN/TCKN yalnız rakam ve doğru uzunlukta.
  • VKN’de unvan/vergi dairesi; TCKN’de ad/soyad tamam.
  • Alıcı adresinde ülke, ilçe/semt ve şehir bilgileri var.
Hizmet ve toplam kontrolü
  • En az bir MalHizmetler satırı var ve satır kimlikleri benzersiz.
  • KDV, stopaj ve tevkifat oranları 0–100 aralığında.
  • Satır tutarlarının toplamı üst toplamlarla eşleşiyor.
  • PayableAmount net ücret ve ödenecek KDV ile uyumlu.
Teslim ve sonuç kontrolü
  • GonderimSekli iş senaryosuna uygun.
  • Elektronik teslim adresi geçerli ve çoklu adresler noktalı virgülle ayrılmış.
  • Başarı kararı HasError üzerinden veriliyor.
  • UUId, SmmNumber ve yenilenen token saklanıyor.