API Referansı

İndirip Muhasebe API v1 — LucaNet Ticari REST servislerini saran güvenli entegrasyon katmanı. Tüm alanlar, enum değerleri ve koşullu zorunluluklar aşağıda eksiksiz olarak dokümante edilmiştir.

Genel Bakış

Tüm istekler https://muhasebe.indirip.com/api/v1 altında çalışır. HTTPS zorunludur. Gövdeler (request body) JSON formatındadır.

ÖzellikDeğer
Base URLhttps://muhasebe.indirip.com/api/v1
İçerik tipiapplication/json;charset=UTF-8
KimlikHMAC-SHA256 imzalı header
OturumOtomatik yönetilir (LucaNet jsession 25 dk cache)
Tarih formatıGG/AA/YYYY — örn. 18/04/2026
Saat formatıHH24:MM — örn. 14:30
Tarih+saatGG/AA/YYYY hh24:mm:ss (response alanlarında)

Boolean Konvansiyonu (E/H)

LucaNet tüm boolean/bayrak alanlarda Türkçe kısaltma kullanır:

E — Evet (true, aktif, hesapla, varsayılan)
H — Hayır (false, pasif, hesaplama, devre dışı)

Örnekler: alici: "E", satici: "H", aktif: "E", kdvHesapla: "E", bosOlarakGuncelle: "H", internettenSatis: "E".

Döviz Kodları

TL — Türk Lirası (varsayılan)
USD — Amerikan Doları
EUR — Avro
GBP — İngiliz Sterlini

Boş kur gönderildiğinde LucaNet belge tarihine ait TCMB döviz kurunu otomatik çeker.

Kart Tipleri (kartTipId)

1 — Muhasebe Kartı
2 — Banka Kartı
3 — Cari Kartı
4 — Stok Kartı
5 — Kasa Kartı

KDV Oranları

0 — Muaf
1 — %1
8 — %8
18 — %18

Standart Response Yapısı

Aşağı hemen her endpoint'in yanıtı bu iskeleti paylaşır. Endpoint bölümlerinde sadece endpoint'e özgü json.* alanları listelenir; aşağıdaki session ve message alanları her yanıtta ortaktır:

{
  "ok": true,
  "data": {
    "session": {
      "jsession_id": "<string>",
      "kullanici": {
        "kullaniciAdi": "<string>",
        "musteriId":    <long>,
        "firmaId":      <long>,
        "firmaAdi":     "<string>",
        "donemKod":     <long>,
        "donemBas":     "GG/AA/YYYY",
        "donemBit":     "GG/AA/YYYY",
        "eposta":       "<string>"
      }
    },
    "message": "<string>",
    "json":    { /* endpoint'e özgü alanlar — aşağı bkz */ },
    "error":   false
  }
}
Ortak Response AlanıTipAçıklama
session.jsession_idStringLucaNet oturum kimliği (gateway tarafından yönetilir, genelde yok sayabilirsin)
session.kullanici.kullaniciAdiStringLucaNet'e login olan kullanıcı kodu
session.kullanici.musteriIdLong8 haneli LucaNet müşteri numarası
session.kullanici.firmaIdLongLucaNet firma kimliği
session.kullanici.firmaAdiStringFirma unvanı
session.kullanici.donemKodLongAktif dönem kodu (örn. 202601)
session.kullanici.donemBasStringDönem başlangıç tarihi. Belge tarihleri bu tarihten önce olamaz.
session.kullanici.donemBitStringDönem bitiş tarihi. Belge tarihleri bu tarihten sonra olamaz.
session.kullanici.epostaStringKullanıcının kayıtlı e-posta adresi
messageStringİşlem sonucu açıklaması (başarılı/hata)
errorBooleanLucaNet iş kuralı hatası varsa true

Kimlik Doğrulama

Her endpoint (sadece /health hariç) dört header bekler. Bu header'lar olmadan veya hatalı gönderilirse 401 UNAUTHORIZED döner.

HeaderAçıklama
X-Api-Keyİstemci adı (örn. laravel-panel) — config.php → api_clients'taki anahtar
X-TimestampUnix epoch (saniye). Sunucu saatinden ±5 dk tolerans var.
X-Nonce16 karakter rastgele hex — her istekte farklı, replay saldırısına karşı
X-SignatureHMAC-SHA256 imza (hex encoded). Hesaplama aşağıda.

İmza hesaplama

string_to_sign = METHOD + "\n" + REQUEST_URI + "\n" + TIMESTAMP + "\n" + NONCE + "\n" + sha256(BODY_RAW)
signature      = hmac_sha256(string_to_sign, SECRET)  // hex encoded, küçük harf

Notlar:

  • REQUEST_URI → tam path + query string (/api/v1/cari/ekle veya /api/v1/cari/liste?page=2)
  • BODY_RAW → ham JSON string. Gövde yoksa boş string'in sha256'sı alınır.
  • SECRET → istemci başına üretilir, sadece istemci tarafında (Laravel .env) saklanır.
  • İmza eşleşmezse 401 döner — yapılan isteğin içeriği kesinlikle karşı tarafa iletilmez.

Yanıt Formatı & Hata Kodları

Başarılı (200):

{ "ok": true, "data": { /* LucaNet'in ham yanıtı */ } }

Hata:

{ "ok": false, "error": "ERROR_CODE", "message": "İnsan okuyabilir açıklama" }
HTTPerrorAnlamı
400BAD_JSONİstek gövdesi geçersiz JSON
401UNAUTHORIZEDİmza / timestamp / api key doğrulanamadı
403FORBIDDENIP whitelist veya istemci devre dışı
404NOT_FOUNDEndpoint yok
405METHOD_NOT_ALLOWEDYanlış HTTP method
422VALIDATIONGirdi doğrulama hatası. fields alanında alan bazlı detay döner.
422LUCANET_BUSINESSLucaNet iş kuralı reddi (mükerrer kayıt, dönem dışı tarih, KDV uyumsuzluğu vb.). raw alanında LucaNet'in ham yanıtı döner.
500SERVER_ERRORBeklenmedik sunucu hatası (bootstrap, konfigürasyon vb.)
502LUCANET_ERRORLucaNet'e erişim / iletişim hatası (DNS, SSL, timeout)

Laravel'den Çağrı Örneği

HMAC imzalı istek için paylaşılabilir bir istemci sınıfı:

// config/services.php
'muhasebe_api' => [
    'base'   => 'https://muhasebe.indirip.com/api/v1',
    'key'    => 'laravel-panel',
    'secret' => env('MUHASEBE_API_SECRET'),
],

// app/Services/MuhasebeApiClient.php
use Illuminate\Support\Facades\Http;

class MuhasebeApiClient
{
    public function post(string $path, array $body = []): array
    {
        $cfg  = config('services.muhasebe_api');
        $json = json_encode($body, JSON_UNESCAPED_UNICODE);

        $ts    = (string) time();
        $nonce = bin2hex(random_bytes(8));
        $uri   = '/api/v1' . $path;

        $str = implode("\n", ['POST', $uri, $ts, $nonce, hash('sha256', $json)]);
        $sig = hash_hmac('sha256', $str, $cfg['secret']);

        return Http::withHeaders([
            'X-Api-Key'    => $cfg['key'],
            'X-Timestamp'  => $ts,
            'X-Nonce'      => $nonce,
            'X-Signature'  => $sig,
            'Content-Type' => 'application/json;charset=UTF-8',
        ])->withBody($json, 'application/json')->post($cfg['base'] . $path)->json();
    }
}

