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.
| Özellik | Değer |
|---|---|
| Base URL | https://muhasebe.indirip.com/api/v1 |
| İçerik tipi | application/json;charset=UTF-8 |
| Kimlik | HMAC-SHA256 imzalı header |
| Oturum | Otomatik yönetilir (LucaNet jsession 25 dk cache) |
| Tarih formatı | GG/AA/YYYY — örn. 18/04/2026 |
| Saat formatı | HH24:MM — örn. 14:30 |
| Tarih+saat | GG/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 — AvroGBP — İngiliz SterliniBoş 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 — Muaf1 — %18 — %818 — %18Standart 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ı | Tip | Açıklama |
|---|---|---|
| session.jsession_id | String | LucaNet oturum kimliği (gateway tarafından yönetilir, genelde yok sayabilirsin) |
| session.kullanici.kullaniciAdi | String | LucaNet'e login olan kullanıcı kodu |
| session.kullanici.musteriId | Long | 8 haneli LucaNet müşteri numarası |
| session.kullanici.firmaId | Long | LucaNet firma kimliği |
| session.kullanici.firmaAdi | String | Firma unvanı |
| session.kullanici.donemKod | Long | Aktif dönem kodu (örn. 202601) |
| session.kullanici.donemBas | String | Dönem başlangıç tarihi. Belge tarihleri bu tarihten önce olamaz. |
| session.kullanici.donemBit | String | Dönem bitiş tarihi. Belge tarihleri bu tarihten sonra olamaz. |
| session.kullanici.eposta | String | Kullanıcının kayıtlı e-posta adresi |
| message | String | İşlem sonucu açıklaması (başarılı/hata) |
| error | Boolean | LucaNet 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.
| Header | Açıklama |
|---|---|
| X-Api-Key | İstemci adı (örn. laravel-panel) — config.php → api_clients'taki anahtar |
| X-Timestamp | Unix epoch (saniye). Sunucu saatinden ±5 dk tolerans var. |
| X-Nonce | 16 karakter rastgele hex — her istekte farklı, replay saldırısına karşı |
| X-Signature | HMAC-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/ekleveya/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
401dö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" }
| HTTP | error | Anlamı |
|---|---|---|
| 400 | BAD_JSON | İstek gövdesi geçersiz JSON |
| 401 | UNAUTHORIZED | İmza / timestamp / api key doğrulanamadı |
| 403 | FORBIDDEN | IP whitelist veya istemci devre dışı |
| 404 | NOT_FOUND | Endpoint yok |
| 405 | METHOD_NOT_ALLOWED | Yanlış HTTP method |
| 422 | VALIDATION | Girdi doğrulama hatası. fields alanında alan bazlı detay döner. |
| 422 | LUCANET_BUSINESS | LucaNet 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. |
| 500 | SERVER_ERROR | Beklenmedik sunucu hatası (bootstrap, konfigürasyon vb.) |
| 502 | LUCANET_ERROR | LucaNet'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.
kart alt objesi (kart kodu, adı, aktif, muhasebeKarti vb.) + opsiyonel adres alt objesidir.
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
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| alici | Koşullu | String | Carinin müşteri olup olmadığı. E ya da H. Boş ise varsayılan H. alici veya satici'dan en az biri E olmalıdır. |
| satici | Koşullu | String | Carinin tedarikçi olup olmadığı. E ya da H. Boş ise varsayılan H. |
| cariKartTipId | Hayır | Long | Cari kart tipi. Enum: 1=Ortak, 2=Personel, 3=İlgili Kişi, 4=Üye, 5=Avans |
| vergiNo | Hayır | String | Tüzel kişilik için vergi numarası (10 hane) |
| vergiDairesiKodu | Hayır | String | Bağlı olunan vergi dairesi kodu (vergi_dairesi_listesi.xlsx'ten — örn. 034276) |
| unvani | Hayır | String | Cari unvan bilgisi |
| tcKimlikNo | Hayır | Long | Gerçek kişi için 11 haneli TC kimlik numarası |
| adi | Hayır | String | Gerçek kişi için ad |
| soyadi | Hayır | String | Gerçek kişi için soyad |
| earsivGonderimSekli | Hayır | String | E-Belge gönderim tipi. Değerler: ELEKTRONIK (e-posta) veya KAGIT |
Request Alanları — kart Alt Objesi (Zorunlu)
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| kart.kartKodu | Evet | String | Cari için benzersiz kart kodu. Daha sonra değiştirilemez. |
| kart.kartAdi | Hayır | String | Kart adı |
| kart.dovizKod | Hayır | String | Döviz kodu. Boş ise TL. |
| kart.ozelKod1 | Hayır | String | Gruplama için özel kod 1 |
| kart.ozelKod2 | Hayır | String | Gruplama için özel kod 2 |
| kart.aciklama | Hayır | String | Serbest açıklama |
| kart.aktif | Hayır | String | E/H. Boş ise E. |
| kart.muhasebeKarti | Hayır | String | Luca 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)
| Alan | Tip | Açıklama |
|---|---|---|
| adres.adresNo | String | Adres takip numarası |
| adres.tanim | String | Adres tanımı (örn. "Fatura Adresi", "Şube Adresi") |
| adres.il | String | İl |
| adres.ilce | String | İlçe |
| adres.mahalle | String | Mahalle |
| adres.bucak | String | Bucak |
| adres.beldeKoy | String | Belde/Köy |
| adres.disKapiNo | String | Dış kapı numarası |
| adres.icKapiNo | String | İç kapı numarası |
| adres.adresMetin | String | Açık adres |
| adres.postaKodu | String | Posta kodu |
| adres.tel1 / tel2 / tel3 | String | Telefon numaraları (3 adet) |
| adres.faks | String | Faks |
| adres.eposta | String | E-posta |
| adres.webAdresi | String | Web adresi |
| adres.aktif | String | E/H. Boş ise E. |
| adres.csbm | String | Cadde/Sokak/Bulvar/Meydan numarası |
| adres.csbmTip | String | Tür: C=Cadde, S=Sokak, B=Bulvar, M=Meydan |
| adres.ulke | String | Ülke |
Response — json.* Alanları
Gönderilen alanların tümü geri döner. Ek olarak:
| Alan | Tip | Açıklama |
|---|---|---|
| json.vergiDairesiId | Long | LucaNet'teki vergi dairesi kimliği (kodtan çözülmüş) |
| json.kart.kartId | Long | Oluşturulan cari kartın LucaNet ID'si |
| json.kart.kartTipId | Long | 3 (Cari Kartı) döner |
| json.kart.muhasebeKartId | Long | Otomatik eşleşen muhasebe kartının LucaNet ID'si |
| json.kart.ekleyen | String | Kaydı oluşturan kullanıcı |
| json.kart.eklemeTarihi | String | Kayıt zamanı (GG/AA/YYYY hh24:mm:ss) |
| json.adres.firmaId, musteriId, adresIletisimId | Long | Sistem atadığı kimlik bilgileri |
Cari Güncelle
LucaNet ham endpoint: POST /service/rest/cari/edit
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ı)
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| bosOlarakGuncelle | Hayır | String | "E" gönderildiğinde şu alanlar boş olarak güncellenebilir: vergiNo, vergiDairesiKodu, unvani, tcKimlikNo, adi, soyadi, kart.aciklama. |
| kart.kartKodu | Evet | String | Hangi cariyi güncelleyeceğini belirler. Kendisi güncellenemez. |
Cari Sorgu
LucaNet ham endpoint: POST /service/rest/cari/select
Request Alanları
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| cariKartKodu | Evet | String | Sorgulanacak cari kart kodu |
| bakiyeli | Hayır | String | "E" gönderilirse json.kart.bakiye alanı da döner |
Response — Ek Alan (bakiyeli: "E" ise)
| Alan | Tip | Açıklama |
|---|---|---|
| json.kart.bakiye.borc | Double | Borç (cari döviz cinsinden) |
| json.kart.bakiye.alacak | Double | Alacak |
| json.kart.bakiye.tlBorc | Double | Borç (TL) |
| json.kart.bakiye.tlAlacak | Double | Alacak (TL) |
Cari Liste
LucaNet ham endpoint: POST /service/rest/cari/list
Request Alanları
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| pageNumber | Hayır | int | Sayfa numarası. 1 → 1-500, 2 → 501-1000, ... Boş ise 1. |
| tarihBasParam | Hayır | String | Ekleme/güncelleme tarihi başlangıç filtresi (GG/AA/YYYY) |
| tcKimlikNoParam | Hayır | String | TC kimlik numarasıyla arama |
| vergiKimlikNoParam | Hayır | String | Vergi kimlik numarasıyla arama |
Response — Koleksiyon
| Alan | Tip | Açıklama |
|---|---|---|
| collection.list[] | Array | Cari kayıtları (her eleman /sorgu response'u ile aynı yapıda) |
| collection.fullListSize | int | Toplam kayıt sayısı (sayfalama için) |
| collection.pageNumber | int | Dönen sayfa numarası |
E-Fatura Mükellef Sorgusu
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ı
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| tcknVknParam | Evet | String | TC Kimlik No (11 hane) veya Vergi Kimlik No (10 hane) |
Response — json.*
| Alan | Tip | Açıklama |
|---|---|---|
| json.tcKimlikNo | String | Sorgulanan TCKN (varsa) |
| json.vergiKimlikNo | String | Sorgulanan VKN (varsa) |
| json.firmaAdi | String | Firma ünvanı |
| json.adi / soyadi | String | Gerçek kişi için ad/soyad |
| json.kayitTarihi | String | GİB e-fatura sistemine kayıt tarihi (GG/AA/YYYY) |
| json.tip | String | Firma tipi: ÖZEL veya KAMU |
| json.efaturaMukellefi | Boolean | true 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 — Hammadde2 — Yarı Mamul13 — Mamul3 — Masraf (Genel Üretim)4 — Masraf (Gen. Yönetim)5 — Masraf (Paz. Satış)6 — Masraf (Ar-Ge)7 — Hizmet8 — Sabit Kıymet (Demirbaş)9 — Sabit Kıymet (Diğer)10 — Sabit Kıymet (Tesis/Mk/Cihaz)11 — Sabit Kıymet (Taşıtlar)12 — İşçilikStok 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)
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| birim | Hayır | String | Stok birim kodu. LucaNet "Stok Birim Tanım" menüsünde kayıtlı olmalı (örn. ADET, KG, METRE) |
| stokTipi | Hayır | Long | Yukarıdaki enum'dan bir değer. Boş ise 0 (Ticari Mal) |
| satisTutar | Hayır | Double | Varsayılan satış birim fiyatı (satış faturasında otomatik doldurma için) |
| alisTutar | Hayır | Double | Varsayılan alış birim fiyatı |
| alisKdvOran | Hayır | Long | Varsayılan alış KDV oranı (0/1/8/18) |
| satisKdvOran | Hayır | Long | Varsayılan satış KDV oranı |
| alisOtvOran | Hayır | Double | Varsayılan alış ÖTV oranı |
| satisOtvOran | Hayır | Double | Varsayılan satış ÖTV oranı |
Request Alanları — Muhasebe Hesap Kodları (Hepsi Opsiyonel)
| Alan | Açıklama |
|---|---|
| alisHesapKodu | Alış faturalarında kullanılır (örn. 153) |
| satisHesapKodu | Satış faturalarında (örn. 600) |
| alisIadeHesapKodu | Alış iade faturalarında |
| satisIadeHesapKodu | Satış iade faturalarında (örn. 610) |
| alisIskontoHesapKodu | Alış iskonto hesabı |
| satisIskontoHesapKodu | Satış iskonto hesabı |
| sayimEksigiHesapKodu / sayimFazlasiHesapKodu | Stok sayım farkları |
| otvAlisHesapKodu / otvAlisIadeHesapKodu | ÖTV alış ve iade hesapları |
| otvSatisHesapKodu / otvSatisIadeHesapKodu | ÖTV satış ve iade hesapları |
| stokFireHesapKodu | Stok fire hesabı |
| stopajHesapKodu / stopajGelirHesapKodu | Stopaj gider / gelir hesapları |
| uretimeCikisHesapKodu / uretimdenGirisHesapKodu | Üretim hareketlerine özel |
Request Alanları — kart Alt Objesi (Zorunlu)
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| kart.kartKodu | Evet | String | Benzersiz stok kart kodu |
| kart.kartAdi | Evet | String | Stok kart adı |
| kart.dovizKod | Hayır | String | Boş ise TL |
| kart.ozelKod1 / ozelKod2 | Hayır | String | Gruplama için özel kodlar |
| kart.aciklama | Hayır | String | Açıklama |
| kart.aktif | Hayır | String | E/H. Boş ise E. |
Response — json.* Ek Alanları
| Alan | Tip | Açıklama |
|---|---|---|
| json.kart.kartId | Long | LucaNet'teki stok kartı ID |
| json.kart.kartTipId | Long | 4 (Stok Kartı) |
| json.kart.muhasebeKartId | Long | Otomatik eşleşen muhasebe kartı ID |
| json.kart.ekleyen / eklemeTarihi | String | Kayıt kullanıcısı ve zamanı |
Stok Sorgu
LucaNet ham endpoint: POST /service/rest/stok/select
Request Alanları
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| stokKartKodu | Evet | String | Sorgulanacak stok kart kodu |
| bakiyeli | Hayır | String | "E" ise bakiye bilgisi de döner |
Response — json.bakiye (bakiyeli: "E" ise)
| Alan | Tip | Açıklama |
|---|---|---|
| json.bakiye.borc / alacak | Double | Tutar bazında borç/alacak |
| json.bakiye.tlBorc / tlAlacak | Double | TL cinsi |
| json.bakiye.borcMiktar / alacakMiktar | Double | Fiziksel miktar (adet, kg vs.) |
Stok Liste
LucaNet ham endpoint: POST /service/rest/stok/list. Sayfa başına 500 kayıt.
Request Alanları
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| pageNumber | Hayır | int | Sayfa 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 — Temel1 — Ticari2 — İhracat3 — Yolcu Beraber4 — Bedelsiz İhracat5 — Kamu6 — EnerjiBoş 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_BANKAKARTIEFT_HAVALEKAPIDA_ODEMEODEME_ARACISIDIGERFatura 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ı)
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| faturaTipi | Evet | Long | 100-103 enum'undan |
| efaturaSenaryo | Hayır | Long | 0-6 enum'undan. Boş ise cari/firma varsayılanı. |
| kdvHesapla | Hayır | String | "E" ise satır KDV tutarları LucaNet tarafından hesaplanır. Örn: tutar=200, kdvOran=18 → kdvTutar=36 otomatik doldurulur. Gateway varsayılanı: "E". |
| tutarlariHesapla | Hayır | String | "E" ise KDV + iskonto + ÖTV + ÖİV tutarları oranlar üzerinden hesaplanır. Gateway varsayılanı: "E". |
| faturaAltiIskonto | Hayır | Double | KDV dahil toplam üzerinden iskonto tutarı. Satırlara KDV dahil toplam tutarlarına oranlanarak dağıtılır. |
| varsayilanEfaturaIstisnaKod | Hayır | Integer | KDV 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
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| fatura.cariKart | Evet | String | Cari kart kodu |
| fatura.cariKartAdi | Hayır | String | Cari kart adı (doğrulama) |
| fatura.kasaKart / kasaKartAdi | Hayır | String | Nakit işlem için kasa kart kodu/adı |
| fatura.kasaTutar | Koşullu | Double | Faturaya bağlı makbuz oluşturmak için kasaKart ile birlikte zorunlu |
| fatura.adres | Hayır | String | Fatura adresi |
| fatura.irsaliyeli | Hayır | String | "E"/"H". Boş ise H. |
| fatura.faturaTip | Hayır | String | Fatura Tipleri menüsünde tanımlı "Tanım" değeri |
| fatura.fiiliIhracatTarihi | Hayır | String | İhracat faturalarında (GG/AA/YYYY) |
| fatura.isnetBayiNo | Hayır | String | İsnet bayi numarası |
| fatura.kurFarki | Hayır | String | Kur farkı faturası ise "E" |
| fatura.siparisNo / siparisTarihi | Hayır | String | Sipariş referans bilgileri |
| fatura.efaVergiDairesiKodu | Hayır | String | E-fatura için vergi dairesi kodu |
Request Alanları — E-Fatura / E-Arşiv Carisi Override
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| fatura.cariKartTcknVkn | Hayır | String | E-fatura/e-arşiv'de kullanılacak TCKN/VKN. Boş ise cari karttan alınır. |
| fatura.cariAdi / cariSoyadi / cariUnvani | Hayır | String | Override bilgileri. Boş ise cari kart kullanılır. |
| fatura.efaIl / efaIlce / efaMahalle | Hayır | String | E-fatura adres override. Boş ise cari kartın fatura adresi kullanılır. |
Request Alanları — İnternet Satış Faturası (internettenSatis: "E" ise)
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| fatura.internettenSatis | Hayır | String | "E" ise internet satış faturasıdır — aşağıdaki alanlar zorunlu hale gelir |
| fatura.ebelgeGonderimSekli | Evet | String | ELEKTRONIK veya KAGIT |
| fatura.cariEposta | Evet | String | ebelgeGonderimSekli = ELEKTRONIK ise zorunlu |
| fatura.paymentType | Evet | String | Yukarıdaki ödeme türleri enum'undan |
| fatura.paymentMediatorName | Koşullu | String | paymentType = ODEME_ARACISI ise zorunlu |
| fatura.otherPaymentType | Koşullu | String | paymentType = DIGER ise zorunlu. Max 255 karakter. |
| fatura.paymentDate | Evet | String | Ödeme tarihi (GG/AA/YYYY) |
| fatura.webAddress | Evet | String | Web adresi. Max 255 karakter. |
| fatura.sendingDate | Evet | String | Gönderim tarihi |
| fatura.carrierName / carrierVknTckn | Evet | String | Kargo firması adı ve VKN/TCKN (10 veya 11 hane) |
Request Alanları — Yolcu Beraber (efaturaSenaryo = 3)
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| fatura.turistAdi / turistSoyadi | Koşullu | String | Max 100 karakter |
| fatura.turistUyruk | Koşullu | String | 2 haneli ülke kodu |
| fatura.turistPasaportNo | Koşullu | String | Max 100 karakter |
| fatura.pasaportVerilmeTarihi | Koşullu | String | GG/AA/YYYY |
| fatura.araciKurum | Koşullu | String | 1=Global Blue, 2=Tax Free Zone, 3=Turkrefund, 4=MR Turistik, 5=DSD |
Request Alanları — Enerji Senaryosu (efaturaSenaryo = 6)
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| fatura.enerjiTip | Koşullu | Integer | 0=Şarj, 1=Şarj Anlık |
| fatura.enerjiESURaporID | Koşullu | String | Şarj ünite rapor ID (UUID formatında). Şarj tipinde zorunlu. |
| fatura.enerjiESURaporIDTarih | Koşullu | String | Rapor tarihi (GG/AA/YYYY) |
| fatura.enerjiPeriodBasTarih / BasSaat | Koşullu | String | Şarj başlangıç tarih+saati (GG/AA/YYYY / HH24:MM) |
| fatura.enerjiPeriodBitTarih / BitSaat | Koşullu | String | Şarj bitiş tarih+saati |
| fatura.enerjiPlaka / enerjiAracKimlikNo | Hayır | String | Araç plaka ve kimlik numarası |
detaylar[].birim "Kilowatt Saat" olarak e-fatura birim tanımına sahip olmalıdır.
Request Alanları — Alış İade (Elektronik)
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| fatura.returnInvoiceNo | Koşullu | String | İade edilen orijinal fatura numarası |
| fatura.returnInvoiceDate | Koşullu | String | Orijinal fatura tarihi (GG/AA/YYYY) |
| fatura.returnInvoiceReason | Koşullu | String | İade nedeni |
Request Alanları — hareket (Belge Üst Bilgileri)
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| hareket.seriNo | Evet | String | Belge seri numarası |
| hareket.siraNo | Hayır | String | Boş ise sistem atar |
| hareket.tarih | Evet | String | GG/AA/YYYY |
| hareket.saat | Hayır | String | HH24:MM |
| hareket.vadeTarihi | Hayır | String | Vade tarihi |
| hareket.dovizKod / kur | Hayır | String/Double | Boş ise TL / TCMB |
| hareket.aciklama | Hayır | String | Açıklama |
| hareket.ozelKod1 / grupKodTanim | Hayır | String | Özel/grup kodları |
| hareket.entegrasyonId | Hayır | String | Mükerrer engelleme anahtarı. Önerilir. |
| hareket.makbuzOlustur | Hayır | String | "E" ise makbuz da oluşturulur. kasaKart, kasaTutar, makbuzSeriNo zorunlu. |
| hareket.makbuzSeriNo / makbuzSiraNo | Koşullu | String | Makbuz oluşturuluyorsa seri no zorunlu, sıra no opsiyonel. |
| hareket.serbestAlan1..25 | Hayır | String/Long | 25 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[]
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| krediKartlar[].sozlesmeKod | Evet | String | POS sözleşme kodu |
| krediKartlar[].kkTutar | Evet | Double | Kredi kartı ile ödenen tutar |
| krediKartlar[].taksitSayisi | Hayır | Integer | Boş ise tek çekim |
Request Alanları — detaylar[] (Fatura Kalemi)
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| detaylar[].stokKart | Evet | String | Stok kart kodu |
| detaylar[].stokKartAdi | Hayır | String | Stok kart adı (doğrulama) |
| detaylar[].miktar | Evet | Double | Miktar |
| detaylar[].birim | Evet | String | LucaNet'te tanımlı birim |
| detaylar[].birimFiyat | Evet | Double | Birim fiyat |
| detaylar[].tutar | Evet | Double | Satır tutarı (döviz cinsi) |
| detaylar[].tlTutar | Hayır | Double | TL cinsi (boş ise hesaplanır) |
| detaylar[].dovizKod / kur | Hayır | — | Boş ise TL / TCMB |
| detaylar[].aciklama | Hayır | String | Satır açıklama |
| detaylar[].depoKod | Hayır | String | Depo kodu |
Request Alanları — detaylar[] Vergi Alanları
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| detaylar[].kdvTur | Hayır | String | KDV türü (O=Oran, S=Stopaj vb.) |
| detaylar[].kdvOran | Hayır | Long | 0 / 1 / 8 / 18 |
| detaylar[].kdvTutar | Hayır | Double | KDV tutarı (kdvHesapla="E" ise doldurulur) |
| detaylar[].tevkifatKod | Koşullu | String | tevkifatTutar > 0 ise zorunlu. 2/10, 3/10, 4/10, 5/10, 7/10, 9/10, 10/10 (Tam Tevkifat), 20/20 (Tecil KDV) |
| detaylar[].tevkifatTutar | Hayır | Double | Tevkifat tutarı |
| detaylar[].iskontoTur / iskontoOran / iskontoTutar | Hayır | — | Satır bazında iskonto |
| detaylar[].oivOran | Hayır | Long | ÖİV: 0, 5, 7.5, 15, 25 |
| detaylar[].oivTutar | Hayır | Double | ÖİV tutarı |
| detaylar[].otvOran / otvTutar | Hayır | Double | ÖTV bilgileri |
| detaylar[].damgaVergisiOran | Hayır | Double | 0.0189, 0.00569, 0.00759, 0.00948 |
| detaylar[].damgaVergisiTutar | Hayır | Double | Damga vergisi tutarı |
| detaylar[].konaklamaVergisiOran | Hayır | Double | 0.00, 0.01, 0.02 |
| detaylar[].konaklamaVergisiTutar | Hayır | Double | Konaklama vergisi tutarı |
| detaylar[].konaklamaVergisiIstisna | Hayır | String | Konaklama 0.00 ise istisna kodu (001) |
| detaylar[].efaturaIstisnaKod | Hayır | Integer | E-fatura KDV istisna kodu. Boş ise stok kartındaki ön tanım kullanılır. |
| detaylar[].efaturaTevkifatKod | Hayır | Integer | E-fatura KDV tevkifat kodu |
| detaylar[].efaturaOzelMatrahKod | Hayır | Integer | E-fatura özel matrah kodu |
| detaylar[].efaturadaGosterme | Hayır | String | "E" ise satır e-fatura çıktısında görünmez, tutarı bir önceki satıra eklenir (turizm için) |
| detaylar[].kamuMensei | Koşullu | String | efaturaSenaryo=5 (Kamu) ise stokun menşei (UBL ülke kodu) |
Request Alanları — detaylar[].dagilimList[] (Maliyet Merkezi)
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| dagilimIsKodu | Evet | String | İş takip/masraf merkezi kodu |
| dagilimTutar | Evet | Double | Dağıtım tutarı |
| dagilimMiktar / dagilimAciklama | Hayır | — | Miktar ve açıklama |
Response — json.* Önemli Alanlar
| Alan | Tip | Açıklama |
|---|---|---|
| json.faturaTipi | Long | Fatura tipi |
| json.fatura.faturaId | String | Faturanın LucaNet ID'si — sonraki sorgu/pdf çağrıları için |
| json.fatura.hareket.hareketId | Long | Hareket (belge) kimliği |
| json.fatura.hareket.seriNo / siraNo / tarih | — | Kaydedilen seri/sıra/tarih |
| json.fatura.hareket.tamamlandi | String | E/H — Luca MMP'ye aktarılmaya hazır mı? |
| json.fatura.hareket.muhasebelesir | String | Her zaman E |
| json.fatura.hareket.muhasebelesti | String | Her zaman H (otomatik aktarılmıyor) |
| json.detaylar[] | Array | Kaydedilen satırlar (hesaplanmış kdvTutar/otvTutar vb. dahil) |
| json.krediKartlar[] | Array | Kaydedilen kredi kartı ödemeleri |
Fatura Sorgu
LucaNet ham endpoint: POST /service/rest/faturaWs/select
Minimal Örnek
{ "fatura": { "faturaId": 12345 } }
Request Alanları
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| fatura.faturaId | Evet | Long | Kes response'undan alınan faturaId |
Response — Ek Alan
data.invoiceStatus alanı elektronik faturalar için entegratörden alınan durum bilgisini içerir:
ONAY_BEKLIYORONAYLANDIREDDEDILDIONAY_AKISINDAIADE_EDILDIGONDERILDIZIPLENDIGIBE_ILETILDIIMZA_BEKLIYORGIB_TARAFINDA_HATA_OLUSTUSISTEM_HATASIALICI_KABUL_ETTIALICI_REDDETTIALICI_IADE_ETTIOTOMATIK_ONAYLANDIOTOMATIK_ALICI_KABUL_ETTIUYGULAMA_YANITI_YOLLANIYORUYGULAMA_YANITI_HATA_ALDIIRSALIYE_YANITI_YOLLANIYORIRSALIYE_YANITI_HATA_ALDIFatura PDF Linki
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
| Alan | Tip | Açıklama |
|---|---|---|
| json.externalPdfUrl | String | Faturanı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ış İrsaliyesi105 — Alış İade İrsaliyesi106 — Satış İrsaliyesi107 — Satış İade İrsaliyesiİrsaliye 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
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| faturaTipi | Evet | Long | 104-107 enum'undan biri |
| kdvHesapla | Hayır | String | "E" ise KDV tutarı LucaNet tarafından hesaplanır (varsayılan) |
| tutarlariHesapla | Hayır | String | "E" ise KDV/iskonto/ÖTV/ÖİV tutarları oranlar üzerinden hesaplanır |
Request Alanları — fatura Alt Objesi
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| fatura.cariKart | Evet | String | İrsaliye carisinin kart kodu |
| fatura.cariKartAdi | Hayır | String | Cari adı (opsiyonel) |
| fatura.adres | Hayır | String | Sevk adresi |
| fatura.sevkTarih | Hayır | String | Sevk tarihi (GG/AA/YYYY) |
| fatura.sevkSaat | Hayır | String | Sevk saati (HH24:MM) |
| fatura.siparisNo | Hayır | String | İlgili sipariş numarası |
| fatura.siparisTarihi | Hayır | String | Sipariş tarihi |
| fatura.isnetBayiNo | Hayır | String | E-irsaliye ağ bayi numarası |
| fatura.tasiyiciVergiNo | Hayır | String | Taşıyıcı vergi/TC kimlik numarası |
| fatura.tasiyiciUnvan | Hayır | String | Taşıyıcı unvanı |
| fatura.plaka | Hayır | String | Araç plakası |
| fatura.matbudan | Hayır | String | Matbu irsaliyeden oluşturuluyorsa "E" |
| fatura.matbuTarih / matbuSeriNo / matbuSiraNo | Hayır | String | Matbu evrak referans bilgileri |
| fatura.tasimaIrsaliyesi | Hayır | String | "E" ise taşıma irsaliyesi / maden sevk fişi |
Request Alanları — hareket
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| hareket.seriNo | Evet | String | Belge seri no |
| hareket.siraNo | Hayır | String | Boş ise sistem atar |
| hareket.tarih | Evet | String | Belge tarihi (GG/AA/YYYY) |
| hareket.ozelKod1 | Hayır | String | Özel kod |
| hareket.grupKodTanim | Hayır | String | Firma grup kodu |
| hareket.dovizKod | Hayır | String | Boş ise TL |
| hareket.kur | Hayır | Double | Boş ise TCMB |
| hareket.aciklama | Hayır | String | Açıklama |
| hareket.serbestAlan1...25 | Hayır | String/Long | 25 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[]
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| detaylar[].stokKart | Evet | String | Stok kart kodu |
| detaylar[].miktar | Evet | Double | Miktar |
| detaylar[].birim | Evet | String | Birim (LucaNet'te tanımlı) |
| detaylar[].birimFiyat | Evet | Double | Birim fiyat |
| detaylar[].tutar | Evet | Double | Satır tutarı (döviz cinsi) |
| detaylar[].tlTutar | Hayır | Double | TL cinsi tutar (boş ise hesaplanır) |
| detaylar[].dovizKod | Hayır | String | Boş ise TL |
| detaylar[].kur | Hayır | Double | Boş ise TCMB |
| detaylar[].kdvOran | Hayır | Long | 0/1/8/18 |
| detaylar[].kdvTutar | Hayır | Double | KDV tutarı (kdvHesapla="E" ise doldurulur) |
| detaylar[].kdvTur | Hayır | String | KDV türü (örn. O=Oran) |
| detaylar[].aciklama | Hayır | String | Satır açıklama |
Request Alanları — detaylar[].dagilimList[] (Maliyet Merkezi Dağılımı)
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| dagilimIsKodu | Evet | String | İş takip/masraf merkezi kodu |
| dagilimTutar | Evet | Double | Dağıtılan tutar |
| dagilimMiktar | Hayır | Double | Miktar |
| dagilimAciklama | Hayır | String | Açıklama |
Request Alanları — soforList[] ve dorseList[]
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| soforList[].ad / soyad | Evet | String | Şoför ad ve soyad |
| soforList[].tckn | Evet | Long | 11 haneli TC kimlik |
| dorseList[].plaka | Evet | String | Dorse plakası |
İrsaliye Sil
LucaNet ham endpoint: POST /service/rest/irsaliyeWs/delete
Minimal Örnek
{ "fatura": { "faturaId": 12345 } }
Request Alanları
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| fatura.faturaId | Evet | Long | Silinecek 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
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
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| cariKartKodu | Evet | String | Tahsilat yapılacak carinin kart kodu |
| cariKartKur | Hayır | Double | Carinin döviz kodu TL değilse kur. TL ise 1.0. Boş ise TCMB'den çekilir. |
Request Alanları — hareket Alt Objesi
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| hareket.seriNo | Evet | String | Belge seri numarası |
| hareket.siraNo | Hayır | String | Sıra numarası. Boş ise sistem atar. |
| hareket.tarih | Evet | String | Belge tarihi (GG/AA/YYYY) |
| hareket.dovizKod | Hayır | String | Boş ise TL |
| hareket.kur | Hayır | Double | Boş ise TCMB kuru |
| hareket.aciklama | Hayır | String | Açıklama |
| hareket.entegrasyonId | Hayır | String | Mükerrer kayıt engelleme anahtarı (senin sistemindeki belge ID'si) |
Request Alanları — detaylar[] (En az 1 Satır Zorunlu)
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| detaylar[].tip | Evet | Long | Yukarıdaki enum: 2 / 5 / 7 |
| detaylar[].tutar | Koşullu | Double | Tip 2 veya 5 için zorunlu |
| detaylar[].kart | Evet | String | Banka / kasa / POS kartının LucaNet kodu |
| detaylar[].kur | Hayır | Double | Satır kuru. Boş ise TCMB. |
| detaylar[].aciklama | Hayır | String | Satır açıklama |
Request Alanları — detaylar[].krediKartiForm (tip=7 için)
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| sozlesmeKod | Evet | String | LucaNet'te kayıtlı POS sözleşme kodu |
| kkTutar | Evet | Double | Kredi kartı ile çekilen tutar |
| taksitSayisi | Hayır | Integer | Boş 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
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ı
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| cariKartKodu | Evet | String | Ödeme yapılacak cari kart kodu |
| cariKartKur | Hayır | Double | Dövizli cari için. Boş ise TCMB. |
| hareket.seriNo | Evet | String | Belge seri no |
| hareket.siraNo | Hayır | String | Boş ise sistem atar |
| hareket.tarih | Evet | String | GG/AA/YYYY |
| hareket.dovizKod | Hayır | String | Boş ise TL |
| hareket.kur | Hayır | Double | Boş ise TCMB |
| hareket.aciklama | Hayır | String | Açıklama |
| detaylar[].tip | Evet | Long | 2=Banka, 5=Kasa. Kredi kartı desteklenmez. |
| detaylar[].tutar | Evet | Double | Ödeme tutarı |
| detaylar[].kart | Evet | String | Banka/kasa kart kodu |
| detaylar[].kur | Hayır | Double | Satır kuru. Boş ise TCMB. |
| detaylar[].aciklama | Hayır | String | Satı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şiD — Devir FişiA — Açılış FişiZ — Kapanış FişiT — Tahakkuk FişiK — Kur Değerleme FişiA (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ış İade3 — Satış4 — Satış İadeMuhasebe Fişi 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" }
]
}
tamamlandi: "E" olarak işaretlenir ve Luca Mali Müşavir Paketi'ne aktarıma hazırdır.
Request Alanları — Üst Seviye
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| tip | Evet | String | Yukarıdaki enum'dan bir değer |
Request Alanları — hareket
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| hareket.seriNo | Evet | String | Belge seri no |
| hareket.siraNo | Hayır | String | Boş ise sistem atar |
| hareket.tarih | Evet | String | GG/AA/YYYY |
| hareket.dovizKod | Hayır | String | Boş ise TL |
| hareket.kur | Hayır | Double | Boş ise TCMB |
| hareket.aciklama | Hayır | String | Açıklama |
| hareket.ozelKod1 | Hayır | String | Özel kod |
| hareket.grupKodTanim | Hayır | String | Firma grup kodu |
| hareket.entegrasyonId | Hayır | String | Mükerrer engelleme anahtarı |
Request Alanları — detaylar[] (En az 2 Satır, Borç=Alacak)
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| detaylar[].borcAlacak | Evet | String | B (Borç) veya A (Alacak) |
| detaylar[].tutar | Evet | Double | Satır tutarı (döviz cinsi) |
| detaylar[].tlTutar | Evet | Double | TL cinsi tutar — fiş dengesi bu alana göre kontrol edilir |
| detaylar[].dovizKod | Hayır | String | Boş ise TL |
| detaylar[].kur | Hayır | Double | Boş ise TCMB |
| detaylar[].kartTipId | Evet | Long | Yukarıdaki kart tipi enum'undan |
| detaylar[].kart | Evet | String | İlgili kart kodu (muhasebe / banka / cari / stok / kasa) |
| detaylar[].muhasebeKarti | Hayır | String | Cari/stok/banka/kasa kartı için ilişkili muhasebe hesap kodu. Boş bırakmak önerilir — LucaNet otomatik eşler. |
| detaylar[].aciklama | Hayır | String | Satır açıklama |
| detaylar[].miktar | Koşullu | Double | kartTipId=4 (stok) için zorunlu |
| detaylar[].islemTipi | Koşullu | Long | kartTipId=4 için zorunlu. Yukarıdaki stok işlem enum'u. |
| detaylar[].birim | Koşullu | String | kartTipId=4 için zorunlu. LucaNet'te tanımlı stok birim kodu. |
| detaylar[].masrafMerkezKod | Hayır | String | Masraf merkezi kodu |
Response — json.*
| Alan | Tip | Açıklama |
|---|---|---|
| json.tip | String | Kaydedilen fiş tipi |
| json.hareket.hareketId | Long | Belge ID |
| json.hareket.hareketTipId | Long | 900=Muhasebe, 901=Devir, 902=Açılış, 903=Kur, 904=Tahakkuk, 905=Kapanış |
| json.hareket.tamamlandi | String | E (borç=alacak) veya H (dengesiz) |
| json.hareket.muhasebelesir | String | Luca MMP'ye aktarılabilir mi: E |
| json.hareket.muhasebelesti | String | Aktarıldı mı: otomatik aktarma olmadığından H |
| json.detaylar[].muhasebeFisDetayId | Long | Satır kimliği |
| json.detaylar[].kartDovizKod / kartKur / kartTutar | — | Kartı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
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
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| kart.kartKodu | Evet | String | Muhasebe hesap kodu. Benzersiz ve muhasebe standardına uygun olmalı (örn. 120.01.042, 320.01.015) |
| kart.kartAdi | Evet | String | Hesap adı |
| kart.dovizKod | Hayır | String | Boş ise TL |
| kart.ozelKod1 / ozelKod2 | Hayır | String | Gruplama için |
| kart.aciklama | Hayır | String | Açıklama |
| kart.aktif | Hayır | String | E/H. Boş ise E. |
Response — json.kart.*
| Alan | Tip | Açıklama |
|---|---|---|
| json.kart.kartId | Long | Oluşturulan muhasebe kartı ID |
| json.kart.kartTipId | Long | 1 (Muhasebe Kartı) |
| json.kart.ekleyen / eklemeTarihi | String | Kayıt kullanıcısı ve zamanı (GG/AA/YYYY hh24:mm:ss) |
| json.kart.gunleyen / gunlemeTarihi | String | Gü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ış İadeTevkifat Kodları (tevkifatKod)
2/103/104/105/107/109/1010/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.751234581015172022100Gider Pusulası 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
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| cariKart | Evet | String | Cari kart kodu |
| kasaKart | Hayır | String | Kasa kart kodu (nakit ödeme yapıldıysa) |
| giderTuru | Hayır | String | 1 veya 2. Boş ise 1. |
Request Alanları — hareket
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| hareket.seriNo | Evet | String | Belge seri numarası |
| hareket.siraNo | Hayır | String | Boş ise sistem atar |
| hareket.tarih | Evet | String | GG/AA/YYYY |
| hareket.ozelKod1 | Hayır | String | Özel kod |
| hareket.aciklama | Hayır | String | Açıklama |
Request Alanları — detaylar[]
| Alan | Zorunlu | Tip | Açıklama |
|---|---|---|---|
| detaylar[].stokKart | Evet | String | Stok kart kodu |
| detaylar[].miktar | Evet | Double | Miktar |
| detaylar[].birimFiyat | Evet | Double | Birim fiyat |
| detaylar[].tutar | Evet | Double | Satır tutarı |
| detaylar[].kdvOran | Hayır | Long | 0/1/8/18 |
| detaylar[].kdvTutar | Hayır | Double | KDV tutarı (otomatik hesaplanmıyorsa ver) |
| detaylar[].tevkifatKod | Hayır | String | Yukarıdaki tevkifat kodlarından |
| detaylar[].tevkifatTutar | Hayır | Double | Tevkifat tutarı |
| detaylar[].gelirVergisiOran | Hayır | Long | Yukarıdaki enum'dan |
| detaylar[].gelirVergisiTutar | Hayır | Double | Gelir vergisi tutarı |
| detaylar[].aciklama | Hayır | String | Satır açıklama |
Response — Ek Alanlar
| Alan | Tip | Açıklama |
|---|---|---|
| json.hareket.hareketId | Long | Belge ID |
| json.hareket.hareketTipId | Long | Sabit: 109 (gider pusulası) |