PHPackages                             evrenonur/fatura - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. evrenonur/fatura

ActiveLibrary[API Development](/categories/api)

evrenonur/fatura
================

PHP için GİB eArşiv/eFatura entegrasyonu. (Forked from mlevent/fatura)

v1.0.0(9mo ago)1420↓33.3%MITPHPPHP ^8.1

Since Aug 11Pushed 9mo agoCompare

[ Source](https://github.com/evrenonur/fatura)[ Packagist](https://packagist.org/packages/evrenonur/fatura)[ Docs](https://github.com/evrenonur/fatura)[ RSS](/packages/evrenonur-fatura/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (4)Versions (2)Used By (0)

🧾 Fatura
========

[](#-fatura)

GİB e-Arşiv portal üzerinde; e-Fatura, e-SMM, e-Müstahsil oluşturma, düzenleme, imzalama vb. işlemlere olanak tanır.

[![](https://camo.githubusercontent.com/d8aec75271f10ae198a269afd75ef0c13bd1838a504f0dca1a727d51c6cebd57/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646570656e64656e63792d762f6d6c6576656e742f6661747572612f7068703f7374796c653d706c6173746963)](https://camo.githubusercontent.com/d8aec75271f10ae198a269afd75ef0c13bd1838a504f0dca1a727d51c6cebd57/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646570656e64656e63792d762f6d6c6576656e742f6661747572612f7068703f7374796c653d706c6173746963)[![](https://camo.githubusercontent.com/c4a0aae106a0d9d5bdfb2b4fff3e22825a16517cdc36a692f66fe8d5a2540e5b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d6c6576656e742f6661747572613f7374796c653d706c6173746963)](https://camo.githubusercontent.com/c4a0aae106a0d9d5bdfb2b4fff3e22825a16517cdc36a692f66fe8d5a2540e5b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d6c6576656e742f6661747572613f7374796c653d706c6173746963)[![](https://camo.githubusercontent.com/b6ba6a55a50dcae81f8765a92fc6c447dd755d0b13667fd794630629feec2cb8/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f6d6c6576656e742f6661747572613f7374796c653d706c6173746963)](https://camo.githubusercontent.com/b6ba6a55a50dcae81f8765a92fc6c447dd755d0b13667fd794630629feec2cb8/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f6d6c6576656e742f6661747572613f7374796c653d706c6173746963)[![](https://camo.githubusercontent.com/0dc7fdb4c79e264c1e938ddd2e84a88cc236c49b545febc2a2cc38dc7e357430/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f6d6c6576656e742f6661747572613f7374796c653d706c6173746963)](https://camo.githubusercontent.com/0dc7fdb4c79e264c1e938ddd2e84a88cc236c49b545febc2a2cc38dc7e357430/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f6d6c6576656e742f6661747572613f7374796c653d706c6173746963)[![](https://camo.githubusercontent.com/63b225f60c6ae21037c90a3cd05ff68cdbc69b405fc20c89ffb2d59d2f35a7c2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6d6c6576656e742f6661747572613f7374796c653d706c6173746963)](https://camo.githubusercontent.com/63b225f60c6ae21037c90a3cd05ff68cdbc69b405fc20c89ffb2d59d2f35a7c2/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6d6c6576656e742f6661747572613f7374796c653d706c6173746963)[![](https://camo.githubusercontent.com/d52ffa67793e31284fac44139cc1f2a8db1b7a51bf80f0f0b1357840ec5fb34d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6d6c6576656e742f6661747572613f7374796c653d706c6173746963)](https://camo.githubusercontent.com/d52ffa67793e31284fac44139cc1f2a8db1b7a51bf80f0f0b1357840ec5fb34d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6d6c6576656e742f6661747572613f7374796c653d706c6173746963)[![](https://camo.githubusercontent.com/89113bc462395cd4fd6e569332ae75ce965e8832fe2e3f8333e614e9edd7ca9a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f6d6c6576656e742f6661747572613f7374796c653d706c6173746963)](https://camo.githubusercontent.com/89113bc462395cd4fd6e569332ae75ce965e8832fe2e3f8333e614e9edd7ca9a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f6d6c6576656e742f6661747572613f7374796c653d706c6173746963)

[![Fatura](https://camo.githubusercontent.com/2d3440ae7d7eb3d72765997f571832ecf81e26657d973b705116ea669071bc45/68747470733a2f2f692e696d6775722e636f6d2f527a5a547565762e706e67)](https://camo.githubusercontent.com/2d3440ae7d7eb3d72765997f571832ecf81e26657d973b705116ea669071bc45/68747470733a2f2f692e696d6775722e636f6d2f527a5a547565762e706e67)

Başlarken
---------

[](#başlarken)

Bu paket GİB'e tabi şahıs şirketi ya da şirket hesapları ile çalışır ve bu kişiler adına resmi fatura/makbuz oluşturur. GİB e-Arşiv portala tarayıcınızdan giriş yapmak için aşağıdaki linkleri kullanabilirsiniz;

-
-

> Kullanıcı kodu ve parola bilgilerini muhasebecinizden ya da GİB - İnteraktif Vergi Dairesi'nden edinebilirsiniz.

Fatih Kadir Akın'ın [fatura.js](https://github.com/f/fatura/) paketinden faydalanılmıştır.

Kurulum
-------

[](#kurulum)

🛠️ Paketi composer ile projenize dahil edin;

```
composer require mlevent/fatura
```

🎉 Özellikler
------------

[](#-özellikler)

- [Api Bağlantısı](#api-ba%C4%9Flant%C4%B1s%C4%B1)
- [Belge Oluşturma](#belge-olu%C5%9Fturma)
    - [e-Fatura](#e-fatura)
        - [Satış](#sat%C4%B1%C5%9F)
        - [İade](#i%CC%87ade)
        - [Tevkifat](#tevkifat)
        - [İstisna](#i%CC%87stisna)
        - [Özel Matrah](#%C3%B6zel-matrah)
    - [e-Müstahsil](#e-m%C3%BCstahsil)
    - [e-SMM](#e-smm)
- [Belge Güncelleme](#belge-g%C3%BCnceleme)
- [Belge Silme](#belge-silme)
- [Belge İmzalama](#belge-i%CC%87mzalama)
    - [Sms ile İmzalama](#sms-ile-i%CC%87mzalama)
- [Belge Listeleme](#belge-listeleme)
    - [Düzenlenen Belgeler](#d%C3%BCzenlenen-belgeler)
    - [Adıma Düzenlenen Belgeler](#ad%C4%B1ma-d%C3%BCzenlenen-belgeler)
    - [Belge Detayları](#belge-detaylar%C4%B1)
    - [HTML Çıktı Alma](#html-%C3%A7%C4%B1kt%C4%B1-alma)
    - [Belge İndirme Adresi](#belge-i%CC%87ndirme-adresi)
    - [Belgeyi Sunucuya Kaydetme](#belgeyi-sunucuya-kaydetme)
- [Vergiler](#vergi-ekleme)
    - [Vergi Ekleme](#vergi-ekleme)
    - [Vergi Listesi](#vergi-listesi)
    - [Vergiler ve Toplamlar](#vergiler-ve-toplamlar)
- [İptal/İtiraz Talepleri](#i%CC%87ptali%CC%87tiraz-talepleri)
- [GİB Profil Bilgileri](#gi%CC%87b-profil-bilgileri)
- [Mükellef Sorgulama](#m%C3%BCkellef-bilgileri)
- [Birimler](#birimler)

🔗Api Bağlantısı
---------------

[](#api-bağlantısı)

### Test Kullanıcısı

[](#test-kullanıcısı)

e-Arşiv portal üzerinden yeni bir test kullanıcısı oluşturmak ve token almak için;

```
use Mlevent\Fatura\Gib;
use Mlevent\Fatura\Client;

 Client::setProxy('');
$gib = (new Gib)->setTestCredentials()
                ->login();

echo $gib->getToken();
```

Token ve kullanıcı bilgilerine ulaşmak için;

```
print_r($gib->getToken());
print_r($gib->getCredentials());
```

### Gerçek Kullanıcı

[](#gerçek-kullanıcı)

e-Arşiv portal kullanıcı bilgilerinizi `setCredentials` metodunu kullanarak tanımlayabilirsiniz.

```
use Mlevent\Fatura\Gib;

$gib = (new Gib)->setCredentials('Kullanıcı Kodu', 'Parola')
                ->login();

echo $gib->getToken();
```

Bilgilerinizi doğrudan `login` metoduyla da tanımlayabilirsiniz.

```
$gib->login('Kullanıcı Kodu', 'Parola')
```

> Not: Token değerini herhangi bir yerde kullanmanız gerekmeyecek.

### Oturum Sonlandırma

[](#oturum-sonlandırma)

Herhangi bir kısıtlama veya oturum sorunu yaşamamak adına, işlemlerden sonra oturumu sonlandırabilir ya da `setToken` yöntemini kullanabilirsiniz.

```
$gib->logout();
```

Bir kez token aldıktan sonra token süresi sonlanana kadar login/logout olmadan da işlem yapılabilir.

```
$gib->setToken('f72b59eac1366d3115d80fa9dc971fc05daa7aaeea2c4715efce537c6d052e0cf0cdcd28db2f5928bf35d9590f6143f8e58bda5a5fb15ab67964905a4363daf0');
```

> Token süresi sonlandığında yeni token alınmalıdır.

📃Belge Oluşturma
----------------

[](#belge-oluşturma)

Model kullanırken named arguments (adlandırılmış değişkenler) veya dizilerle çalışabilirsiniz. Oluşturulan belgeler, daha sonra imzalanmak üzere e-Arşiv portalda taslaklara kaydedilir.

> `faturaUuid` ve `belgeNumarasi` belirtildiyse; portalda bu bilgilerle eşleşen belge güncellenir, diğer durumda portal üzerinde yeni bir belge oluşturulur. [Belge Güncelleme](#belge-g%C3%BCnceleme) sayfasını kontrol edin.

e-Fatura
--------

[](#e-fatura)

Kütüphaneyi kullanarak aşağıdaki fatura türleri ile çalışabilirsiniz;

- Satış
- İade
- Tevkifat
- İstisna
- Özel Matrah

> Döviz cinsinden fatura düzenlemek için modelde `paraBirimi` ve `dovizKuru` parametreleri kullanılmalıdır.

Belge oluştururken model kullanmak istemiyorsanız `/examples` klasörü altındaki [createInvoiceWithoutModel.php](https://github.com/mlevent/fatura/blob/master/examples/createInvoiceWithoutModel.php) dosyasındaki örneği inceleyebilirsiniz.

### Satış

[](#satış)

Satış faturası oluşturabilmek için, **faturaTipi** `InvoiceType::Satis` gönderilmelidir.

```
use Mlevent\Fatura\Enums\Currency;
use Mlevent\Fatura\Enums\InvoiceType;
use Mlevent\Fatura\Enums\Unit;
use Mlevent\Fatura\Gib;
use Mlevent\Fatura\Models\InvoiceModel;
use Mlevent\Fatura\Models\InvoiceItemModel;

// Fatura detayları
$invoice = new InvoiceModel(
    tarih            : '20/10/2022',       // ☑️ Opsiyonel @string      @default=(dd/mm/yyyy)
    saat             : '23:50:48',         // ☑️ Opsiyonel @string      @default=(hh/mm/ss)
    paraBirimi       : Currency::USD,      // ☑️ Opsiyonel @Currency    @default=Currency::TRY
    dovizKuru        : 18.56,              // ☑️ Opsiyonel @float       @default=0
    faturaTipi       : InvoiceType::Satis, // ☑️ Opsiyonel @InvoiceType @default=InvoiceType::Satis
    vknTckn          : '11111111111',      // ✴️ Zorunlu   @string
    vergiDairesi     : '',                 // ✅ Opsiyonel @string
    aliciUnvan       : '',                 // ✅ Opsiyonel @string
    aliciAdi         : 'Mert',             // ✴️ Zorunlu   @string
    aliciSoyadi      : 'Levent',           // ✴️ Zorunlu   @string
    mahalleSemtIlce  : 'Nilüfer',          // ✴️ Zorunlu   @string
    sehir            : 'Bursa',            // ✴️ Zorunlu   @string
    ulke             : 'Türkiye',          // ✴️ Zorunlu   @string
    adres            : '',                 // ✅ Opsiyonel @string
    siparisNumarasi  : '',                 // ✅ Opsiyonel @string
    siparisTarihi    : '',                 // ✅ Opsiyonel @string
    irsaliyeNumarasi : '',                 // ✅ Opsiyonel @string
    irsaliyeTarihi   : '',                 // ✅ Opsiyonel @string
    fisNo            : '',                 // ✅ Opsiyonel @string
    fisTarihi        : '',                 // ✅ Opsiyonel @string
    fisSaati         : '',                 // ✅ Opsiyonel @string
    fisTipi          : '',                 // ✅ Opsiyonel @string
    zRaporNo         : '',                 // ✅ Opsiyonel @string
    okcSeriNo        : '',                 // ✅ Opsiyonel @string
    binaAdi          : '',                 // ✅ Opsiyonel @string
    binaNo           : '',                 // ✅ Opsiyonel @string
    kapiNo           : '',                 // ✅ Opsiyonel @string
    kasabaKoy        : '',                 // ✅ Opsiyonel @string
    postaKodu        : '',                 // ✅ Opsiyonel @string
    tel              : '',                 // ✅ Opsiyonel @string
    fax              : '',                 // ✅ Opsiyonel @string
    eposta           : '',                 // ✅ Opsiyonel @string
    not              : '',                 // ✅ Opsiyonel @string
);

// Ürün/Hizmetler
$invoice->addItem(
    new InvoiceItemModel(
        malHizmet     : 'Çimento',  // ✴️ Zorunlu   @string
        miktar        : 3,          // ✴️ Zorunlu   @float
        birim         : Unit::M3,   // ☑️ Opsiyonel @Unit @default=Unit::Adet
        birimFiyat    : 1259,       // ✴️ Zorunlu   @float
        kdvOrani      : 18,         // ✴️ Zorunlu   @float
        iskontoOrani  : 25,         // ✅ Opsiyonel @float
        iskontoTipi   : 'Arttırım', // ☑️ Opsiyonel @string @default=İskonto
        iskontoNedeni : '',         // ✅ Opsiyonel @string
    )
);

$gib = (new Gib)->login('333333054', '******');

if ($gib->createDraft($invoice)) {
    echo $invoice->getUuid(); // 04e17398-468d-11ed-b3cb-4ccc6ae28384
}

$gib->logout();
```

### İade

[](#i̇ade)

İade faturası oluşturabilmek için, **faturaTipi** `InvoiceType::Iade` gönderilmeli; iadeye konu faturalar **addReturnItem** metoduyla faturaya eklenmelidir.

```
// Fatura detayları
$invoice = new InvoiceModel(
    faturaTipi: InvoiceType::Iade,
    ...
);

// İade faturası için iadeye konu faturalar
$invoice->addReturnItem(
    new InvoiceReturnItemModel(
        faturaNo        : 'GIB2022000001416',
        duzenlenmeTarihi: '31/12/2022'
    )
);
```

### Tevkifat

[](#tevkifat)

Tevkifatlı fatura oluşturabilmek için, **faturaTipi** `InvoiceType::Tevkifat` gönderilmelidir.

```
// Fatura detayları
$invoice = new InvoiceModel(
    faturaTipi: InvoiceType::Tevkifat,
    ...
);

// Ürün/Hizmetler
$invoice->addItem(
    new InvoiceItemModel(
        tevkifatKodu: 613, // 613 - Çevre, Bahçe ve Bakım Hizmetleri [KDVGUT-(I/C-2.1.3.2.11)]
        ...
    )
);
```

Tevkifat kodlarına ait liste çıktısını almak için;

```
print_r(Tax::KDVTevkifat->codes());

Array
(
    [601] => Array
        (
            [rate] => 40
            [name] => Yapım İşleri ile Bu İşlerle Birlikte İfa Edilen Mühendislik-Mimarlık ve Etüt-Proje Hizmetleri [KDVGUT-(I/C-2.1.3.2.1)]
        )
    ...
```

### İstisna

[](#i̇stisna)

İstisna fatura oluşturabilmek için, **faturaTipi** `InvoiceType::Istisna` gönderilmeli; 12 haneli **gtip** kodu faturaya ait ürün/hizmet eklenirken belirtilebilir.

```
// Fatura detayları
$invoice = new InvoiceModel(
    faturaTipi: InvoiceType::Istisna,
    ...
);

// Ürün/Hizmetler
$invoice->addItem(
    new InvoiceItemModel(
        gtip: '080810100000',
        ...
    )
);
```

### Özel Matrah

[](#özel-matrah)

Özel matrah fatura oluşturabilmek için, **faturaTipi** `InvoiceType::OzelMatrah` gönderilmeli; faturaya ait ürün/hizmet eklenirken **ozelMatrahNedeni** ve **ozelMatrahTutari** belirtilmelidir.

```
// Fatura detayları
$invoice = new InvoiceModel(
    faturaTipi: InvoiceType::OzelMatrah,
    ...
);

// Ürün/Hizmetler
$invoice->addItem(
    new InvoiceItemModel(
        ...
        ozelMatrahNedeni: 805, // 805 - Altından Mamül veya Altın İçeren Ziynet Eşyaları İle Sikke Altınların Teslimi
        ozelMatrahTutari: 1250,
    )
);
```

Özel matrah nedenlerine ait liste çıktısını almak için;

```
print_r(InvoiceType::OzelMatrah->reasons());

Array
(
    [801] => Milli Piyango, Spor Toto vb. Oyunlar
    [802] => At yarışları ve diğer müşterek bahis ve talih oyunları
    [803] => Profesyonel Sanatçıların Yer Aldığı Gösteriler, Konserler, Profesyonel Sporcuların Katıldığı Sportif Faaliyetler, Maçlar, Yarışlar ve Yarışmalar
    ...
)
```

e-Müstahsil
-----------

[](#e-müstahsil)

Müstahsil makbuzu ile çalışılacaksa, Gib sınıfı başlatılırken `DocumentType::ProducerReceipt` başlangıç parametresi olarak gönderilmelidir.

```
use Mlevent\Fatura\Enums\Unit;
use Mlevent\Fatura\Gib;
use Mlevent\Fatura\Models\ProducerReceiptModel;
use Mlevent\Fatura\Models\ProducerReceiptItemModel;

// Müstahsil Makbuzu Detayları
$producerReceipt = new ProducerReceiptModel(
    tarih       : '20/10/2022',  // ☑️ Opsiyonel @string @default=(dd/mm/yyyy)
    saat        : '23:50:48',    // ☑️ Opsiyonel @string @default=(hh/mm/ss)
    vknTckn     : '11111111111', // ✴️ Zorunlu   @string
    aliciAdi    : 'Walter',      // ✴️ Zorunlu   @string
    aliciSoyadi : 'Bishop',      // ✴️ Zorunlu   @string
    sehir       : '',            // ✅ Opsiyonel @string
    websitesi   : '',            // ✅ Opsiyonel @string
    not         : '',            // ✅ Opsiyonel @string
    teslimTarihi: '',            // ✅ Opsiyonel @string
);

// Ürün/Hizmetler
$producerReceipt->addItem(
    new ProducerReceiptItemModel(
        malHizmet    : 'Yazılım Hizmeti', // ✴️ Zorunlu @string
        miktar       : 3,                 // ✴️ Zorunlu @float
        birim        : Unit::Saat,        // ✴️ Zorunlu @Unit
        birimFiyat   : 100,               // ✴️ Zorunlu @float
        gvStopajOrani: 20                 // ✴️ Zorunlu @int
    )
);

$service = (new Gib(DocumentType::ProducerReceipt))->login('333333054', '******');

if ($service->createDraft($producerReceipt)) {
    echo $producerReceipt->getUuid(); // 04e17398-468d-11ed-b3cb-4ccc6ae28384
}

$service->logout();
```

e-SMM
-----

[](#e-smm)

Serbest meslek makbuzu ile çalışılacaksa, Gib sınıfı başlatılırken `DocumentType::SelfEmployedReceipt` başlangıç parametresi olarak gönderilmelidir.

```
use Mlevent\Fatura\Enums\Unit;
use Mlevent\Fatura\Gib;
use Mlevent\Fatura\Models\SelfEmployedReceiptModel;
use Mlevent\Fatura\Models\SelfEmployedReceiptItemModel;

// Serbest Meslek Makbuzu
$selfEmployedReceipt = new SelfEmployedReceiptModel(
    tarih          : '20/10/2022',  // ☑️ Opsiyonel @string   @default=(dd/mm/yyyy)
    saat           : '14:25:34',    // ☑️ Opsiyonel @string   @default=(hh/mm/ss)
    paraBirimi     : Currency::USD, // ☑️ Opsiyonel @Currency @default=Currency::TRY
    dovizKuru      : 18.56,         // ☑️ Opsiyonel @float    @default=0
    vknTckn        : '11111111111', // ✴️ Zorunlu   @string
    aliciAdi       : 'Walter',      // ✴️ Zorunlu   @string
    aliciSoyadi    : 'Bishop',      // ✴️ Zorunlu   @string
    aliciUnvan     : '',            // ✅ Opsiyonel @string
    adres          : '',            // ✅ Opsiyonel @string
    binaAdi        : '',            // ✅ Opsiyonel @string
    binaNo         : '',            // ✅ Opsiyonel @string
    kapiNo         : '',            // ✅ Opsiyonel @string
    kasabaKoy      : '',            // ✅ Opsiyonel @string
    mahalleSemtIlce: '',            // ✅ Opsiyonel @string
    sehir          : '',            // ✅ Opsiyonel @string
    postaKodu      : '',            // ✅ Opsiyonel @string
    ulke           : 'Türkiye',     // ✴️ Zorunlu   @string
    vergiDairesi   : '',            // ✅ Opsiyonel @string
    aciklama       : '',            // ✅ Opsiyonel @string
    kdvTahakkukIcin: false,         // ☑️ Opsiyonel @boolean  @default=false
);

$selfEmployedReceipt->addItem(
    new SelfEmployedReceiptItemModel(
        neIcinAlindigi  : 'Dava Vekilliği', // ✴️ Zorunlu   @string
        brutUcret       : 100,              // ✴️ Zorunlu   @float
        kdvOrani        : 18,               // ✴️ Zorunlu   @float
        gvStopajOrani   : 0,                // ✅ Opsiyonel @int
        kdvTevkifatOrani: 0,                // ✅ Opsiyonel @int
    )
);

$service = (new Gib(DocumentType::SelfEmployedReceipt))->login('333333054', '******');

if ($service->createDraft($producerReceipt)) {
    echo $producerReceipt->getUuid(); // 04e17398-468d-11ed-b3cb-4ccc6ae28384
}

$service->logout();
```

Not Ekleme
----------

[](#not-ekleme)

Belgelere not eklemek için, `setNote` metodunu kullanabilirsiniz. Not eklenmemiş belgelere otomatik olarak, "yazı ile toplam ödenecek tutar" not olarak eklenir.

```
use Mlevent\Fatura\Models\InvoiceModel;
use Mlevent\Fatura\Models\InvoiceItemModel;

$invoice = new InvoiceModel(...);

$invoice->addItem(
    new InvoiceItemModel(...),
    new InvoiceItemModel(...),
);

$invoice->setNote(number_to_words($invoice->getPaymentTotal())); // ALTI YÜZ OTUZ DÖRT TÜRK LİRASI ALTMIŞ BİR KURUŞ
```

💸Vergi Ekleme
-------------

[](#vergi-ekleme)

Belgedeki hizmetlere `addTax` metodunu kullanarak vergi ekleyebilirsiniz. Vergiler doğrudan belgeye eklenemez, yalnızca öğe modeli üzerinden her bir öğeye ayrı ayrı eklenebilir.

```
use Mlevent\Fatura\Enums\Tax;
use Mlevent\Fatura\Models\InvoiceItemModel;

$invoiceItem = new InvoiceItemModel(
    malHizmet  : 'Çimento',
    birim      : Unit::Ton,
    miktar     : 3,
    birimFiyat : 1259,
    kdvOrani   : 18,
);

// Hizmete vergi ekleme
$invoiceItem->addTax(Tax::Damga,    15)  // %15 damga vergisi
            ->addTax(Tax::GVStopaj, 25); // %25 gelir vergisi

// Vergi kodu kullanarak vergi ekleme
$invoiceItem->addTax(Tax::from(1047), 15); // %15 damga vergisi
```

### Vergi Listesi

[](#vergi-listesi)

Vergi listesine ulaşmak için `cases` statik metodunu kullanabilirsiniz;

```
use Mlevent\Fatura\Enums\Tax;

// Vergiler
foreach (Tax::cases() as $tax) {
    echo $tax->value;   // 4071
    echo $tax->name;    // ElkHavagazTuketim
    echo $tax->alias(); // Elektrik Havagaz Tüketim Vergisi
}
```

### Vergiler ve Toplamlar

[](#vergiler-ve-toplamlar)

Belgeye eklenen öğelere ulaşmak için `getItems` metodunu kullanabilirsiniz;

```
use Mlevent\Fatura\Models\InvoiceModel;
use Mlevent\Fatura\Models\InvoiceItemModel;

$invoice = new InvoiceModel(...);

$invoice->addItem(
    new InvoiceItemModel(...),
    new InvoiceItemModel(...),
);

// Her bir öğeye ait vergiler
foreach ($invoice->getItems() as $item) {

    // Öğeye eklenen vergiler toplamı
    print_r($item->totalTaxAmount());

    // Öğeye eklenen vergilere ait kdv toplamı
    print_r($item->totalTaxVat());

    // Öğeye eklenen vergiler
    print_r($item->getTaxes());

    // Öğeye ait toplamlar
    print_r($item->getTotals());
}

// Belgeye ait vergiler
print_r($invoice->getTaxes());

// Belgeye ait toplamlar
print_r($invoice->getTotals());
```

Belge Günceleme
---------------

[](#belge-günceleme)

Fatura oluşturulurken `faturaUuid` ve `belgeNumarasi` belirtildiyse; portalda bu bilgilerle eşleşen belge güncellenir, diğer durumda portal üzerinde yeni bir belge oluşturulur.

```
// Fatura detayları
$invoice = new InvoiceModel(
    uuid          : '04e17398-468d-11ed-b3cb-4ccc6ae28384',
    belgeNumarasi : 'GIB2022000000003',
    ...
);
```

Belgeleri güncellemek için bir diğer yöntem; önce düzenlenecek belgeyi getirmek ve daha sonra düzenlenecek alanlarla birlikte güncelleme isteği göndermektir. Örneğin oluşturulan faturada yalnızca alıcı bilgilerini güncellemek isteyebilirsiniz;

```
use Mlevent\Fatura\Gib;
use Mlevent\Fatura\Models\InvoiceModel;

$gib = (new Gib)->login('333333054', '******');

$invoice = InvoiceModel::importFromApi(
    $gib->getDocument('c4e9e0a2-4788-11ed-bbd4-4ccc6ae28384')
);

$invoice->aliciAdi    = 'Nureddin';
$invoice->aliciSoyadi = 'Nebati';
$invoice->adres       = 'Bankalar Cd. Faiz Sk. No:128/A';

// Faturayı güncelle
if ($gib->createDraft($invoice)) {
    echo $invoice->getUuid(); // c4e9e0a2-4788-11ed-bbd4-4ccc6ae28384
}
```

> `addItem` metodunun kullanılması durumunda içe aktarılmış öğeler silinecektir.

Belge Silme
-----------

[](#belge-silme)

Taslak belgeleri silmek için `deleteDraft` metodu kullanılmalıdır. Metod bir dizi kabul eder. Gönderilecek dizi içerisinde silinecek belge veya belgelere ait `uuid` bilgisi bulunması gerekir.

Aşağıdaki örnek, bilinen bir tarih aralığındaki tüm taslak belgeleri siler.

```
$fetchToDelete = $gib->selectColumn('ettn')
                     ->onlyUnsigned()
                     ->getAll('10/10/2022', '10/15/2022');

if ($gib->deleteDraft($fetchToDelete)) {
    echo "{$gib->rowCount()} adet belge silindi!"; // x adet belge silindi
}
```

Belirsiz bir tarih aralığındaki taslak belgeler silinmek isteniyorsa;

```
$setToDelete = [
    '90559052-8bd0-4f68-a733-12157cf53cfb',
    '521ce2b1-290c-45fa-8312-d455672289ef',
];

if ($gib->deleteDraft($setToDelete)) {
    echo "{$gib->rowCount()} adet belge silindi!"; // 2 adet belge silindi
}
```

Belge İmzalama
--------------

[](#belge-i̇mzalama)

☢️ Belge imzalama, faturanın/makbuzun kesilmesi işlemidir ve vergi sisteminde mali veri oluşturur. Belge imzalandıktan sonra üzerinde değişiklik yapılamaz ve silinemez. Bu nedenle dikkatli kullanınız.

### 📲SMS ile İmzalama

[](#sms-ile-i̇mzalama)

> SMS doğrulama işlemleri test hesaplarıyla gerçekleştirilemez.

SMS doğrulamasına başlamak için `startSmsVerification` yöntemi kullanılmalıdır. Yöntem portalda kayıtlı gsm numarasına bir doğrulama kodu gönderecek ve imzalama işlemi için daha sonra kullanacağınız bir ID döndürecektir.

```
$operationId = $gib->startSmsVerification();
```

Doğrulama işlemini tamamlamak için kullanılacak `completeSmsVerification` yöntemine; SMS ile gelen doğrulama kodu, SMS doğrulaması başlatılırken alınan Operasyon ID'si ve onaylanacak belgelere ait UUID değerlerinin bulunduğu bir dizi olmak üzere 3 farklı parametre gönderilmelidir.

```
// Portaldan belirli bir tarih aralığındaki tüm onaysız belgeleri getir
$setToSign = $gib->selectColumn('ettn')
                 ->onlyUnsigned()
                 ->getAll('01/10/2022', '15/10/2022');

// Onaylanacak belgelere ait UUID'leri kendiniz de belirtebilirsiniz
$setToSign = [
    '2e989428-63ca-11ed-b617-4ccc6ae28384',
    '54c5df01-038b-4e01-973d-cd31e4a547f3',
];

// Belgeleri onayla
if ($gib->completeSmsVerification($smsCode, $operationId, $setToSign)) {
    echo "{$gib->rowCount()} adet belge onaylandı!"; // x adet belge onaylandı
}
```

Belge Listeleme
---------------

[](#belge-listeleme)

Oluşturulan taslak belgeleri, tarih aralığı belirtmek koşuluyla farklı şekillerde listeleyebilirsiniz.

### Düzenlenen Belgeler

[](#düzenlenen-belgeler)

```
$documents = $gib->getAll('01/09/2022', '15/09/2022');
```

Bu örnek, aşağıdaki şu diziyi döndürecektir;

```
Array
(
    [0] => Array
        (
            [belgeNumarasi] => GIB2022000000356
            [aliciVknTckn] => 11111111111
            [aliciUnvanAdSoyad] => Mert Levent
            [belgeTarihi] => 09-10-2022
            [belgeTuru] => FATURA
            [onayDurumu] => Onaylanmadı
            [ettn] => c4e9e0a2-4788-11ed-bbd4-4ccc6ae28384
        )
    ...
)
```

### Adıma Düzenlenen Belgeler

[](#adıma-düzenlenen-belgeler)

> Bu metod artık stabil çalışmıyor gibi görünüyor. Belli bir tarihten sonra adınıza düzenlenmiş belgeler bir süredir GİB Portal'dan alınamıyor.

İki tarih arasındaki gelen faturaları (GİB portaldaki adıyla Adıma Düzenlenen Belgeler) listeler.

```
$documents = $gib->getAllIssuedToMe('01/09/2022', '15/09/2022');
```

### Belge Detayları

[](#belge-detayları)

Portal üzerinde kayıtlı belge detaylarına ulaşmak için;

```
$gib->getDocument('6115993e-3e77-473c-8ea5-c24036b4106c');
```

### Oluşturulan Son Belge

[](#oluşturulan-son-belge)

Portal üzerinde en son oluşturulan belgeye ait detaylara ulaşmak için;

```
$gib->getLastDocument();
```

### HTML Çıktı Alma

[](#html-çıktı-alma)

Portal üzerinde kayıtlı belgeye ait HTML çıktıya ulaşmak için;

```
$gib->getHtml('1d78ef40-6491-11ed-a280-4ccc6ae28384');
```

### Belge İndirme Adresi

[](#belge-i̇ndirme-adresi)

> Belge indirme adresine yalnızca token oluşturduğunuz IP adresi erişebilir. Token sunucuda oluşturulduysa, belgeyi indirmeye yarayan bu link yalnızca sunucuda çalışacaktır. Farklı bir IP adresinden erişilmesi durumunda `Oturum geçersiz, token yok` hatası dönecektir. Belgeyi sunucunuza indirmek için [saveToDisk](#belgeyi-sunucuya-kaydetme) metodonu kullanabilirsiniz.

Portal üzerinde kayıtlı belgeye ait indirme adresine ulaşmak için;

```
$gib->getDownloadURL('44ba5b87-81a3-4474-bd0f-27d771fb4064');
```

### Belgeyi Sunucuya Kaydetme

[](#belgeyi-sunucuya-kaydetme)

Portal üzerinde kayıtlı belgeyi sunucuya kaydetmek için;

```
$gib->saveToDisk('44ba5b87-81a3-4474-bd0f-27d771fb4064');
```

Belge Filtreleme
----------------

[](#belge-filtreleme)

🔍 Kayıtları zincirleme metodlar kullanarak kolayca filtreleyebilirsiniz.

```
$documents = $gib->onlyUnsigned()
                 ->findRecipientName('mehmet')
                 ->getAll('01/09/2022', '15/09/2022');
```

> Alıcı adında `mehmet` ifadesi geçen imzalanmamış kayıtlar döner.

---

### Kullanılabilir Filtreleme Yöntemleri

[](#kullanılabilir-filtreleme-yöntemleri)

MetodAçıklama`onlyInvoice()`Faturalar.`onlyProducerReceipt()`Müstahsil makbuzları.`onlySelfEmployedReceipt()`Serbest meslek makbuzları.`onlySigned()`İmzalanmış belgeler.`onlyUnSigned()`İmzalanmamış belgeler.`onlyDeleted()`Silinmiş belgeler.`findRecipientName($value)`Alıcı adına göre filtreleme.`findRecipientId($value)`Alıcı vergi numarasına göre filtreleme.`findDocumentId($value)`Belge numarasına göre filtreleme.`findEttn($value)`Uuid numarasına göre filtreleme.`setLimit($limit, $offset)`Sonuçlar için limit belirleme.`sortAsc()`Önce ilk kayıtlar.`sortDesc()`(Varsayılan) Önce son kayıtlar.İptal/İtiraz Talepleri
----------------------

[](#i̇ptali̇tiraz-talepleri)

GİB Portalda kayıtlı İptal/İtiraz taleplerine ulaşmak için `getRequests` metodunu kullanabilirsiniz. Sonuç bir dizi şeklinde döner.

```
$requests = $gib->getRequests('07/12/2020', '07/11/2022');
```

Yeni iptal/itiraz talebi oluşturmak için `objectionRequest` ve `cancellationRequest` metodlarını kullanabilirsiniz.

```
use Mlevent\Fatura\Enums\ObjectionMethod;
use Mlevent\Fatura\Gib;

// Portal Bağlantısı
$gib = (new Gib)->setTestCredentials()
                ->login();

// İtiraz Talebi
$gib->objectionRequest(
    objectionMethod : ObjectionMethod::Kep,
    uuid            : '94d0d436-d91d-40c0-a238-e335f29b8275',
    documentId      : 'GIB2020000000218',
    documentDate    : '23/11/2020',
    explanation     : 'Hatalı İşlem'
);

// İptal Talebi
$gib->cancellationRequest(
    uuid        : '94d0d436-d91d-40c0-a238-e335f29b8275',
    explanation : 'Hatalı İşlem'
);
```

GİB Profil Bilgileri
--------------------

[](#gi̇b-profil-bilgileri)

Kayıtlı kullanıcı bilgilerine ulaşmak için `getUserData` metodunu kullanabilirsiniz. Sonuç bir dizi şeklinde döner.

```
$userData = $gib->getUserData();
```

Önce portaldan profil bilgilerini okuyup daha sonra modele import ederek yalnızca belirli alanları güncelleyebilirsiniz.

```
use Mlevent\Fatura\Gib;
use Mlevent\Fatura\Models\UserDataModel;

$gib = (new Gib)->setTestCredentials()
                ->login();

$userData = UserDataModel::import($gib->getUserData());

$userData->apartmanAdi = 'Lale Apartmanı';
$userData->kapiNo      = '12';

if ($gib->updateUserData($userData)) {
    // Bilgileriniz başarıyla güncellendi.
}
```

Mükellef Sorgulama
------------------

[](#mükellef-sorgulama)

TC Kimlik Numarası ya da Vergi Numarası ile mükellef sorgulamaya yarar. Fatura oluşturma aşamasında vergi numarasının doğruluğunu sorgulamak için kullanılabilir. **Test ortamında sonuç boş döner.**

```
$recipientData = $gib->getRecipientData('2920084496');
```

Bu örnek, aşağıdaki şu diziyi döndürecektir;

```
Array
(
    [unvan] => DENİZBANK ANONİM ŞİRKETİ
    [adi] =>
    [soyadi] =>
    [vergiDairesi] => Büyük Mükellefler VD. BAŞKANLIĞI
)
```

Birimler
--------

[](#birimler)

 sayfasını kontrol edin.

### Ürün/Hizmet Birimleri

[](#ürünhizmet-birimleri)

```
use Mlevent\Fatura\Enums\Unit;

foreach (Unit::cases() as $unit) {
    echo $unit->name;    // Dk
    echo $unit->value;   // D61
    echo $unit->alias(); // Dakika
}
```

### Vergi Birimleri

[](#vergi-birimleri)

```
use Mlevent\Fatura\Enums\Tax;

foreach (Tax::cases() as $tax) {
    echo $tax->name;    // BankaMuameleleri
    echo $tax->value;   // 0021
    echo $tax->alias(); // Banka Muameleleri Vergisi
}
```

### Para Birimleri

[](#para-birimleri)

```
use Mlevent\Fatura\Enums\Currency;

foreach (Currency::cases() as $currency) {
    echo $currency->name;    // TRY
    echo $currency->value;   // TRY
    echo $currency->alias(); // Türk Lirası
}
```

📧İletişim
---------

[](#i̇letişim)

İletişim için  adresine e-posta gönderin.

[![Buy Me A Coffee](https://camo.githubusercontent.com/0cf29a542375e1a46e84d8bf5805a4e5c0a6ee98b6547ccdc0c55eed49d99c69/68747470733a2f2f63646e2e6275796d6561636f666665652e636f6d2f627574746f6e732f76322f64656661756c742d79656c6c6f772e706e67)](https://www.buymeacoffee.com/mlevent)

---

☢️ Bu paket vergiye tabi olan mali veri oluşturur. Bu paket nedeniyle oluşabilecek sorunlardan bu paket sorumlu tutulamaz, risk kullanana aittir. Riskli görüyorsanız kullanmayınız.

###  Health Score

35

—

LowBetter than 79% of packages

Maintenance58

Moderate activity, may be stable

Popularity18

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 72.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

274d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/1fc8601ce58b58037771714731b5909d88b0e08cb3d2e5fcf8e28799dd5376fa?d=identicon)[evrenonur](/maintainers/evrenonur)

---

Top Contributors

[![mlevent](https://avatars.githubusercontent.com/u/5323354?v=4)](https://github.com/mlevent "mlevent (98 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (28 commits)")[![evrenonur](https://avatars.githubusercontent.com/u/49561437?v=4)](https://github.com/evrenonur "evrenonur (5 commits)")[![ahmeti](https://avatars.githubusercontent.com/u/5817450?v=4)](https://github.com/ahmeti "ahmeti (2 commits)")[![Muteo42](https://avatars.githubusercontent.com/u/57103505?v=4)](https://github.com/Muteo42 "Muteo42 (2 commits)")[![ofsahin](https://avatars.githubusercontent.com/u/5974792?v=4)](https://github.com/ofsahin "ofsahin (1 commits)")

---

Tags

efaturaearsivgibe faturae arşivinternet vergi dairesi

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/evrenonur-fatura/health.svg)

```
[![Health](https://phpackages.com/badges/evrenonur-fatura/health.svg)](https://phpackages.com/packages/evrenonur-fatura)
```

###  Alternatives

[mlevent/fatura

PHP için GİB eArşiv/eFatura entegrasyonu.

1655.9k](/packages/mlevent-fatura)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[furkankadioglu/efatura

EFatura

4364.6k1](/packages/furkankadioglu-efatura)[wheelpros/fitment-platform-api

Magento 2 (Open Source)

12.1k1.2k](/packages/wheelpros-fitment-platform-api)[tencentcloud/tencentcloud-sdk-php

TencentCloudApi php sdk

3731.2M42](/packages/tencentcloud-tencentcloud-sdk-php)[commercetools/commercetools-sdk

The official PHP SDK for the commercetools Composable Commerce APIs

19281.5k](/packages/commercetools-commercetools-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
