Skip to main content
Alış faturası, bir başlık ve bir ya da daha fazla satırdan oluşur. Fatura tipi hiçbir zaman istekte bir alan değildir: çağırdığınız endpoint’e göre sabittir. Dört fatura endpoint grubu vardır — Alış, Satış, Alış İade ve Satış İade — aynı alanları, numaralandırma mekanizmasını ve sonuç kodlarını paylaşır; farklar ilgili sayfalarda belirtilmiştir.
API tutarları hesaplamaz ve tutarlı olup olmadıklarını denetlemez. Satır tutarları, indirim tutarları, KDV, ek vergiler, fatura toplamları ve ağırlıklı kur ortalaması gönderdiğiniz gibi kaydedilir (irsaliye satırlarıyla aynı alanlar). API’nin hesapladığı istisnalar: depo hareketi taşıyan bir satırın ana birim miktarı ve satırın tevkif edilen KDV tutarı (WithheldVatAmount = VatAmount * WithholdingNumerator / WithholdingDenominator).

Zorunlu alanlar

  • InvoiceNumber: şirkette bu fatura tipi içinde benzersiz, en fazla 20 karakter. Oluştururken "Next" gönderilirse numara ALFATNO seri numarasından otomatik üretilir. Güncellemede "Next" gönderilemez.
  • Date: fatura tarihi. Saat de gönderirseniz fatura saati olarak yazılır, göndermezseniz o anki saat kullanılır.
  • CustomerCode: kullanıcının görebildiği bir cari.
  • CurrencyCode: fatura dövizi.
  • Lines: en az bir satır.
DueDays (vade günü) faturayla birlikte saklanır. ShipmentDefinitionCode (isteğe bağlı) sevkiyat tanımlarından gelir. EInvoiceType (0-5: e-belge değil, e-Fatura, e-Arşiv, e-Arşiv internet, gelen e-Fatura, e-Müstahsil) sizin tarafınızdan verilir ve gönderildiği gibi kaydedilir — API yalnızca aralık kontrolü yapar.

Cariden alınan bilgiler

Faturanın adresi, unvanı, vergi numarası ve vergi dairesi istekte alan olarak yer almaz. Bunlar, faturanın kaydedildiği anda cariden kopyalanır (carinin fatura adresi varsa o, yoksa ilk adresi) ve cari sonradan değişse bile faturada sabit kalır — bu yüzden yalnızca yanıtlarda görünürler (Address, CustomerTitle, TaxNumber, TaxOffice). Güncellemede bu değerler yalnızca CustomerCode değiştiyse yeniden hesaplanır; değişmediyse mevcut değerler korunur.

Satırlar

  • ProductCode ve UnitCode zorunludur. Birim, ürünün kendi birimlerinden biri olmalıdır (ana birimi ya da 2./3. birimi).
  • Quantity sıfırdan büyük olmalı; UnitPrice negatif olamaz.
  • Discounts, satırın indirim oranlarının listesidir, sırasıyla art arda uygulanır.
  • LineGroupName isteğe bağlıdır, satır grupları tanımından gelir.
  • WarehouseName zorunludur ve şirketin depolarından biri olmalıdır: her satır her zaman bir depo hareketi taşır (aşağıya bakınız).
  • WithholdingNumerator/WithholdingDenominator tevkifat payını/paydasını tanımlar; API bunlardan ve VatAmount’tan WithheldVatAmount’ı hesaplar.
  • AdditionalTaxCode1-3/AdditionalTaxRate1-3/AdditionalTaxAmount1-3/AdditionalTaxBase1-3 üç bağımsız slotta gönderildiği gibi kaydedilir.
Yanıttaki MainUnitQuantity, Quantity’nin ürünün ana birimine çevrilmiş halidir; irsaliye satırlarıyla aynı hesaplama: UnitCode ana birimse miktarın kendisi, değilse birimin çarpanına bölünmüş hali.

Depo hareketi, Lot ve seri no takibi

