e-Serbest Meslek Makbuzu

API

Entegratör API Endpoint Referansı

Doğrudan ERP/API entegrasyonunda kullanılan kimlik, oluşturma, güncelleme, sorgulama, iptal ve belge endpointleri.

Kimlik doğrulama: /api/Account/Token dışındaki tüm entegratör çağrılarında VbtAuthorization header’ı gönderilmelidir. Yanıttaki RefreshToken doluysa bir sonraki çağrıdan önce saklanmalıdır.

Kimlik Doğrulama

POST/api/Account/Token

Kullanıcı, firma ve kanal bağlamı için API oturum tokenı üretir.

RequestTokenRequestModelEmail, Password, FirmId, ChannelCode
ResponseTokenResponseModel; sonraki çağrılarda kullanılacak token
Başarı kararıToken alanı boş değilse oturum kullanılabilir.
Token request örneği
{
  "Email": "entegrasyon@example.com",
  "Password": "********"
}
GET/api/Account/LogOut

Geçerli API oturumunu sonlandırır.

HeaderVbtAuthorization
ResponseResponseModel<bool>
KullanımOturum kapatıldığında saklanan token temizlenir.

Alan Zorunluluk Matrisi

SmmRequestModel oluşturma, güncelleme ve önizleme için ortak modeldir. Zorunluluk, işlem ve senaryoya göre aşağıdaki biçimde yorumlanmalıdır.

AlanTipOluşturmaGüncellemeKural
IdintZMevcut kayıt kimliği
UUIdstringZMevcut belge UUID/ETTN değeri
SmmExternalIdstringZZFirma altında dış sistem referansı
IssueDateDateTimeZZISO 8601 tarih-zaman
DocumentCurrencyCodestringZZISO 4217 para birimi
CalculationRatedecimalŞŞTRY dışındaki belgede sıfırdan büyük; TRY için 1
GonderimSeklistringİİKagit veya Elektronik; teslim davranışının açık olması için gönderilmesi önerilir.
AliciobjectZZKimlik tipine uygun kişi/kurum ve adres bilgileri
MalHizmetlerarrayZZEn az bir hizmet satırı
Belge toplamlarıdecimalZZSatır toplamlarıyla uyumlu
EArchiveMailTostringŞŞElektronik teslimde kullanılacak adresler; çoklu değerler ; ile ayrılır.
QrCode, FirmLogostringOpsiyonelOpsiyonelBelge görünümüne yönelik içerik
ChannelCodestringÖnerilirÖnerilirBelgenin geldiği kanal; token bağlamıyla uyumlu olmalıdır.

Ekleme

POST/api/Smm/AddOutgoingSmm

Yeni e-SMM oluşturur; belge PDF’i aynı işlem sırasında üretilip imzalanır.

Ön koşulGeçerli token, benzersiz SmmExternalId, tam alıcı/adres, en az bir hizmet satırı ve tutarlı toplamlar
RequestSmmRequestModel
ResponseResponseModel<OutgoingAddSmmReponseModel>Data.{ HasError, Errors, SmmNumber, UUId }
Başarı kararıData.HasError = false; belge numarası ve UUID saklanır.
Zaman aşımı: Yanıt alınamadıysa aynı ekonomik işlemi yeni dış referansla tekrar göndermeyin. Önce GetOutgoingSmmList üzerinden SmmExternalId ile uzlaştırın.
POST/api/Smm/PreviewOutgoingSmm

Belgeyi kaydetmeden taslak PDF önizlemesi üretir.

RequestSmmRequestModel
ResponseOutgoingSmmPreviewResponseModel.SmmPdfFileBytes ve iş sonucu
NotÖnizleme belge numarası veya kalıcı kayıt oluştuğu anlamına gelmez.

Güncelleme

POST/api/Smm/UpdateOutgoingSmm

Mevcut e-SMM’yi tam güncel modelle değiştirir ve imzalı PDF çıktısını yeniden üretir.

Ön koşulBelge önce detay endpointinden okunmalı; request içinde mevcut Id ve UUId bulunmalıdır.
RequestSmmRequestModel; yalnız değişen alanlar değil tam belge modeli
ResponseData.{ HasError, Errors, SmmNumber, UUId }
Başarı kararıData.HasError = false; yeni çıktı istenirse PDF endpointinden alınır.

İptal

POST/api/Smm/CancelOutgoingSmm

UUID ile belirtilen e-SMM’yi iptal eder.

RequestSmmCancelRequestModel{ "UUId": "6b60c576-7ed9-4bf1-9f90-3c97747b7470" }
ResponseResponseModel<bool>
Başarı kararıData = true
Sonraki adımERP kaydı iptal durumuna alınır; yeniden düzenleme yeni dış referansla yapılır.
{
  "UUId": "6b60c576-7ed9-4bf1-9f90-3c97747b7470"
}