Kullanım:

$client = new MuhasebeApiClient();
$res = $client->post('/fatura/kes', [
    'faturaTipi'     => 102,
    'cariKart'       => 'CR000042',
    'seriNo'         => 'A2026000001',
    'tarih'          => '18/04/2026',
    'efaturaSenaryo' => 1,
    'detaylar' => [[
        'stokKart'   => 'STK001',
        'miktar'     => 2,
        'birimFiyat' => 100,
        'tutar'      => 200,
        'kdvOran'    => 20,
        'birim'      => 'ADET',
    ]],
]);

Cari (Müşteri / Tedarikçi)

Cari kart yönetimi. 5 endpoint. Zorunlu: kart.kartKodu. alici ve satici'dan en az biri "E" olmalıdır.

Üst seviye ve alt obje yapısı: Cari kartı, üst seviye alanlar (alici/satici, kimlik bilgileri) + kart alt objesi (kart kodu, adı, aktif, muhasebeKarti vb.) + opsiyonel adres alt objesidir.

Cari Ekle

POST /api/v1/cari/ekle

LucaNet ham endpoint: POST /service/rest/cari/add

Minimal Örnek

{
  "alici": "E",
  "satici": "H",
  "vergiNo": "1234567890",
  "vergiDairesiKodu": "034276",
  "unvani": "Örnek Teknoloji Ltd Şti",
  "earsivGonderimSekli": "ELEKTRONIK",
  "kart": {
    "kartKodu": "CR000042",
    "kartAdi": "Örnek Teknoloji",
    "dovizKod": "TL",
    "aktif": "E"
  },
  "adres": {
    "tanim": "Fatura Adresi",
    "il": "İstanbul",
    "ilce": "Ümraniye",
    "adresMetin": "Atatürk Mah. Barbaros Cad. No:5",
    "postaKodu": "34776",
    "eposta": "muhasebe@ornek.com"
  }
}

Request Alanları — Üst Seviye