İrsaliyeden farklı olarak fatura kendisi bir depo fişi değildir, ama her satır her zaman bir tane taşır: API, faturanın arkasında otomatik bir depo fişi (alış faturasında giriş hareketi) ve ürünün stok tipine göre irsaliyenin gerektireceği aynı Lot ya da seri no girdilerini üretir — satırdaki Lots ya da SerialNumbers, irsaliye kurallarının birebir aynısıyla (Lot izlenen bir ürün LotNo/Quantity/UnitCode ister, FIFO/LIFO/FEFO bir ürünün giriş girdileri yeni lot oluşturur, seri izlenen bir ürünün girdileri yeni seri no kaydeder). Bu depo fişi tamamen dahili bir uygulama detayıdır: yanıtta dönmez ve irsaliye numara serilerini tüketmez.

Güncellemede satırın kimliği

İrsaliye satırı gibi, bir fatura satırının ürettiği depo hareketi, Lot/seri no girdileri ve sipariş bağlantısı kaydı satırın kendi ID’sine referans verir; bu yüzden “bütün satırları sil, yenilerini yaz” mantığı bu referansları koparır. Bunun yerine, irsaliyedeki gibi satırların istekte gönderildiği sıra, güncellemede kimliklerini belirler: istekteki i. sıradaki satır, o anda i. sırada olan mevcut satırla aynı kabul edilir ve ürettiği kayıtlar onunla birlikte taşınır. Öncekinden daha az satır göndermek sondaki satırları kaldırır, daha fazla göndermek sona yeni satırlar ekler.

Sipariş ve irsaliye bağlantısı

Bir fatura satırının ürettiği depo hareketi, tıpkı bir irsaliye satırı gibi bir sipariş satırına bağlantı taşıyabilir; API satırın miktarının bağlı sipariş satırının kalan miktarını aşmadığını kontrol eder. Noyax uygulamasında var olan bir irsaliyeden aktarılarak oluşturulmuş bir fatura satırı (kendi depo hareketini üretmek yerine) bu bağlantıyı korur: bu API böyle bir aktarım oluşturmaz, ama böyle bir bağlantısı olan mevcut bir faturayı güncellerseniz miktarı bağlı irsaliye satırına göre kontrol edilir.

Cari hareket

Her alış faturası koşulsuz olarak bir cari hareket kaydı oluşturur (alacak, çünkü alış faturası şirketin tedarikçiye olan borcunu artırır) — Sipariş’in isteğe bağlı CreateCustomerMovement’ının aksine burada bir seçenek yoktur. Bu hareket bir tahsilat/ödeme ile zaten kapatılmışsa faturanın carisi, tutarı ve dövizi artık değiştirilemez ve fatura silinemez (3015).

Ek yapılandırılmış alanlar

Fatura, daha az sık karşılaşılan senaryolar (ihracat, kamu, SGK, ilaç/tıbbi cihaz, Hal) için bir dizi tamamen isteğe bağlı ek alan kabul eder. Bunların hiçbiri API tarafından doğrulanmaz ya da ProfileId/InvoiceTypeCode ile herhangi bir şekilde eşleştirilmez: ne gönderirseniz olduğu gibi kaydedilir ve döner; kendi ProfileId’nize uygun olanları göndermek sizin sorumluluğunuzdadır. Başlık: DeliveryInfo (ihracat teslimat adresi ve şartları), PaymentMeans (ödeme yöntemleri), ReferencedDespatches (faturanın referans verdiği irsaliyeler), CustomerIdentitySchemes (ek cari kimlik numaraları, ör. MUSTERINO, TICARETSICILNO), PublicSectorSpendingUnit (ödemeyi yapacak kamu harcama birimi) ve SgkInfo (SGK fatura detayları). Satır: ExportInfo (satırın ihracat teslimat/paketleme detayları), MedicineDeviceInfo (ilaç/tıbbi cihaz takip satırları), HalInfo (hal künye bilgisi) ve ProductInfo (model, marka, menşei ülke ve diğer tanımlayıcılar).

Paylaşım

SharingCode faturayı kimlerin görebileceğini sınırlar: boşsa herkes görür, doluysa kullanıcının paylaşım kodlarından biri olmalıdır. Kullanıcının göremediği faturalar 404 döner.