# InvoiceInfo

### UUID

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

```json5
EInvoice.InvoiceInfo.UUID = 'b8787efb-639d-4efc-85b5-953bf1dbaac0';
```

{% 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.

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

{% hint style="info" %}

* TemplateUUID alanının **dolu** ve TemplateBase64String alanının <mark style="color:red;">**boş olması durumunda**</mark> girilen TemplateUUID bilgisine ait tasarım faturaya eklenecektir.
* TemplateBase64String alanının **dolu olması** durumunda TemplateUUID alanına <mark style="color:red;">**bakılmaksızın**</mark> TemplateBase64String bilgisi faturanın tasarımı olarak eklenecektir.
* TemplateUUID ve TemplateBase64String <mark style="color:red;">**alanları boş geçilirse**</mark> faturaya **varsayılan** tasarım eklenecektir.
  {% endhint %}

### TemplateBase64String

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

{% hint style="info" %}

* TemplateUUID alanının **dolu** ve TemplateBase64String alanının <mark style="color:red;">**boş olması durumunda**</mark> girilen TemplateUUID bilgisine ait tasarım faturaya eklenecektir.
* TemplateBase64String alanının **dolu olması** durumunda TemplateUUID alanına <mark style="color:red;">**bakılmaksızın**</mark> TemplateBase64String bilgisi faturanın tasarımı olarak eklenecektir.
* TemplateUUID ve TemplateBase64String <mark style="color:red;">**alanları boş geçilirse**</mark> faturaya **varsayılan** tasarım eklenecektir.
  {% 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
EInvoice.InvoiceInfo.InvoiceType = 0;
```

{% hint style="info" %}
Fatura tipi <mark style="color:red;">**"ISTISNA"**</mark> olması durumunda ;\
TaxExemptionReasonInfo nesnesinde bulunan **"KDVExemptionReasonCode"** alanına KDV istisna muafiyet sebebi girilmelidir. Alabileceği değerler kod listeleri bölümünde [KDV Muafiyet Sebepleri](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 ;

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

### InvoiceSerieOrNumber

> Bu alana 16 haneli e-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.

```javascript
//Manuel Fatura Numarası
EInvoice.InvoiceInfo.InvoiceSerieOrNumber = "EFT2022000000001";

//Seri Bilgisi
EInvoice.InvoiceInfo.InvoiceSerieOrNumber = "EFT";
```

{% 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
EInvoice.InvoiceInfo.IssueDate = "2022-01-23T10:20:39.846Z";
```

### CurrencyCode

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

```javascript
EInvoice.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.

### InvoiceProfile

> Enum veri tipinde bir nesnedir. Aşağıdaki bulunan değerleri alabilir. E-Faturanın senaryosunun belirtileceği alandır.

```csharp
public enum InvoiceProfile 
{ 
        TEMELFATURA = 1,
        TICARIFATURA = 2,
        IHRACAT = 3,
        YOLCUBERABERFATURA = 4,
        EARSIVFATURA = 5,
        KAMU = 6,
        HKS = 7,
        ENERJI = 8,
        ILAC_TIBBICIHAZ = 9,
        OZELFATURA = 10,
        YATIRIMTESVIK = 11
}
```

{% tabs %}
{% tab title="TEMELFATURA" %}

> Fatura alıcısı tarafından herhangi bir yanıt beklemeden otomatik olarak kabul edilir. Reddedilmesi gereken durumda alıcının iade faturası kesmesi gerekir.
> {% endtab %}

{% tab title="TICARIFATURA" %}

> Bu fatura senaryosunda alıcı faturaya 8 gün içerisinde KABUL/RED yanıtı dönebilir. Eğer 8 Gün içerisinde alıcıdan herhangi bir yanıt gelmezse fatura otomatik olarak kabul edilir.
> {% endtab %}

{% tab title="IHRACAT" %}

> Gümrük Beyannamesi ekinde yer alan mal ihracı faturaları için kullanılacak senaryodur. Fatura GTB ye otomatik olarak iletilir Kabul olması durumunda 23 haneli referans numarası sisteme GTB tarafından gönderilir.
> {% endtab %}

{% tab title="EARSIVFATURA" %}

> E-Arşiv faturaları için kullanılması zorunlu olan senaryodur.
> {% endtab %}

{% tab title="KAMU" %}

> Kamu Kurumlarına kesilecek e-Fatura için kullanılması gereken senaryodur.
> {% endtab %}
> {% endtabs %}

```
EInvoice.InvoiceInfo.InvoiceProfile = 2;
```

### 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; }
}
```

### 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; }
}
```

### 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.<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 %}

### 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 [KDV Muafiyet Sebepleri](https://developer.nilvera.com/kod-listeleri#kdv-muafiyet-sebepleri) / [ÖTV Muafiyet Sebepleri](https://developer.nilvera.com/kod-listeleri#oetv-muafiyet-sebepleri) altında belirtilmiştir.

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

```javascript
EInvoice.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.

### PaymentMeansInfo

> Ö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 Ödeme Şekli Kodları altında belirtilmiştir.

> **ChannelCode:** Ödeme kanalı kodunun girileceği alandır. Alabileceği değerler kod listeleri bölümünde Ödeme Şekli Kodları 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 OKC Fiş 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
EInvoice.InvoiceInfo.ReturnInvoiceInfo = [
    { InvoiceNumber:"EFT0000000000001", IssueDate: "2022-03-05" },
    { InvoiceNumber:"EFT0000000000002", IssueDate: "2022-03-06" },
];
```

### AccountingCost

> Faturanın tipi <mark style="color:red;">**SGK**</mark> olması durumunda SGK Fatura tipinin girileceği alandır. Alabileceği değerler kod listeleri bölümünde SGK Fatura altında belirtilmiştir.

```javascript
EInvoice.InvoiceInfo.AccountingCost = "SAGLIK_MED";
```

### InvoicePeriod

> Faturanın tipi <mark style="color:red;">**SGK**</mark> olması durumunda **'Dönem Başlangıç ve Bitiş Tarihinin'** girileceği alandır.&#x20;

```csharp
public class InvoicePeriodDto
{
     public DateTime StartDate { get; set; }
     public DateTime StartTime { get; set; }
     public DateTime EndDate { get; set; }
     public DateTime EndTime { get; set; }
}
```

### SGKInfo

> Faturanın tipi <mark style="color:red;">**SGK**</mark> olması durumunda **'SGK Şirket Adı, Dokuman Numarası ve SGK Şirket Kodunun'** girileceği alandır.

```csharp
public class SGKInfoDto
{
     public string RegisterName { get; set; }
     public string DocumentNumber { get; set; }
     public string RegisterCode { get; set; }
}
```

> **RegisterName:** SGK Şirket adı girilir.

> **DocumentNumber:** Dokuman numarası girilir.

> **RegisterCode:** SGK Şirket kodu girilir.

### 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.