AlanZorunluTipAçıklama
aliciKoşulluStringCarinin müşteri olup olmadığı. E ya da H. Boş ise varsayılan H. alici veya satici'dan en az biri E olmalıdır.
saticiKoşulluStringCarinin tedarikçi olup olmadığı. E ya da H. Boş ise varsayılan H.
cariKartTipIdHayırLongCari kart tipi. Enum: 1=Ortak, 2=Personel, 3=İlgili Kişi, 4=Üye, 5=Avans
vergiNoHayırStringTüzel kişilik için vergi numarası (10 hane)
vergiDairesiKoduHayırStringBağlı olunan vergi dairesi kodu (vergi_dairesi_listesi.xlsx'ten — örn. 034276)
unvaniHayırStringCari unvan bilgisi
tcKimlikNoHayırLongGerçek kişi için 11 haneli TC kimlik numarası
adiHayırStringGerçek kişi için ad
soyadiHayırStringGerçek kişi için soyad
earsivGonderimSekliHayırStringE-Belge gönderim tipi. Değerler: ELEKTRONIK (e-posta) veya KAGIT

Request Alanları — kart Alt Objesi (Zorunlu)

AlanZorunluTipAçıklama
kart.kartKoduEvetStringCari için benzersiz kart kodu. Daha sonra değiştirilemez.
kart.kartAdiHayırStringKart adı
kart.dovizKodHayırStringDöviz kodu. Boş ise TL.
kart.ozelKod1HayırStringGruplama için özel kod 1
kart.ozelKod2HayırStringGruplama için özel kod 2
kart.aciklamaHayırStringSerbest açıklama
kart.aktifHayırStringE/H. Boş ise E.
kart.muhasebeKartiHayırStringLuca Mali Müşavir aktarımı için muhasebe hesap kodu. Boş ise LucaNet otomatik belirler (örn. M01 → 120.M01 müşteri, T01 → 320.T01 tedarikçi).

Request Alanları — adres Alt Objesi (Opsiyonel)

AlanTipAçıklama
adres.adresNoStringAdres takip numarası
adres.tanimStringAdres tanımı (örn. "Fatura Adresi", "Şube Adresi")
adres.ilStringİl
adres.ilceStringİlçe
adres.mahalleStringMahalle
adres.bucakStringBucak
adres.beldeKoyStringBelde/Köy
adres.disKapiNoStringDış kapı numarası
adres.icKapiNoStringİç kapı numarası
adres.adresMetinStringAçık adres
adres.postaKoduStringPosta kodu
adres.tel1 / tel2 / tel3StringTelefon numaraları (3 adet)
adres.faksStringFaks
adres.epostaStringE-posta
adres.webAdresiStringWeb adresi
adres.aktifStringE/H. Boş ise E.
adres.csbmStringCadde/Sokak/Bulvar/Meydan numarası
adres.csbmTipStringTür: C=Cadde, S=Sokak, B=Bulvar, M=Meydan
adres.ulkeStringÜlke

Response — json.* Alanları

Gönderilen alanların tümü geri döner. Ek olarak:

AlanTipAçıklama
json.vergiDairesiIdLongLucaNet'teki vergi dairesi kimliği (kodtan çözülmüş)
json.kart.kartIdLongOluşturulan cari kartın LucaNet ID'si
json.kart.kartTipIdLong3 (Cari Kartı) döner
json.kart.muhasebeKartIdLongOtomatik eşleşen muhasebe kartının LucaNet ID'si
json.kart.ekleyenStringKaydı oluşturan kullanıcı
json.kart.eklemeTarihiStringKayıt zamanı (GG/AA/YYYY hh24:mm:ss)
json.adres.firmaId, musteriId, adresIletisimIdLongSistem atadığı kimlik bilgileri

Cari Güncelle

POST /api/v1/cari/guncelle

LucaNet ham endpoint: POST /service/rest/cari/edit

Kısmi güncelleme mantığı: Boş gönderilen alanlar güncellenmez — mevcut değer korunur. Bir alanı zorla boşaltmak için bosOlarakGuncelle: "E" gönder.

Minimal Örnek — Sadece E-posta Güncelle

{
  "kart": { "kartKodu": "CR000042" },
  "adres": { "eposta": "yeni@ornek.com" }
}

Ek Alan (diğer tüm alanlar /ekle ile aynı)

AlanZorunluTipAçıklama
bosOlarakGuncelleHayırString"E" gönderildiğinde şu alanlar boş olarak güncellenebilir: vergiNo, vergiDairesiKodu, unvani, tcKimlikNo, adi, soyadi, kart.aciklama.
kart.kartKoduEvetStringHangi cariyi güncelleyeceğini belirler. Kendisi güncellenemez.

Cari Sorgu

POST /api/v1/cari/sorgu

LucaNet ham endpoint: POST /service/rest/cari/select

Request Alanları

AlanZorunluTipAçıklama
cariKartKoduEvetStringSorgulanacak cari kart kodu
bakiyeliHayırString"E" gönderilirse json.kart.bakiye alanı da döner

Response — Ek Alan (bakiyeli: "E" ise)

AlanTipAçıklama
json.kart.bakiye.borcDoubleBorç (cari döviz cinsinden)
json.kart.bakiye.alacakDoubleAlacak
json.kart.bakiye.tlBorcDoubleBorç (TL)
json.kart.bakiye.tlAlacakDoubleAlacak (TL)

Cari Liste

POST /api/v1/cari/liste

LucaNet ham endpoint: POST /service/rest/cari/list

Request Alanları

AlanZorunluTipAçıklama
pageNumberHayırintSayfa numarası. 1 → 1-500, 2 → 501-1000, ... Boş ise 1.
tarihBasParamHayırStringEkleme/güncelleme tarihi başlangıç filtresi (GG/AA/YYYY)
tcKimlikNoParamHayırStringTC kimlik numarasıyla arama
vergiKimlikNoParamHayırStringVergi kimlik numarasıyla arama

Response — Koleksiyon

AlanTipAçıklama
collection.list[]ArrayCari kayıtları (her eleman /sorgu response'u ile aynı yapıda)
collection.fullListSizeintToplam kayıt sayısı (sayfalama için)
collection.pageNumberintDönen sayfa numarası

E-Fatura Mükellef Sorgusu

POST /api/v1/cari/efatura-mukellef

LucaNet ham endpoint: POST /service/rest/cari/search

Karşı tarafın GİB'de e-fatura mükellefi olup olmadığını kontrol eder. Mükellef listesi günlük güncellenir — gün içi değişiklikler yansımayabilir.

Request Alanları

AlanZorunluTipAçıklama
tcknVknParamEvetStringTC Kimlik No (11 hane) veya Vergi Kimlik No (10 hane)

Response — json.*

AlanTipAçıklama
json.tcKimlikNoStringSorgulanan TCKN (varsa)
json.vergiKimlikNoStringSorgulanan VKN (varsa)
json.firmaAdiStringFirma ünvanı
json.adi / soyadiStringGerçek kişi için ad/soyad
json.kayitTarihiStringGİB e-fatura sistemine kayıt tarihi (GG/AA/YYYY)
json.tipStringFirma tipi: ÖZEL veya KAMU
json.efaturaMukellefiBooleantrue ise mükellef

Stok

Stok kartı yönetimi. 3 endpoint. Üst seviye alanlar + zorunlu kart alt objesi yapısı kullanılır.

Stok Tipleri (stokTipi)

0 — Ticari Mal (varsayılan)
1 — Hammadde
2 — Yarı Mamul
13 — Mamul
3 — Masraf (Genel Üretim)
4 — Masraf (Gen. Yönetim)
5 — Masraf (Paz. Satış)
6 — Masraf (Ar-Ge)
7 — Hizmet
8 — Sabit Kıymet (Demirbaş)
9 — Sabit Kıymet (Diğer)
10 — Sabit Kıymet (Tesis/Mk/Cihaz)
11 — Sabit Kıymet (Taşıtlar)
12 — İşçilik

Stok Ekle

POST/api/v1/stok/ekle

LucaNet ham endpoint: POST /service/rest/stok/add

Minimal Örnek

{
  "stokTipi": 0,
  "birim": "ADET",
  "satisTutar": 100.00,
  "satisKdvOran": 20,
  "alisKdvOran": 20,
  "kart": {
    "kartKodu": "STK001",
    "kartAdi": "Örnek Ürün",
    "dovizKod": "TL",
    "aktif": "E"
  }
}

Request Alanları — Üst Seviye (Stok Özellikleri)

AlanZorunluTipAçıklama
birimHayırStringStok birim kodu. LucaNet "Stok Birim Tanım" menüsünde kayıtlı olmalı (örn. ADET, KG, METRE)
stokTipiHayırLongYukarıdaki enum'dan bir değer. Boş ise 0 (Ticari Mal)
satisTutarHayırDoubleVarsayılan satış birim fiyatı (satış faturasında otomatik doldurma için)
alisTutarHayırDoubleVarsayılan alış birim fiyatı
alisKdvOranHayırLongVarsayılan alış KDV oranı (0/1/8/18)
satisKdvOranHayırLongVarsayılan satış KDV oranı
alisOtvOranHayırDoubleVarsayılan alış ÖTV oranı
satisOtvOranHayırDoubleVarsayılan satış ÖTV oranı

Request Alanları — Muhasebe Hesap Kodları (Hepsi Opsiyonel)

Boş bırakılan hesap kodları için LucaNet otomatik varsayılan atar. Özelleştirmek istiyorsan hesabın muhasebe kartları modülünde tanımlı olması gerekir.
AlanAçıklama
alisHesapKoduAlış faturalarında kullanılır (örn. 153)
satisHesapKoduSatış faturalarında (örn. 600)
alisIadeHesapKoduAlış iade faturalarında
satisIadeHesapKoduSatış iade faturalarında (örn. 610)
alisIskontoHesapKoduAlış iskonto hesabı
satisIskontoHesapKoduSatış iskonto hesabı
sayimEksigiHesapKodu / sayimFazlasiHesapKoduStok sayım farkları
otvAlisHesapKodu / otvAlisIadeHesapKoduÖTV alış ve iade hesapları
otvSatisHesapKodu / otvSatisIadeHesapKoduÖTV satış ve iade hesapları
stokFireHesapKoduStok fire hesabı
stopajHesapKodu / stopajGelirHesapKoduStopaj gider / gelir hesapları
uretimeCikisHesapKodu / uretimdenGirisHesapKoduÜretim hareketlerine özel

Request Alanları — kart Alt Objesi (Zorunlu)

AlanZorunluTipAçıklama
kart.kartKoduEvetStringBenzersiz stok kart kodu
kart.kartAdiEvetStringStok kart adı
kart.dovizKodHayırStringBoş ise TL
kart.ozelKod1 / ozelKod2HayırStringGruplama için özel kodlar
kart.aciklamaHayırStringAçıklama
kart.aktifHayırStringE/H. Boş ise E.

Response — json.* Ek Alanları

AlanTipAçıklama
json.kart.kartIdLongLucaNet'teki stok kartı ID
json.kart.kartTipIdLong4 (Stok Kartı)
json.kart.muhasebeKartIdLongOtomatik eşleşen muhasebe kartı ID
json.kart.ekleyen / eklemeTarihiStringKayıt kullanıcısı ve zamanı

Stok Sorgu

POST/api/v1/stok/sorgu

LucaNet ham endpoint: POST /service/rest/stok/select

Request Alanları

AlanZorunluTipAçıklama
stokKartKoduEvetStringSorgulanacak stok kart kodu
bakiyeliHayırString"E" ise bakiye bilgisi de döner

Response — json.bakiye (bakiyeli: "E" ise)

AlanTipAçıklama
json.bakiye.borc / alacakDoubleTutar bazında borç/alacak
json.bakiye.tlBorc / tlAlacakDoubleTL cinsi
json.bakiye.borcMiktar / alacakMiktarDoubleFiziksel miktar (adet, kg vs.)

Stok Liste

POST/api/v1/stok/liste

LucaNet ham endpoint: POST /service/rest/stok/list. Sayfa başına 500 kayıt.

Request Alanları

AlanZorunluTipAçıklama
pageNumberHayırintSayfa numarası. Boş ise 1.

Response — Koleksiyon

collection.list[] her eleman: kart bilgileri + satisTutar, alisTutar, satisKdvOran, stokTipi, birim vb. özellikler.

Fatura

Fatura oluşturma, sorgulama ve PDF linki alma. E-fatura / e-arşiv entegratörüne otomatik gönderim tetiklenir. Sistemin en büyük ve en kritik modülüdür.

Fatura Tipleri (faturaTipi)

100 — Alış Faturası
101 — Alış İade Faturası
102 — Satış Faturası
103 — Satış İade Faturası

E-Fatura Senaryoları (efaturaSenaryo)

0 — Temel
1 — Ticari
2 — İhracat
3 — Yolcu Beraber
4 — Bedelsiz İhracat
5 — Kamu
6 — Enerji

Boş bırakılırsa: 1) cari kartında tanımlı "EFatura Senaryo" değeri kullanılır, 2) yoksa firma işlemlerinde tanımlı varsayılan alınır.

Ödeme Türleri (paymentType — internet satış)

KREDIKARTI_BANKAKARTI
EFT_HAVALE
KAPIDA_ODEME
ODEME_ARACISI
DIGER

Fatura Kes

POST/api/v1/fatura/kes

LucaNet ham endpoint: POST /service/rest/faturaWs/add

Minimal Örnek — Satış Faturası (Ticari E-Fatura)

{
  "faturaTipi": 102,
  "efaturaSenaryo": 1,
  "fatura": {
    "cariKart": "CR000042",
    "cariKartAdi": "Örnek Teknoloji Ltd"
  },
  "hareket": {
    "seriNo": "A2026000001",
    "tarih": "18/04/2026",
    "dovizKod": "TL",
    "aciklama": "Yazılım hizmeti"
  },
  "detaylar": [{
    "stokKart": "STK-HIZMET-01",
    "miktar": 1,
    "birim": "ADET",
    "birimFiyat": 10000,
    "tutar": 10000,
    "kdvOran": 20
  }]
}

Request Alanları — Üst Seviye (Kontrol Bayrakları)

AlanZorunluTipAçıklama
faturaTipiEvetLong100-103 enum'undan
efaturaSenaryoHayırLong0-6 enum'undan. Boş ise cari/firma varsayılanı.
kdvHesaplaHayırString"E" ise satır KDV tutarları LucaNet tarafından hesaplanır. Örn: tutar=200, kdvOran=18kdvTutar=36 otomatik doldurulur. Gateway varsayılanı: "E".
tutarlariHesaplaHayırString"E" ise KDV + iskonto + ÖTV + ÖİV tutarları oranlar üzerinden hesaplanır. Gateway varsayılanı: "E".
faturaAltiIskontoHayırDoubleKDV dahil toplam üzerinden iskonto tutarı. Satırlara KDV dahil toplam tutarlarına oranlanarak dağıtılır.
varsayilanEfaturaIstisnaKodHayırIntegerKDV tutarı 0 olan satırlara atanacak varsayılan e-fatura istisna kodu (satır bazında tanımlı değilse)

Request Alanları — fatura Alt Objesi

AlanZorunluTipAçıklama
fatura.cariKartEvetStringCari kart kodu
fatura.cariKartAdiHayırStringCari kart adı (doğrulama)
fatura.kasaKart / kasaKartAdiHayırStringNakit işlem için kasa kart kodu/adı
fatura.kasaTutarKoşulluDoubleFaturaya bağlı makbuz oluşturmak için kasaKart ile birlikte zorunlu
fatura.adresHayırStringFatura adresi
fatura.irsaliyeliHayırString"E"/"H". Boş ise H.
fatura.faturaTipHayırStringFatura Tipleri menüsünde tanımlı "Tanım" değeri
fatura.fiiliIhracatTarihiHayırStringİhracat faturalarında (GG/AA/YYYY)
fatura.isnetBayiNoHayırStringİsnet bayi numarası
fatura.kurFarkiHayırStringKur farkı faturası ise "E"
fatura.siparisNo / siparisTarihiHayırStringSipariş referans bilgileri
fatura.efaVergiDairesiKoduHayırStringE-fatura için vergi dairesi kodu

Request Alanları — E-Fatura / E-Arşiv Carisi Override

AlanZorunluTipAçıklama
fatura.cariKartTcknVknHayırStringE-fatura/e-arşiv'de kullanılacak TCKN/VKN. Boş ise cari karttan alınır.
fatura.cariAdi / cariSoyadi / cariUnvaniHayırStringOverride bilgileri. Boş ise cari kart kullanılır.
fatura.efaIl / efaIlce / efaMahalleHayırStringE-fatura adres override. Boş ise cari kartın fatura adresi kullanılır.

Request Alanları — İnternet Satış Faturası (internettenSatis: "E" ise)

AlanZorunluTipAçıklama
fatura.internettenSatisHayırString"E" ise internet satış faturasıdır — aşağıdaki alanlar zorunlu hale gelir
fatura.ebelgeGonderimSekliEvetStringELEKTRONIK veya KAGIT
fatura.cariEpostaEvetStringebelgeGonderimSekli = ELEKTRONIK ise zorunlu
fatura.paymentTypeEvetStringYukarıdaki ödeme türleri enum'undan
fatura.paymentMediatorNameKoşulluStringpaymentType = ODEME_ARACISI ise zorunlu
fatura.otherPaymentTypeKoşulluStringpaymentType = DIGER ise zorunlu. Max 255 karakter.
fatura.paymentDateEvetStringÖdeme tarihi (GG/AA/YYYY)
fatura.webAddressEvetStringWeb adresi. Max 255 karakter.
fatura.sendingDateEvetStringGönderim tarihi
fatura.carrierName / carrierVknTcknEvetStringKargo firması adı ve VKN/TCKN (10 veya 11 hane)

Request Alanları — Yolcu Beraber (efaturaSenaryo = 3)

AlanZorunluTipAçıklama
fatura.turistAdi / turistSoyadiKoşulluStringMax 100 karakter
fatura.turistUyrukKoşulluString2 haneli ülke kodu
fatura.turistPasaportNoKoşulluStringMax 100 karakter
fatura.pasaportVerilmeTarihiKoşulluStringGG/AA/YYYY
fatura.araciKurumKoşulluString1=Global Blue, 2=Tax Free Zone, 3=Turkrefund, 4=MR Turistik, 5=DSD

Request Alanları — Enerji Senaryosu (efaturaSenaryo = 6)

