# InvoiceInfo

> Bu nesne, fatura üst bilgilerini barındıran nesnedir. Nesne ile ilgili detaylar aşağıda anlatılmıştır.

### UUID

> Guid veri tipinde faturanın takibi için kullanılacak unique numaradır.

```javascript
ArchiveInvoice.InvoiceInfo.UUID = '05da44f4-9db7-4030-a8cc-8f5b12408569';
```

{% hint style="info" %}
Alanın boş gönderilmesi durumunda sistem tarafından yeni bir UUID faturaya eklenecektir.
{% endhint %}

### TemplateUUID

> Bu alan faturaya eklenecek olan XSLT’nin UUID'si için kullanılır. UUID'ye ait XSLT faturaya eklenir.

```javascript
ArchiveInvoice.InvoiceInfo.TemplateUUID = '94e8b735-1361-4d6f-a4a6-3745b62239c8';
```

{% hint style="info" %}
Eğer TemplateUUID ve TemplateBase64String alanları boş geçilirse faturaya varsayılan tasarım eklenecektir. Herhangi birinin dolu olması durumunda girilen bilgilere ait tasarım faturaya eklenir.
{% endhint %}

### TemplateBase64String

> Faturaya eklenecek tasarımın Base64'ü buraya eklenir.

{% hint style="info" %}
Eğer TemplateUUID ve TemplateBase64String alanları boş geçilirse faturaya varsayılan tasarım eklenecektir. Herhangi birinin dolu olması durumunda girilen bilgilere ait tasarım faturaya eklenir.
{% endhint %}

### InvoiceType

> Enum veri tipinde bir nesnedir. Aşağıdaki bulunan değerleri alabilir. Fatura tipine göre seçim yapılmalıdır.

```csharp
public enum InvoiceType
{
        SATIS = 0,
        IADE = 1,
        ISTISNA = 2,
        TEVKIFAT = 3,
        IHRACKAYITLI = 4,
        IPTAL = 5,
        OZELMATRAH = 6,
        SGK = 7,
        TEVKIFATIADE = 8,
        KOMISYONCU = 9,
        HKSSATIS = 10,
        HKSKOMISYONCU = 11,
        KONAKLAMAVERGISI = 12,
        SARJ = 13,
        SARJANLIK = 14,
        TEKNOLOJIDESTEK = 15,
        YTBSATIS = 16,
        YTBISTISNA = 17,
        YTBIADE = 18,
        YTBTEVKIFAT = 19,
        YTBTEVKIFATIADE = 20
 }
```

```javascript
ArchiveInvoice.InvoiceInfo.InvoiceType = 0;
```