Sorgulama & Görüntüleme

GET/api/Smm/GetOutgoingSmm?id={uuid}

UUID ile tek belgenin başlık, taraf, hizmet, vergi ve toplam detayını getirir.

Parametreid — belge UUID/ETTN değeri
ResponseResponseModel<OutgoingSmmReponseModel>
KullanımGüncelleme öncesi güncel modeli okuma ve sonuç uzlaştırma
POST/api/Smm/GetOutgoingSmmList

Entegrasyon sorguları için sayfalı e-SMM özet listesini getirir.

RequestSearchRequestModel<OutgoingSmmGetUiRequestModel>Query, Skip, Take, OrderByName, OrderByType
FiltrelerUUId, VknTckn, Unvan, IssueDate, SmmNumber, SmmExternalId, durum ve e-posta alanları
ResponseSearchResponseModel<OutgoingSmmSummaryResponseModel>
SayfalamaTake 0–100 aralığında olmalıdır.
Dış referansla liste sorgusu
{
  "Query": {
    "SmmExternalId": "ERP-SMM-2026-00001"
  },
  "Skip": 0,
  "Take": 20,
  "OrderByName": "IssueDate",
  "OrderByType": "DESC"
}
POST/api/Smm/GetOutgoingSmmPdf

Bir veya daha fazla e-SMM’nin PDF çıktısını getirir.

RequestSmmPdfRequestModelEttns[], opsiyonel DisplayPdf ve FirmId
ResponseOutgoingSmmPdfResponseModel.SmmPdfFileBytes — JSON içinde base64 olarak taşınır.
KullanımArşivleme, kullanıcıya gösterim veya dosyaya yazma
{
  "Ettns": ["6b60c576-7ed9-4bf1-9f90-3c97747b7470"],
  "DisplayPdf": true
}
POST/api/Smm/GetOutgoingSmmDocumentPackage

Seçilen belge için Portal görüntüleme/indirme senaryosunda kullanılan belge paketini döner.

RequestGlobalDocumentPreviewRequestModel
ResponseDocumentPreviewResponseModel; dosya içeriği ve görüntüleme bilgileri
TercihERP yalnız PDF byte dizisine ihtiyaç duyuyorsa GetOutgoingSmmPdf daha doğrudan sözleşmedir.

Alt Modeller

SmmRequestModel

Model, belge başlığı ve toplamlarını taşır; alıcı, hizmet, vergi ve kur alt modelleri aşağıdaki bölümlerde ayrıştırılmıştır.

AlanTipİş anlamıNot
LocationCodestringBelgenin düzenlendiği lokasyonERP şube/lokasyon koduyla eşleştirilebilir.
IssueDateDateTimeDüzenleme tarih-zamanıISO 8601 gönderilmesi önerilir.
BelgeZamanSpecifiedboolZaman bilgisinin ayrıca belirtildiğini gösterir.Tarih-zaman kullanan entegrasyonlarda tutarlı gönderilir.
UUIdstringBelge UUID/ETTNGüncellemede kullanılır; oluşturmada VBT üretir.
SmmNumberstring16 karakterli belge numarasıOluşturmada VBT üretir.
FileNamestringBelge dosya adıVBT tarafından çıktı kaydında üretilir; oluşturma girdisi olarak kullanılmaz.
DocumentCurrencyCodestringBelge para birimiISO 4217
CalculationRatedecimalTRY karşılığı kurTRY dışındaki belgede zorunlu
AliciobjectHizmeti alan kişi/kurumKimlik ve adres
GonderenobjectSerbest meslek erbabıVBT firma kaydından tamamlanır.
MalHizmetlerarrayHizmet satırlarıSatır toplamları üst toplamla eşleşir.
BaslikVergiobjectBelge düzeyi vergi/tevkifat grubuVergi ve tevkifat listeleri
Aciklamalarstring[]Belge notlarıBirden fazla açıklama gönderilebilir.
TotalAmountdecimalBrüt hizmet toplamıSatır brüt toplamı
HesaplananKdvdecimalHesaplanan KDVKDV satır toplamı
StopajOranintBelge stopaj oranı0–100
TaxStopajTotalAmountdecimalToplam stopajBrüt üzerinden hesaplanır.
TevkifatOranintBelge tevkifat oranı0–100
TevkifatKoduintBelge tevkifat koduSenaryoya uygun kod
WithholdingTaxTotalAmountdecimalToplam KDV tevkifatıHesaplanan KDV üzerinden
TaxKdvTotalAmountdecimalTevkifat sonrası KDVÖdenecek KDV
NetUcretdecimalStopaj sonrası net ücretBrüt − stopaj
PayableAmountdecimalNihai tahsilat/ödemeNet ücret + ödenecek KDV
ToplamVergidecimalBelge vergi toplamıVergi modeliyle uyumlu
EArchiveMailTostringElektronik teslim adresiÇoklu adresler ; ile ayrılır.
YaziIlestringToplamın yazıyla gösterimiBelge görünümünde kullanılır.
SmmExternalIdstringERP dış referansıYeni oluşturma için benzersiz
ChannelCodestringKaynak kanalÖrn. ERP
KurobjectTRY karşılığı toplamlarDövizli senaryolarda kullanılır.