AlanZorunluTipAçıklama
fatura.enerjiTipKoşulluInteger0=Şarj, 1=Şarj Anlık
fatura.enerjiESURaporIDKoşulluStringŞarj ünite rapor ID (UUID formatında). Şarj tipinde zorunlu.
fatura.enerjiESURaporIDTarihKoşulluStringRapor tarihi (GG/AA/YYYY)
fatura.enerjiPeriodBasTarih / BasSaatKoşulluStringŞarj başlangıç tarih+saati (GG/AA/YYYY / HH24:MM)
fatura.enerjiPeriodBitTarih / BitSaatKoşulluStringŞarj bitiş tarih+saati
fatura.enerjiPlaka / enerjiAracKimlikNoHayırStringAraç plaka ve kimlik numarası
Enerji faturalarında satırdaki stokun LucaNet tanımında "Şarj Ünitesi Seri No" bilgisi olmalı, detaylar[].birim "Kilowatt Saat" olarak e-fatura birim tanımına sahip olmalıdır.

Request Alanları — Alış İade (Elektronik)

AlanZorunluTipAçıklama
fatura.returnInvoiceNoKoşulluStringİade edilen orijinal fatura numarası
fatura.returnInvoiceDateKoşulluStringOrijinal fatura tarihi (GG/AA/YYYY)
fatura.returnInvoiceReasonKoşulluStringİade nedeni

Request Alanları — hareket (Belge Üst Bilgileri)

AlanZorunluTipAçıklama
hareket.seriNoEvetStringBelge seri numarası
hareket.siraNoHayırStringBoş ise sistem atar
hareket.tarihEvetStringGG/AA/YYYY
hareket.saatHayırStringHH24:MM
hareket.vadeTarihiHayırStringVade tarihi
hareket.dovizKod / kurHayırString/DoubleBoş ise TL / TCMB
hareket.aciklamaHayırStringAçıklama
hareket.ozelKod1 / grupKodTanimHayırStringÖzel/grup kodları
hareket.entegrasyonIdHayırStringMükerrer engelleme anahtarı. Önerilir.
hareket.makbuzOlusturHayırString"E" ise makbuz da oluşturulur. kasaKart, kasaTutar, makbuzSeriNo zorunlu.
hareket.makbuzSeriNo / makbuzSiraNoKoşulluStringMakbuz oluşturuluyorsa seri no zorunlu, sıra no opsiyonel.
hareket.serbestAlan1..25HayırString/Long25 adet serbest alan (LucaNet'te önceden tanımlı olmalı). 7, 8, 17, 18 → Long, 9-15, 19-21 → tarih, diğerleri String.

Request Alanları — krediKartlar[]

AlanZorunluTipAçıklama
krediKartlar[].sozlesmeKodEvetStringPOS sözleşme kodu
krediKartlar[].kkTutarEvetDoubleKredi kartı ile ödenen tutar
krediKartlar[].taksitSayisiHayırIntegerBoş ise tek çekim

Request Alanları — detaylar[] (Fatura Kalemi)

AlanZorunluTipAçıklama
detaylar[].stokKartEvetStringStok kart kodu
detaylar[].stokKartAdiHayırStringStok kart adı (doğrulama)
detaylar[].miktarEvetDoubleMiktar
detaylar[].birimEvetStringLucaNet'te tanımlı birim
detaylar[].birimFiyatEvetDoubleBirim fiyat
detaylar[].tutarEvetDoubleSatır tutarı (döviz cinsi)
detaylar[].tlTutarHayırDoubleTL cinsi (boş ise hesaplanır)
detaylar[].dovizKod / kurHayırBoş ise TL / TCMB
detaylar[].aciklamaHayırStringSatır açıklama
detaylar[].depoKodHayırStringDepo kodu

Request Alanları — detaylar[] Vergi Alanları

AlanZorunluTipAçıklama
detaylar[].kdvTurHayırStringKDV türü (O=Oran, S=Stopaj vb.)
detaylar[].kdvOranHayırLong0 / 1 / 8 / 18
detaylar[].kdvTutarHayırDoubleKDV tutarı (kdvHesapla="E" ise doldurulur)
detaylar[].tevkifatKodKoşulluStringtevkifatTutar > 0 ise zorunlu. 2/10, 3/10, 4/10, 5/10, 7/10, 9/10, 10/10 (Tam Tevkifat), 20/20 (Tecil KDV)
detaylar[].tevkifatTutarHayırDoubleTevkifat tutarı
detaylar[].iskontoTur / iskontoOran / iskontoTutarHayırSatır bazında iskonto
detaylar[].oivOranHayırLongÖİV: 0, 5, 7.5, 15, 25
detaylar[].oivTutarHayırDoubleÖİV tutarı
detaylar[].otvOran / otvTutarHayırDoubleÖTV bilgileri
detaylar[].damgaVergisiOranHayırDouble0.0189, 0.00569, 0.00759, 0.00948
detaylar[].damgaVergisiTutarHayırDoubleDamga vergisi tutarı
detaylar[].konaklamaVergisiOranHayırDouble0.00, 0.01, 0.02
detaylar[].konaklamaVergisiTutarHayırDoubleKonaklama vergisi tutarı
detaylar[].konaklamaVergisiIstisnaHayırStringKonaklama 0.00 ise istisna kodu (001)
detaylar[].efaturaIstisnaKodHayırIntegerE-fatura KDV istisna kodu. Boş ise stok kartındaki ön tanım kullanılır.
detaylar[].efaturaTevkifatKodHayırIntegerE-fatura KDV tevkifat kodu
detaylar[].efaturaOzelMatrahKodHayırIntegerE-fatura özel matrah kodu
detaylar[].efaturadaGostermeHayırString"E" ise satır e-fatura çıktısında görünmez, tutarı bir önceki satıra eklenir (turizm için)
detaylar[].kamuMenseiKoşulluStringefaturaSenaryo=5 (Kamu) ise stokun menşei (UBL ülke kodu)

Request Alanları — detaylar[].dagilimList[] (Maliyet Merkezi)

AlanZorunluTipAçıklama
dagilimIsKoduEvetStringİş takip/masraf merkezi kodu
dagilimTutarEvetDoubleDağıtım tutarı
dagilimMiktar / dagilimAciklamaHayırMiktar ve açıklama

Response — json.* Önemli Alanlar

AlanTipAçıklama
json.faturaTipiLongFatura tipi
json.fatura.faturaIdStringFaturanın LucaNet ID'si — sonraki sorgu/pdf çağrıları için
json.fatura.hareket.hareketIdLongHareket (belge) kimliği
json.fatura.hareket.seriNo / siraNo / tarihKaydedilen seri/sıra/tarih
json.fatura.hareket.tamamlandiStringE/H — Luca MMP'ye aktarılmaya hazır mı?
json.fatura.hareket.muhasebelesirStringHer zaman E
json.fatura.hareket.muhasebelestiStringHer zaman H (otomatik aktarılmıyor)
json.detaylar[]ArrayKaydedilen satırlar (hesaplanmış kdvTutar/otvTutar vb. dahil)
json.krediKartlar[]ArrayKaydedilen kredi kartı ödemeleri

Fatura Sorgu

POST/api/v1/fatura/sorgu

LucaNet ham endpoint: POST /service/rest/faturaWs/select

Minimal Örnek

{ "fatura": { "faturaId": 12345 } }

Request Alanları

AlanZorunluTipAçıklama
fatura.faturaIdEvetLongKes response'undan alınan faturaId

Response — Ek Alan

data.invoiceStatus alanı elektronik faturalar için entegratörden alınan durum bilgisini içerir:

ONAY_BEKLIYOR
ONAYLANDI
REDDEDILDI
ONAY_AKISINDA
IADE_EDILDI
GONDERILDI
ZIPLENDI
GIBE_ILETILDI
IMZA_BEKLIYOR
GIB_TARAFINDA_HATA_OLUSTU
SISTEM_HATASI
ALICI_KABUL_ETTI
ALICI_REDDETTI
ALICI_IADE_ETTI
OTOMATIK_ONAYLANDI
OTOMATIK_ALICI_KABUL_ETTI
UYGULAMA_YANITI_YOLLANIYOR
UYGULAMA_YANITI_HATA_ALDI
IRSALIYE_YANITI_YOLLANIYOR
IRSALIYE_YANITI_HATA_ALDI

Fatura PDF Linki

POST/api/v1/fatura/pdf

LucaNet ham endpoint: POST /service/rest/efaturaEarsivGonderim/select

E-fatura/e-arşiv entegratöründen alınan PDF indirme linkini döner (json.externalPdfUrl).

Minimal Örnek

{ "fatura": { "faturaId": 12345 } }

Response — Ek Alan

AlanTipAçıklama
json.externalPdfUrlStringFaturanın PDF indirme URL'i

İrsaliye

Sevk belgesi (e-irsaliye / matbu). Oluşturma ve silme. Fatura ile benzer yapı, ek olarak sevk ve taşıyıcı bilgileri.

İrsaliye Tipleri (faturaTipi)

104 — Alış İrsaliyesi
105 — Alış İade İrsaliyesi
106 — Satış İrsaliyesi
107 — Satış İade İrsaliyesi

İrsaliye Kes

POST/api/v1/irsaliye/kes

LucaNet ham endpoint: POST /service/rest/irsaliyeWs/add

Minimal Örnek — Satış İrsaliyesi

{
  "faturaTipi": 106,
  "fatura": {
    "cariKart": "CR000042",
    "sevkTarih": "18/04/2026",
    "sevkSaat": "14:30",
    "plaka": "34 ABC 123"
  },
  "hareket": {
    "seriNo": "IR2026000001",
    "tarih": "18/04/2026"
  },
  "detaylar": [{
    "stokKart": "STK001",
    "miktar": 5,
    "birim": "ADET",
    "birimFiyat": 100,
    "tutar": 500,
    "kdvOran": 20
  }]
}

Request Alanları — Üst Seviye

AlanZorunluTipAçıklama
faturaTipiEvetLong104-107 enum'undan biri
kdvHesaplaHayırString"E" ise KDV tutarı LucaNet tarafından hesaplanır (varsayılan)
tutarlariHesaplaHayırString"E" ise KDV/iskonto/ÖTV/ÖİV tutarları oranlar üzerinden hesaplanır

Request Alanları — fatura Alt Objesi

AlanZorunluTipAçıklama
fatura.cariKartEvetStringİrsaliye carisinin kart kodu
fatura.cariKartAdiHayırStringCari adı (opsiyonel)
fatura.adresHayırStringSevk adresi
fatura.sevkTarihHayırStringSevk tarihi (GG/AA/YYYY)
fatura.sevkSaatHayırStringSevk saati (HH24:MM)
fatura.siparisNoHayırStringİlgili sipariş numarası
fatura.siparisTarihiHayırStringSipariş tarihi
fatura.isnetBayiNoHayırStringE-irsaliye ağ bayi numarası
fatura.tasiyiciVergiNoHayırStringTaşıyıcı vergi/TC kimlik numarası
fatura.tasiyiciUnvanHayırStringTaşıyıcı unvanı
fatura.plakaHayırStringAraç plakası
fatura.matbudanHayırStringMatbu irsaliyeden oluşturuluyorsa "E"
fatura.matbuTarih / matbuSeriNo / matbuSiraNoHayırStringMatbu evrak referans bilgileri
fatura.tasimaIrsaliyesiHayırString"E" ise taşıma irsaliyesi / maden sevk fişi

Request Alanları — hareket

AlanZorunluTipAçıklama
hareket.seriNoEvetStringBelge seri no
hareket.siraNoHayırStringBoş ise sistem atar
hareket.tarihEvetStringBelge tarihi (GG/AA/YYYY)
hareket.ozelKod1HayırStringÖzel kod
hareket.grupKodTanimHayırStringFirma grup kodu
hareket.dovizKodHayırStringBoş ise TL
hareket.kurHayırDoubleBoş ise TCMB
hareket.aciklamaHayırStringAçıklama
hareket.serbestAlan1...25HayırString/Long25 adet serbest alan (LucaNet "Fatura/İrsaliye Serbest Alan Tanımları" menüsünde önceden tanımlanmalı). 7, 8, 17, 18 → Long; 9-15, 19-21 → tarih (GG/AA/YYYY); diğerleri → String

Request Alanları — detaylar[]

AlanZorunluTipAçıklama
detaylar[].stokKartEvetStringStok kart kodu
detaylar[].miktarEvetDoubleMiktar
detaylar[].birimEvetStringBirim (LucaNet'te tanımlı)
detaylar[].birimFiyatEvetDoubleBirim fiyat
detaylar[].tutarEvetDoubleSatır tutarı (döviz cinsi)
detaylar[].tlTutarHayırDoubleTL cinsi tutar (boş ise hesaplanır)
detaylar[].dovizKodHayırStringBoş ise TL
detaylar[].kurHayırDoubleBoş ise TCMB
detaylar[].kdvOranHayırLong0/1/8/18
detaylar[].kdvTutarHayırDoubleKDV tutarı (kdvHesapla="E" ise doldurulur)
detaylar[].kdvTurHayırStringKDV türü (örn. O=Oran)
detaylar[].aciklamaHayırStringSatır açıklama

Request Alanları — detaylar[].dagilimList[] (Maliyet Merkezi Dağılımı)

AlanZorunluTipAçıklama
dagilimIsKoduEvetStringİş takip/masraf merkezi kodu
dagilimTutarEvetDoubleDağıtılan tutar
dagilimMiktarHayırDoubleMiktar
dagilimAciklamaHayırStringAçıklama

Request Alanları — soforList[] ve dorseList[]

AlanZorunluTipAçıklama
soforList[].ad / soyadEvetStringŞoför ad ve soyad
soforList[].tcknEvetLong11 haneli TC kimlik
dorseList[].plakaEvetStringDorse plakası

İrsaliye Sil

POST/api/v1/irsaliye/sil

LucaNet ham endpoint: POST /service/rest/irsaliyeWs/delete

Minimal Örnek

{ "fatura": { "faturaId": 12345 } }

Request Alanları

AlanZorunluTipAçıklama
fatura.faturaIdEvetLongSilinecek irsaliyenin LucaNet'teki kimliği (kes response'undan alınır)

Tahsilat

Virman tahsilat (banka havale/EFT, nakit, kredi kartı). 1 endpoint. Tek çağrıda birden fazla detay satırı gönderilebilir.

Detay Tipleri

2 — Banka (Havale/EFT)
5 — Kasa (Nakit)
7 — Kredi Kartı

Tahsilat Ekle

POST/api/v1/tahsilat/ekle

LucaNet ham endpoint: POST /service/rest/tahsilat/add

Minimal Örnek — Banka Havale Tahsilatı

{
  "cariKartKodu": "CR000042",
  "hareket": {
    "seriNo": "TH2026000001",
    "tarih": "18/04/2026",
    "dovizKod": "TL",
    "aciklama": "Nisan 2026 tahsilatı"
  },
  "detaylar": [
    { "tip": 2, "tutar": 1000.00, "kart": "102.01.001" }
  ]
}

Minimal Örnek — Kredi Kartı Tahsilatı (3 Taksit)

{
  "cariKartKodu": "CR000042",
  "hareket": { "seriNo": "TH2026000002", "tarih": "18/04/2026" },
  "detaylar": [{
    "tip": 7,
    "kart": "108.01.001",
    "krediKartiForm": {
      "sozlesmeKod": "POS-YAPIKREDI-01",
      "kkTutar": 1500.00,
      "taksitSayisi": 3
    }
  }]
}

Request Alanları — Üst Seviye

AlanZorunluTipAçıklama
cariKartKoduEvetStringTahsilat yapılacak carinin kart kodu
cariKartKurHayırDoubleCarinin döviz kodu TL değilse kur. TL ise 1.0. Boş ise TCMB'den çekilir.

Request Alanları — hareket Alt Objesi

AlanZorunluTipAçıklama
hareket.seriNoEvetStringBelge seri numarası
hareket.siraNoHayırStringSıra numarası. Boş ise sistem atar.
hareket.tarihEvetStringBelge tarihi (GG/AA/YYYY)
hareket.dovizKodHayırStringBoş ise TL
hareket.kurHayırDoubleBoş ise TCMB kuru
hareket.aciklamaHayırStringAçıklama
hareket.entegrasyonIdHayırStringMükerrer kayıt engelleme anahtarı (senin sistemindeki belge ID'si)

Request Alanları — detaylar[] (En az 1 Satır Zorunlu)

AlanZorunluTipAçıklama
detaylar[].tipEvetLongYukarıdaki enum: 2 / 5 / 7
detaylar[].tutarKoşulluDoubleTip 2 veya 5 için zorunlu
detaylar[].kartEvetStringBanka / kasa / POS kartının LucaNet kodu
detaylar[].kurHayırDoubleSatır kuru. Boş ise TCMB.
detaylar[].aciklamaHayırStringSatır açıklama

Request Alanları — detaylar[].krediKartiForm (tip=7 için)

AlanZorunluTipAçıklama
sozlesmeKodEvetStringLucaNet'te kayıtlı POS sözleşme kodu
kkTutarEvetDoubleKredi kartı ile çekilen tutar
taksitSayisiHayırIntegerBoş ise tek çekim (1)

Response — json.*

Gönderilen alanlar + sistem atanan hareket.siraNo (boş göndermişsen) döner. detaylar[] her satır için aynı yapı tekrarlanır.

Ödeme

Virman ödeme (banka havale/EFT, nakit). 1 endpoint. Tahsilat'tan farkı: kredi kartı (tip 7) desteklenmez — yalnızca banka (2) ve kasa (5).

Ödeme Ekle

POST/api/v1/odeme/ekle

LucaNet ham endpoint: POST /service/rest/odeme/add

Minimal Örnek

{
  "cariKartKodu": "CR000042",
  "hareket": {
    "seriNo": "OD2026000001",
    "tarih": "18/04/2026",
    "dovizKod": "TL",
    "aciklama": "Tedarikçi ödemesi"
  },
  "detaylar": [
    { "tip": 2, "tutar": 500.00, "kart": "102.01.001" }
  ]
}

Request Alanları

AlanZorunluTipAçıklama
cariKartKoduEvetStringÖdeme yapılacak cari kart kodu
cariKartKurHayırDoubleDövizli cari için. Boş ise TCMB.
hareket.seriNoEvetStringBelge seri no
hareket.siraNoHayırStringBoş ise sistem atar
hareket.tarihEvetStringGG/AA/YYYY
hareket.dovizKodHayırStringBoş ise TL
hareket.kurHayırDoubleBoş ise TCMB
hareket.aciklamaHayırStringAçıklama
detaylar[].tipEvetLong2=Banka, 5=Kasa. Kredi kartı desteklenmez.
detaylar[].tutarEvetDoubleÖdeme tutarı
detaylar[].kartEvetStringBanka/kasa kart kodu
detaylar[].kurHayırDoubleSatır kuru. Boş ise TCMB.
detaylar[].aciklamaHayırStringSatır açıklama

Muhasebe Fişi

Muhasebe fişi aktarımı — yevmiye kayıtları, devir/açılış/kapanış, tahakkuk ve kur değerleme.

Fiş Tipleri (tip)

M — Muhasebe Fişi
D — Devir Fişi
A — Açılış Fişi
Z — Kapanış Fişi
T — Tahakkuk Fişi
K — Kur Değerleme Fişi
Kısıt: Dönemde A (Açılış) ve Z (Kapanış) fişlerinden yalnızca birer adet olabilir. Zaten var olan bir dönem için tekrar gönderim reddedilir.

Satır Kart Tipleri (detaylar[].kartTipId)

1 — Muhasebe Kartı
2 — Banka Kartı
3 — Cari Kartı
4 — Stok Kartı
5 — Kasa Kartı

Stok İşlem Tipleri (detaylar[].islemTipi, kartTipId=4 için)

1 — Alış
2 — Alış İade
3 — Satış
4 — Satış İade

Muhasebe Fişi Ekle

POST/api/v1/muhasebe-fisi/ekle

LucaNet ham endpoint: POST /service/rest/muhasebeFisWs/add

Minimal Örnek — Basit Yevmiye Fişi (Dengeli)

{
  "tip": "M",
  "hareket": {
    "seriNo": "MF2026000001",
    "tarih": "18/04/2026",
    "aciklama": "Nisan kira gideri"
  },
  "detaylar": [
    { "borcAlacak": "B", "tutar": 5000, "tlTutar": 5000, "kartTipId": 1, "kart": "770.01.001" },
    { "borcAlacak": "A", "tutar": 5000, "tlTutar": 5000, "kartTipId": 5, "kart": "100.01.001" }
  ]
}
Otomatik tamamlanma: Satırlardaki toplam borç TL = toplam alacak TL olduğunda fiş tamamlandi: "E" olarak işaretlenir ve Luca Mali Müşavir Paketi'ne aktarıma hazırdır.

Request Alanları — Üst Seviye

AlanZorunluTipAçıklama
tipEvetStringYukarıdaki enum'dan bir değer

Request Alanları — hareket

AlanZorunluTipAçıklama
hareket.seriNoEvetStringBelge seri no
hareket.siraNoHayırStringBoş ise sistem atar
hareket.tarihEvetStringGG/AA/YYYY
hareket.dovizKodHayırStringBoş ise TL
hareket.kurHayırDoubleBoş ise TCMB
hareket.aciklamaHayırStringAçıklama
hareket.ozelKod1HayırStringÖzel kod
hareket.grupKodTanimHayırStringFirma grup kodu
hareket.entegrasyonIdHayırStringMükerrer engelleme anahtarı

Request Alanları — detaylar[] (En az 2 Satır, Borç=Alacak)

AlanZorunluTipAçıklama
detaylar[].borcAlacakEvetStringB (Borç) veya A (Alacak)
detaylar[].tutarEvetDoubleSatır tutarı (döviz cinsi)
detaylar[].tlTutarEvetDoubleTL cinsi tutar — fiş dengesi bu alana göre kontrol edilir
detaylar[].dovizKodHayırStringBoş ise TL
detaylar[].kurHayırDoubleBoş ise TCMB
detaylar[].kartTipIdEvetLongYukarıdaki kart tipi enum'undan
detaylar[].kartEvetStringİlgili kart kodu (muhasebe / banka / cari / stok / kasa)
detaylar[].muhasebeKartiHayırStringCari/stok/banka/kasa kartı için ilişkili muhasebe hesap kodu. Boş bırakmak önerilir — LucaNet otomatik eşler.
detaylar[].aciklamaHayırStringSatır açıklama
detaylar[].miktarKoşulluDoublekartTipId=4 (stok) için zorunlu
detaylar[].islemTipiKoşulluLongkartTipId=4 için zorunlu. Yukarıdaki stok işlem enum'u.
detaylar[].birimKoşulluStringkartTipId=4 için zorunlu. LucaNet'te tanımlı stok birim kodu.
detaylar[].masrafMerkezKodHayırStringMasraf merkezi kodu

Response — json.*

AlanTipAçıklama
json.tipStringKaydedilen fiş tipi
json.hareket.hareketIdLongBelge ID
json.hareket.hareketTipIdLong900=Muhasebe, 901=Devir, 902=Açılış, 903=Kur, 904=Tahakkuk, 905=Kapanış
json.hareket.tamamlandiStringE (borç=alacak) veya H (dengesiz)
json.hareket.muhasebelesirStringLuca MMP'ye aktarılabilir mi: E
json.hareket.muhasebelestiStringAktarıldı mı: otomatik aktarma olmadığından H
json.detaylar[].muhasebeFisDetayIdLongSatır kimliği
json.detaylar[].kartDovizKod / kartKur / kartTutarKartın kendi döviz/kur/tutar bilgileri (sistem otomatik hesaplar)

Muhasebe Hesap Kartı

Hesap planına yeni kart ekleme. Cari ve stok kartları için LucaNet otomatik muhasebe kartı eşleştirmesi yapar; bu endpoint özel bir hesap kodu tanımlaman gerektiğinde kullanılır.

Muhasebe Kartı Ekle

POST/api/v1/muhasebe-karti/ekle

LucaNet ham endpoint: POST /service/rest/muhasebe/add

Minimal Örnek

{
  "kart": {
    "kartKodu": "120.01.042",
    "kartAdi": "Örnek Teknoloji Ltd - Alacak",
    "dovizKod": "TL",
    "aktif": "E"
  }
}

Request Alanları — kart Objesi

AlanZorunluTipAçıklama
kart.kartKoduEvetStringMuhasebe hesap kodu. Benzersiz ve muhasebe standardına uygun olmalı (örn. 120.01.042, 320.01.015)
kart.kartAdiEvetStringHesap adı
kart.dovizKodHayırStringBoş ise TL
kart.ozelKod1 / ozelKod2HayırStringGruplama için
kart.aciklamaHayırStringAçıklama
kart.aktifHayırStringE/H. Boş ise E.

Response — json.kart.*

AlanTipAçıklama
json.kart.kartIdLongOluşturulan muhasebe kartı ID
json.kart.kartTipIdLong1 (Muhasebe Kartı)
json.kart.ekleyen / eklemeTarihiStringKayıt kullanıcısı ve zamanı (GG/AA/YYYY hh24:mm:ss)
json.kart.gunleyen / gunlemeTarihiStringGüncelleme bilgisi (varsa)

Gider Pusulası

Fatura düzenleyemeyen kişilere yapılan gider veya satış iade kaydı.

Gider Türleri (giderTuru)

1 — Gider (varsayılan)
2 — Satış İade

Tevkifat Kodları (tevkifatKod)

2/10
3/10
4/10
5/10
7/10
9/10
10/10 (Tam Tevkifat)
20/20 (Tecil KDV)

Tam liste için EFatura_Ozel_Kodlar.xlsx'e bak — tevkifat türlerinin açıklamaları (yük taşımacılığı, özel güvenlik, temizlik vb.) dahil.

Gelir Vergisi Oranları (gelirVergisiOran)

0.75
1
2
3
4
5
8
10
15
17
20
22
100

Gider Pusulası Ekle

POST/api/v1/gider-pusulasi/ekle

LucaNet ham endpoint: POST /service/rest/giderPusulasi/add

Minimal Örnek

{
  "cariKart": "CR000042",
  "kasaKart": "100.01.001",
  "giderTuru": "1",
  "hareket": {
    "seriNo": "GP2026000001",
    "tarih": "18/04/2026",
    "aciklama": "Nakliye gideri"
  },
  "detaylar": [{
    "stokKart": "STK-NAKLIYE",
    "miktar": 1,
    "birimFiyat": 500,
    "tutar": 500,
    "kdvOran": 0,
    "gelirVergisiOran": 20
  }]
}

Request Alanları — Üst Seviye

AlanZorunluTipAçıklama
cariKartEvetStringCari kart kodu
kasaKartHayırStringKasa kart kodu (nakit ödeme yapıldıysa)
giderTuruHayırString1 veya 2. Boş ise 1.

Request Alanları — hareket

AlanZorunluTipAçıklama
hareket.seriNoEvetStringBelge seri numarası
hareket.siraNoHayırStringBoş ise sistem atar
hareket.tarihEvetStringGG/AA/YYYY
hareket.ozelKod1HayırStringÖzel kod
hareket.aciklamaHayırStringAçıklama

Request Alanları — detaylar[]

AlanZorunluTipAçıklama
detaylar[].stokKartEvetStringStok kart kodu
detaylar[].miktarEvetDoubleMiktar
detaylar[].birimFiyatEvetDoubleBirim fiyat
detaylar[].tutarEvetDoubleSatır tutarı
detaylar[].kdvOranHayırLong0/1/8/18
detaylar[].kdvTutarHayırDoubleKDV tutarı (otomatik hesaplanmıyorsa ver)
detaylar[].tevkifatKodHayırStringYukarıdaki tevkifat kodlarından
detaylar[].tevkifatTutarHayırDoubleTevkifat tutarı
detaylar[].gelirVergisiOranHayırLongYukarıdaki enum'dan
detaylar[].gelirVergisiTutarHayırDoubleGelir vergisi tutarı
detaylar[].aciklamaHayırStringSatır açıklama

Response — Ek Alanlar

AlanTipAçıklama
json.hareket.hareketIdLongBelge ID
json.hareket.hareketTipIdLongSabit: 109 (gider pusulası)