{% hint style="info" %}
Fatura tipi <mark style="color:red;">**"ISTISNA"**</mark> olması durumunda ;\ <mark style="color:blue;">TaxExemptionReasonInfo</mark> nesnesinde bulunan **"KDVExemptionReasonCode"** alanına KDV istisna muafiyet sebebi girilmelidir. Alabileceği değerler kod listeleri bölümünde [<mark style="color:blue;">KDV Muafiyet Sebepleri</mark>](https://developer.nilvera.com/kod-listeleri#kdv-muafiyet-sebepleri) altında belirtilmiştir.
{% endhint %}

{% hint style="info" %}
Fatura tipi <mark style="color:red;">**"IHRACKAYITLI"**</mark> olması durumunda ;

<mark style="color:blue;">TaxExemptionReasonInfo</mark> nesnesinde bulunan **"KDVExemptionReasonCode"** alanına İhraç kayıtlı fatura sebebi girilmelidir. Alabileceği değerler kod listeleri bölümünde [<mark style="color:blue;">İhraç Kayıtlı Fatura Sebepleri</mark>](https://developer.nilvera.com/kod-listeleri#ihrac-kayitli-kod-listesi) altında belirtilmiştir.
{% endhint %}

### InvoiceSerieOrNumber

> Bu alana 16 haneli e-Arşiv fatura numarasını, 3 haneli seri bilgisini girebilirsiniz. 16 haneli fatura numarası girmeniz durumunda herhangi bir işlem yapılmaz fatura numarası olarak girdiğiniz değer belirlenir. Eğer 3 haneli seri girerseniz portal üzerinde tanımlı olan bu seri üzerinden numara üretilir.

<pre class="language-javascript"><code class="lang-javascript">//Manuel Fatura Numarası
ArchiveInvoice.InvoiceInfo.InvoiceSerieOrNumber = "<a data-footnote-ref href="#user-content-fn-1">EAR2022000000001</a>";

//Seri Bilgisi
ArchiveInvoice.InvoiceInfo.InvoiceSerieOrNumber = "EAR";
</code></pre>

{% hint style="info" %}
Portal da kayıtlı EFT serisine otomatik olarak sıradaki numara verilir.
{% endhint %}

### IssueDate

> Bu alana fatura tarihi ve saati girilir.

```javascript
ArchiveInvoice.InvoiceInfo.IssueDate = "2022-01-21T12:40:39.846Z";
```

### CurrencyCode

> Bu alan faturanın para biriminin girileceği alandır. Alabileceği değerler kod listeleri bölümünde [<mark style="color:blue;">Para Birim Kodları</mark>](https://developer.nilvera.com/kod-listeleri#para-birim-kodlari) altında belirtilmiştir. &#x20;

```javascript
ArchiveInvoice.InvoiceInfo.CurrencyCode = "TRY";
```

### ExchangeRate

> Bu alan faturanın Türk lirasından farklı bir para biriminde kesildiğinde döviz kurunun girileceği alandır. Fatura üzerinde kur bilgisi görünecektir.

### DespatchDocumentReference

> Bu alan faturaya ait irsaliye bilgilerinin girilebileceği alandır. Birden fazla irsaliye bilgisi girilebilir.

```csharp
public class KeyValue
{
  //İrsaliye Tarihi
  public DateTime IssueDate { get; set; }

  //İrsaliye Numarası
  public string Value { get; set; }
}
```

```javascript
ArchiveInvoice.InvoiceInfo.OrderReference = [
    { IssueDate: "2022-02-23", Value: "EIR2022000000001" },
    { IssueDate: "2022-02-24", Value: "EIR2022000000002" }
];
```

### OrderReference

> Bu alan faturaya ait sipariş bilgilerinin girilebileceği alandır.

```csharp
public class KeyValue
{
  //Sipariş Tarihi
  public DateTime IssueDate { get; set; }

  //Sipariş Numarası
  public string Value { get; set; }
}
```

```javascript
ArchiveInvoice.InvoiceInfo.OrderReference = {
    IssueDate: "2022-02-01", //(Örn: İrsaliye Tarihi)
    Value: "EIR2022000000003" //(Örn: İrsaliye Nuamrası)
};
```

### OrderReferenceDocument

> Bu alan faturaya ait sipariş belgesi bilgilerinin girilebileceği alandır.

```csharp
public class AdditionalDocumentReferenceDto
{
  public string ID { get; set; }
  public DateTime? IssueDate { get; set; }
  public string DocumentType { get; set; }
  public string DocumentTypeCode { get; set; }
  public AttachmentDto Attachment { get; set; }
}

public class AttachmentDto
{
    public string Base64Data { get; set; }
    public string MimeCode { get; set; }
    public string FileName { get; set; }
}
```

> **ID:** Eklenen dosyanın yada diğer bilginin değeri buraya girilebilir.

> **IssueDate:** Eklenen belgenin tarihi. (Not: Bir belge değil sadece değer girişi olarak kullanılacaksa da fatura tarihi olarak girilebilir.)

> **DocumentType:** Eklenen belgenin tipi veya sabit değer serbest metin şeklinde yazılabilir.

> **DocumentTypeCode:** Eklenen belgenin tipi veya sabit değer serbest metin şeklinde yazılabilir.

> **Attachment:** Eğer bir dosya girilecekse, dosya bu alana girilebilir.
>
> * **Base64Data:** Eklenen dosyanın Base64 encode edilmiş hali buraya girilir.
> * **MimeCode:** Eklenen dosyanın MimeCode değeri buraya girilir. (Örn : image/png)
> * **FileName:** Eklenen dosyanın adı buraya girilebilir.

### AdditionalDocumentReferences

> Fatura içerisine ek dosya yada farklı bilgileri eklemek için kullanabileceğiniz alandır. Birden fazla dosya girilebilir.

```csharp
public class AdditionalDocumentReferenceDto
{
  public string ID { get; set; }
  public DateTime? IssueDate { get; set; }
  public string DocumentType { get; set; }
  public string DocumentTypeCode { get; set; }
  public AttachmentDto Attachment { get; set; }
}

public class AttachmentDto
{
    public string Base64Data { get; set; }
    public string MimeCode { get; set; }
    public string FileName { get; set; }
}
```

> **ID:** Eklenen dosyanın yada diğer bilginin değeri buraya girilebilir.

> **IssueDate:** Eklenen belgenin tarihi. (Not: Bir belge değil sadece değer girişi olarak kullanılacaksa da fatura tarihi olarak girilebilir.)

> **DocumentType:** Eklenen belgenin tipi veya sabit değer serbest metin şeklinde yazılabilir.

> **DocumentTypeCode:** Eklenen belgenin tipi veya sabit değer serbest metin şeklinde yazılabilir.

> **Attachment:** Eğer bir dosya girilecekse, dosya bu alana girilebilir.<br>
>
> * **Base64Data:** Eklenen dosyanın Base64 encode edilmiş hali buraya girilir.
> * **MimeCode:** Eklenen dosyanın MimeCode değeri buraya girilir. (Örn : image/png)
> * **FileName:** Eklenen dosyanın adı buraya girilebilir.

{% hint style="info" %}
Yalnızca ' doc, docx, ppt, pptx, pdf, jpg, jpeg, png ' Tipinde Dosyalar Yüklenebilir.
{% endhint %}

### TaxExemptionReasonInfo

> Bu alan faturada bulunan 0 KDV veya ÖTV'lerin vergi muafiyet sebeplerini girebileceğiniz alandır. Alabileceği değerler kod listeleri bölümünde [<mark style="color:blue;">KDV Muafiyet Sebepleri</mark>](https://developer.nilvera.com/kod-listeleri#kdv-muafiyet-sebepleri) / [<mark style="color:blue;">ÖTV Muafiyet Sebepleri</mark>](https://developer.nilvera.com/kod-listeleri#oetv-muafiyet-sebepleri) altında belirtilmiştir.&#x20;

```csharp
public class TaxExemptionReasonInfoDto
{
    public string KDVExemptionReasonCode { get; set; }
    public string OTVExemptionReasonCode { get; set; }
}
```

```javascript
ArchiveInvoice.InvoiceInfo.TaxExemptionReasonInfo = {
    KDVExemptionReasonCode: "351",
    OTVExemptionReasonCode: "151"
};
```

### PaymentTermsInfo

> Ödeme koşulları bilgisinin girileceği alandır.

```csharp
public class PaymentTermsDto
{
    public decimal Percent { get; set; }
    public decimal Amount { get; set; }
    public string Note { get; set; }
}
```

> **Percent:** Ödemenin gecikmesi durumunda uygulanacak ceza oranı numerik olarak girilir.

> **Amount:** Ödeme tutarı numerik olarak girilebilir.

> **Note:** Ödeme koşulları ile ilgili açıklama serbest metin olarak girilir.

### PaymentTermsInfo

> Ödeme Şekli bilgilerinin girileceği alandır.

```csharp
public class PaymentMeansDto
{
    public string Code { get; set; }
    public string ChannelCode { get; set; }
    public DateTime DueDate { get; set; }
    public string PayeeFinancialAccountID { get; set; }
    public string Note { get; set; }
}
```

> **Code:** Ödeme şeklinin kodu girilir. Alabileceği değerler kod listeleri bölümünde [<mark style="color:blue;">Ödeme Şekli Kodları</mark>](https://developer.nilvera.com/kod-listeleri#oedeme-sekli-kodlari) altında belirtilmiştir.

> **ChannelCode:** Ödeme kanalı kodunun girileceği alandır. Alabileceği değerler kod listeleri bölümünde [<mark style="color:blue;">Ödeme Kanal Kodları</mark>](https://developer.nilvera.com/kod-listeleri#oedeme-kanal-kodlari) altında belirtilmiştir.

> **DueDate:** Son ödeme günü yıl-ay-gün formatında girilir.

> **PayeeFinancialAccountID:** Ödeme yapılacak hesap girilir.

> **Note:** Ödeme ile ilgili açıklamalar serbest metin olarak girilir.

### OKCInfo

> Ödeme kaydedici cihaz ve fiş bilgisinin girileceği alandır.

```csharp
public class OKCInfoDto
{
    public string ID { get; set; }
    public DateTime IssueDate { get; set; }
    public string Time { get; set; }
    public string ZNo { get; set; }
    public string EndPointID { get; set; }
    public string DocumentDescription { get; set; }
}
```

> **ID:** Fiş numarası girilir.

> **IssueDate:** Fiş tarihi girilir.

> **Time:** Fiş saati girilir.

> **ZNo:** Z Rapor numarası girilir.

> **EndPointID:** ÖKC Seri numarası girilir.

> **DocumentDescription:** Fiş tipi girilir. Alabileceği değerler kod listeleri bölümünde [<mark style="color:blue;">OKC Fiş Tipleri</mark>](https://developer.nilvera.com/kod-listeleri#okc-fis-tipleri) altında belirtilmiştir.

### ReturnInvoiceInfo

> İade edilen faturaların bilgilerinin girileceği alandır. Birden fazla giriş yapılabilir.

```csharp
public class ReturnInvoiceInfoDto
{
    public string InvoiceNumber { get; set; }
    public DateTime IssueDate { get; set; }
}
```

```javascript
ArchiveInvoice.InvoiceInfo.ReturnInvoiceInfo = [
    { InvoiceNumber:"EAR0000000000001", IssueDate: "2022-03-07" },
    { InvoiceNumber:"EAR0000000000002", IssueDate: "2022-03-08" },
];
```

**ISDespatch**

> e-Arşiv fatura üzerinde **“İrsaliye yerine geçer”** ibaresinin bulunup bulunmamasının belirtileceği alandır. Fatura malın teslimi anında düzenleniyor ve irsaliye kullanılmıyorsa ISDespatch alanı **true** olarak ayarlanır. Böylelikle fatura irsaliye yerine geçecek şekilde kullanılabilir.

### SalesPlatform

> Enum veri tipinde bir nesnedir. Satışın yapıldığı platformu belirtmek için kullanılır. **NORMAL, INTERNET** değerlerini alabilir.

```csharp
public enum SalesPlatform
{
     NORMAL = 0,
     INTERNET = 1 
}
```

```javascript
ArchiveInvoice.InvoiceInfo.SalesPlatform = "NORMAL";
```

### SendType

> Enum veri tipinde bir nesnedir. E-Arşiv faturasının alıcıya nasıl teslim edildiğinin belirtileceği alandır. **KAGIT, ELEKTRONIK** değerlerini alabilir.

```csharp
public enum SendType
{ 
     KAGIT = 1,
     ELEKTRONIK = 2
}
```

```javascript
ArchiveInvoice.InvoiceInfo.SendType = "ELEKTRONIK";
```

{% hint style="info" %}
Satış kanalı (SalesPlatform) **INTERNET** olması durumunda gönderim tipi <mark style="color:red;">**ELEKTRONIK**</mark> olmak zorundadır.
{% endhint %}

### InternetInfo

> İnternet satışlarında e-Arşiv faturada olması gereken bilgilerin girileceği alandır.

{% hint style="info" %}
**İnternet** satışlarında <mark style="color:red;">**doldurulması**</mark> zorunludu&#x72;**.**
{% endhint %}

```csharp
public class InternetInfoDto
{
     public string WebSite { get; set; }
     public string PaymentMethod { get; set; }
     public string PaymentMethodName { get; set; }
     public string PaymentAgentName { get; set; }
     public DateTime PaymentDate { get; set; }
     public string TransporterName { get; set; }
     public string TransporterRegisterNumber { get; set; }
     public DateTime TransportDate { get; set; }
}
```

> **WebSite:** Satışın yapıldığı web sitesi bilgisinin girileceği alandır.

> **PaymentMethod:** Ödeme yönteminin girileceği alandır. Aşağıdaki değerleri alabilir.
>
> * KREDIKARTI/BANKAKARTI
> * EFT/HAVALE
> * KAPIDAODEME
> * ODEMEARACISI
> * DIGER

> **PaymentMethodName:** Ödeme yöntemi olarak **DIGER** girildiğinde buraya ödeme yöntemi açıklaması girilmesi gerekir.
>
> Ödeme yöntemi <mark style="color:red;">**‘DIGER’**</mark> olması durumunda zorunludur.

> **PaymentAgentName:** Ödeme aracısı bilgisinin girileceği alandır.

> **PaymentDate:** Ödeme tarihinin girileceği alandır.
>
> * Ödeme yönteminin **DIGER** olduğu durumda <mark style="color:blue;">**zorunlu değil**</mark>, onun dışında <mark style="color:red;">**zorunludur**</mark>.

{% hint style="info" %}
**"TransporterName, TransporterRegisterNumber, TransportDate"** alanları fatura kalemlerinin hizmet olmadığı yani taşıma işlemi olduğu durumda <mark style="color:red;">**zorunludur**</mark>.
{% endhint %}

> **TransporterName:** Taşıyıcı ünvan bilgisinin girileceği alandır.

> **TransporterRegisterNumber:** Taşıyıcı VKN/TCKN bilgisinin girileceği alandır.

> **TransportDate:** Taşıma tarihinin girileceği alandır.

### Expenses

> Faturada masral eklenmek istenildiğinde kullanılan alandır.

```
public class ExpensesDto
    {
        public ExpenseType ExpenseType { get; set; }
        public decimal Percent { get; set; }
        public decimal Amount { get; set; }
    }
```

> **ExpenseType:** Masraf türü girilir.

> **Percent:** Masraf yüzdesi girilir.

> **Amount:** Masrafın KDV hariç tutarı girilir.

### InvesmentIncentive

> Yatırım teşvik ile ilgili faturalarda kullanılır.

```
public class InvestmentIncentiveDto
    {
        public string DocumentNumber { get; set; }
        public DateTime DocumentDate { get; set; }
    }
```

> **DocumentNumber:** Yatırım teşvik belge numarası girilir.

> **DocumentDate:** Yatırım teşvik belgesinin tarihi girilir.

[^1]:
