PHPackages                             talipcakir/earsivportal - 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. talipcakir/earsivportal

ActiveLibrary[API Development](/categories/api)

talipcakir/earsivportal
=======================

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

v0.1.0(1y ago)08[1 PRs](https://github.com/talipcakir/earsivportal/pulls)MITPHPPHP ^8.3CI passing

Since Jan 24Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/talipcakir/earsivportal)[ Packagist](https://packagist.org/packages/talipcakir/earsivportal)[ Docs](https://github.com/talipcakir/gib_earsiv)[ RSS](/packages/talipcakir-earsivportal/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (4)Versions (3)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.

[![dependency-v](https://camo.githubusercontent.com/8e3a89918c57e5065bccb793a9a9cb803be5ff40f7960f9cbb0ff0b70f62a31c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646570656e64656e63792d762f74616c697063616b69722f656172736976706f7274616c2f7068703f7374796c653d706c6173746963)](https://camo.githubusercontent.com/8e3a89918c57e5065bccb793a9a9cb803be5ff40f7960f9cbb0ff0b70f62a31c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646570656e64656e63792d762f74616c697063616b69722f656172736976706f7274616c2f7068703f7374796c653d706c6173746963)[![version](https://camo.githubusercontent.com/bcbf9494db2b3ec0bc2f61884c4224a7fcb93e1b6c7b64b413e6e8432f3de0e3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f74616c697063616b69722f656172736976706f7274616c3f7374796c653d706c6173746963)](https://camo.githubusercontent.com/bcbf9494db2b3ec0bc2f61884c4224a7fcb93e1b6c7b64b413e6e8432f3de0e3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f74616c697063616b69722f656172736976706f7274616c3f7374796c653d706c6173746963)[![last-commit](https://camo.githubusercontent.com/583fb170db1c3122e382f5afa309eb10ae5feb61bd776593c6e69d9af9956b02/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f74616c697063616b69722f656172736976706f7274616c3f7374796c653d706c6173746963)](https://camo.githubusercontent.com/583fb170db1c3122e382f5afa309eb10ae5feb61bd776593c6e69d9af9956b02/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f74616c697063616b69722f656172736976706f7274616c3f7374796c653d706c6173746963)[![issues](https://camo.githubusercontent.com/b892a81df5bd461c94e7759ddaf560bd1c073ae034de24db55a9ca129b97207f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f74616c697063616b69722f656172736976706f7274616c3f7374796c653d706c6173746963)](https://camo.githubusercontent.com/b892a81df5bd461c94e7759ddaf560bd1c073ae034de24db55a9ca129b97207f/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f74616c697063616b69722f656172736976706f7274616c3f7374796c653d706c6173746963)[![download](https://camo.githubusercontent.com/2ca75b8a819eba0670f8bd0be23a64752a0ab66b952b714ef9104f931dc7822c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f74616c697063616b69722f656172736976706f7274616c3f7374796c653d706c6173746963)](https://camo.githubusercontent.com/2ca75b8a819eba0670f8bd0be23a64752a0ab66b952b714ef9104f931dc7822c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f74616c697063616b69722f656172736976706f7274616c3f7374796c653d706c6173746963)[![stars](https://camo.githubusercontent.com/74ec8e26024d06622823826f4d778c9a2a1cad738f46e095a41c27e65b455b0c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f74616c697063616b69722f656172736976706f7274616c3f7374796c653d706c6173746963)](https://camo.githubusercontent.com/74ec8e26024d06622823826f4d778c9a2a1cad738f46e095a41c27e65b455b0c/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f74616c697063616b69722f656172736976706f7274616c3f7374796c653d706c6173746963)[![forks](https://camo.githubusercontent.com/4987b983add035d3bd35e32813ee6a035c0cf03b4fd08ed5e7011ebb7959eef1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f74616c697063616b69722f656172736976706f7274616c3f7374796c653d706c6173746963)](https://camo.githubusercontent.com/4987b983add035d3bd35e32813ee6a035c0cf03b4fd08ed5e7011ebb7959eef1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f74616c697063616b69722f656172736976706f7274616c3f7374796c653d706c6173746963)

[![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.

[fatura](https://github.com/mlevent/fatura) paketinden türetilmiştir.

Kurulum
-------

[](#kurulum)

🛠️ Paketi composer ile projenize dahil edin;

```
composer require talipcakir/earsivportal
```

🎉 Ö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](#iade)
        - [Tevkifat](#tevkifat)
        - [İstisna](#istisna)
        - [Ö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-imzalama)
    - [Sms ile İmzalama](#sms-ile-imzalama)
- [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-indirme-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](#iptalitiraz-talepleri)
- [GİB Profil Bilgileri](#gib-profil-bilgileri)
- [Mükellef Sorgulama](#m%C3%BCkellef-sorgulama)
- [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 TalipCakir\EArsivPortal\Gib;

$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 TalipCakir\EArsivPortal\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/talipcakir/earsivportal/blob/master/examples/createInvoiceWithoutModel.php) dosyasındaki örneği inceleyebilirsiniz.

### Satış

[](#satış)

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

```
use TalipCakir\EArsivPortal\Enums\Currency;
use TalipCakir\EArsivPortal\Enums\InvoiceType;
use TalipCakir\EArsivPortal\Enums\Unit;
use TalipCakir\EArsivPortal\Gib;
use TalipCakir\EArsivPortal\Models\InvoiceModel;
use TalipCakir\EArsivPortal\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         : 'Ali',               // ✴️ Zorunlu   @string
    aliciSoyadi      : 'Veli',              // ✴️ Zorunlu   @string
    mahalleSemtIlce  : 'Beykoz',            // ✴️ Zorunlu   @string
    sehir            : 'İstanbul',          // ✴️ 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 TalipCakir\EArsivPortal\Enums\Unit;
use TalipCakir\EArsivPortal\Gib;
use TalipCakir\EArsivPortal\Models\ProducerReceiptModel;
use TalipCakir\EArsivPortal\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 TalipCakir\EArsivPortal\Enums\Unit;
use TalipCakir\EArsivPortal\Gib;
use TalipCakir\EArsivPortal\Models\SelfEmployedReceiptModel;
use TalipCakir\EArsivPortal\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 TalipCakir\EArsivPortal\Models\InvoiceModel;
use TalipCakir\EArsivPortal\Models\InvoiceItemModel;

$invoice = new InvoiceModel(...);

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

$invoice->setNote(number2Words($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 TalipCakir\EArsivPortal\Enums\Tax;
use TalipCakir\EArsivPortal\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 TalipCakir\EArsivPortal\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 TalipCakir\EArsivPortal\Models\InvoiceModel;
use TalipCakir\EArsivPortal\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 TalipCakir\EArsivPortal\Gib;
use TalipCakir\EArsivPortal\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] => Ali Veli
            [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 TalipCakir\EArsivPortal\Enums\ObjectionMethod;
use TalipCakir\EArsivPortal\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 TalipCakir\EArsivPortal\Gib;
use TalipCakir\EArsivPortal\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 TalipCakir\EArsivPortal\Enums\Unit;

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

### Vergi Birimleri

[](#vergi-birimleri)

```
use TalipCakir\EArsivPortal\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 TalipCakir\EArsivPortal\Enums\Currency;

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

☢️ 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

31

—

LowBetter than 68% of packages

Maintenance63

Regular maintenance activity

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

473d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f5da7f21940c599c19a4b3a287877cf5f4361562d3f8a239297b5dabb5600227?d=identicon)[talipcakir](/maintainers/talipcakir)

---

Top Contributors

[![talipcakir](https://avatars.githubusercontent.com/u/32384299?v=4)](https://github.com/talipcakir "talipcakir (1 commits)")

---

Tags

efaturaearsivgibe faturae arşivinternet vergi dairesi

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/talipcakir-earsivportal/health.svg)

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

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