Alici

AlanTipVKN alıcıTCKN alıcı
VknTcknstring10 hane11 hane
UnvanstringZorunluKullanılmaz
Ad, SoyadstringKullanılmazİkisi de zorunlu
VergiDairestringZorunluKullanılmaz
AdresobjectZorunluZorunlu

AliciAdres

Alan grubuAlanlarKural
Zorunlu çekirdekUlke, Semt, SehirÜlke, ilçe/semt ve şehir doldurulur.
Açık adresMahalle, CaddeSokak, BinaAd, BinaNo, KapiNo, KasabaKoy, PostaKodAlıcıyı tanımlayacak yeterlilikte gönderilir.
İletişimTelefon, TelefaxVarsa gönderilir.

MalHizmet

Alan grubuAlanlarİş anlamı
KimlikLineId, Id, MalHizmetAdSatır sırası, dış/satır referansı ve hizmet açıklaması
Brüt ve KDVTotalAmount, KdvOran, HesaplananKdvSatır hizmet bedeli ve hesaplanan KDV
StopajStopajOran, TaxStopajTotalAmount, NetUcretBrüt üzerinden gelir vergisi kesintisi
TevkifatTevkifatOran, TevkifatKodu, WithholdingTaxTotalAmount, TaxKdvTotalAmountKDV üzerinden tevkifat ve kalan KDV
SonuçPayableAmount, ToplamVergi, KalemVergiSatır nihai tutarı ve vergi ayrıntısı

VergiGrup, Vergi ve Tevkifat

ModelAlanlarKullanım
VergiGrupVergiler[], Tevkifatlar[], ToplamVergiKalem veya belge düzeyinde vergi/kesinti ayrıntıları
VergiMatrah, VergiTutar, VergiOran, VergiOranVarMi, VergiKoduVergi matrahı, oranı, tutarı ve kodu
TevkifatTevkifatKodu, TevkifatTutar, TevkifatOranTevkifat kodu, oranı ve tutarı

Kur

Dövizli belgede toplamların TRY karşılığını taşır: TotalAmount, NetUcret, HesaplananKdv, TaxStopajTotalAmount, WithholdingTaxTotalAmount, TaxKdvTotalAmount ve PayableAmount.

Enum Değerleri

AlanDeğerAnlam
OutgoingSmmStatusPdfCreatedBelge ve PDF çıktısı oluşturuldu
SignedBelge imzalı duruma ulaştı
GonderimSekliKagit / ElektronikTeslim şekli

Response — Belge Detay

EndpointData modeliKritik alanlar
OluşturmaOutgoingAddSmmReponseModelHasError, Errors[], SmmNumber, UUId
GüncellemeOutgoingUpdateSmmResponseModelAynı iş sonucu ve belge kimlikleri
DetayOutgoingSmmReponseModelBaşlık, taraf, satır, vergi ve toplam modeli
ListeSearchResponseModel<OutgoingSmmSummaryResponseModel>UUID, alıcı, tarih, tutarlar, e-posta, belge/rapor/iptal durumları
PDFOutgoingSmmPdfResponseModelSmmPdfFileBytes

Başarılı oluşturma yanıtı

{
  "RefreshToken": "",
  "Data": {
    "HasError": false,
    "Errors": [],
    "SmmNumber": "SMM2026000000001",
    "UUId": "6b60c576-7ed9-4bf1-9f90-3c97747b7470"
  }
}
Başarı kararı: Data.HasError = false olmalı; numara ve UUID aynı Data nesnesinden alınmalıdır.

İçerik doğrulama yanıtı

{
  "RefreshToken": "",
  "Data": {
    "HasError": true,
    "Errors": [
      {
        "ErrorCode": "SMM010",
        "ErrorMessage": "Para Birimi TRY olmadığı durumda döviz kuru zorunludur."
      }
    ],
    "SmmNumber": null,
    "UUId": null
  }
}
Başarısız kabul: HasError = true iken belge oluşturulmuş kabul edilmez. Hata listesi tamamı okunmalı, veri düzeltilmeli ve mükerrerlik kontrolünden sonra tekrar gönderilmelidir.