PHPackages                             fatihsafa/efatura - 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. fatihsafa/efatura

ActiveLibrary

fatihsafa/efatura
=================

EFatura

1.7.2(6y ago)03MITPHPPHP &gt;=5.5.9

Since Feb 8Pushed 6y agoCompare

[ Source](https://github.com/FatihSafa/efatura)[ Packagist](https://packagist.org/packages/fatihsafa/efatura)[ Docs](https://github.com/furkankadioglu/efatura)[ RSS](/packages/fatihsafa-efatura/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (5)Versions (11)Used By (0)

🧾 eFatura
=========

[](#-efatura)

Bu kütüphane, PHP aracılığıyla eArşiv üzerinden fatura oluşturma, düzenleme, imzalama gibi işlemleri yapabilmenize olanak sağlar. Tamamen ücretsizdir ve aktif olarak geliştirilmektedir.

[![Latest Version on Packagist](https://camo.githubusercontent.com/6e2f44d711991bd99bc9bb797f97ca39835e61937473b26230ce304ca9136466/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6675726b616e6b6164696f676c752f656661747572612e7376673f7374796c653d666c61742d737175617265)](https://img.shields.io/packagist/v/furkankadioglu/efatura.svg?style=flat-square)[![](https://github.com/furkankadioglu/efatura/workflows/Check%20Tests/badge.svg?branch=master)](https://github.com/furkankadioglu/efatura/workflows/Check%20Tests/badge.svg?branch=master)[![Total Downloads](https://camo.githubusercontent.com/0e5a8a8f12390618ce861c1fca481b0f7b21f9e1557d4ace4d5ceced8081b12c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6675726b616e6b6164696f676c752f656661747572612e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/furkankadioglu/efatura)[![License](https://camo.githubusercontent.com/0e00a877a3a4daa54301c7f464d32a6cb931fb6a2cf5300cc2c4182683fc45a5/68747470733a2f2f706f7365722e707567782e6f72672f6675726b616e6b6164696f676c752f656661747572612f6c6963656e73652e737667)](https://packagist.org/packages/furkankadioglu/efatura)[![Open issues](https://camo.githubusercontent.com/c91f884b837f4bea93855ac8a9d189bc0066227599839ead4e527e8157e58f49/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732d7261772f6675726b616e6b6164696f676c752f656661747572612e737667)](https://github.com/furkankadioglu/efatura/issues)[![Open PR](https://camo.githubusercontent.com/0830753380de101d8e68421060109c415d277e61af227ef0a27e3e1934aa4c93/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732d70722d7261772f6675726b616e6b6164696f676c752f656661747572612e737667)](https://github.com/furkankadioglu/efatura/pulls)[![GitHub stars](https://camo.githubusercontent.com/cc95b308f14f5e8d6dd440e1587aab81af5a4a67d5a602e7acb38eca05341e65/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6675726b616e6b6164696f676c752f656661747572612e737667)](https://github.com/furkankadioglu/efatura/stargazers)[![GitHub forks](https://camo.githubusercontent.com/1679b07a6baef9140d46bb7e560b028dc3a32dffad8022b042b90b2bf2f37c23/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f6675726b616e6b6164696f676c752f656661747572612e737667)](https://github.com/furkankadioglu/efatura/network/members)

### 🚩Kurulum

[](#kurulum)

**Kendi verileriniz ile test etmek için:**

**Test hesaplarıyla test etmek için:**

**Paket Kurulumu:**

```
composer require furkankadioglu/efatura

```

### 🚩Özellikler

[](#özellikler)

- eArşiv oturumunu açma ve sonlandırma.
- Fatura oluşturma.
- İki tarih arası fatura sorgulama.
- Menü listesini görüntüleme.
- Fatura detaylarını görüntüleme.
- Türkçe veya İngilizce seçenekleriyle fatura modeli oluşturma.
- Fatura imzalama/onaylama.
- Faturayı HTML olarak çıktı alma.
- Faturanın indirme adresini alma.
- Faturayı iptal etme.
- Varolan bir faturayı sorgulama.
- Kullanıcı bilgilerini çekme. (Şirketinizin temel bilgileri)
- Kullanıcı bilgilerini güncelleme.
- SMS ile Fatura doğrulama ve onaylama.
- Faturayı PDF olarak çıktı alma.

### 🚩Örnekler

[](#örnekler)

**Giriş**

Bir client oluşturarak genel yapıyı projemize dahil ediyoruz.

```
use furkankadioglu\eFatura\InvoiceManager;
$client = new InvoiceManager();
```

Giriş bilgilerinizi chain fonksiyonlarla tanımlayabiliyorsunuz, bu production için geçerlidir.

```
// Production environment
$client->setUsername("XXX")->setPassword("YYY");
// VEYA
$client->setCredentials("XXX", "YYY");
```

Alttaki kullanım ile **test modu**nda çalıştırabilir, firmanızın bilgileri olmadan otomatik test girişi yapabilirsiniz. Bu aşamadan sonraki tüm işlemleriniz test hesabıyla gerçekleşir.

```
// Test Environment
$client->setDebugMode(true)->setTestCredentials();
```

Ayrıca bilgilerinizi görüntülemek isterseniz:

```
$client->getCredentials();
```

Bilgilerimizi tanımladıktan sonra giriş yapıp token almak içinse: (Bu işlem olmadan diğer adımlara geçilemez)

```
$client->connect();
```

**Faturalandırma**

Faturaların listelenmesi aşağıdaki şekilde yapılıyor:

```
// Tüm faturaları listele
$client->getInvoicesFromAPI("01/01/2020", "08/02/2020");
```

Yeni bir fatura oluşturmak isterseniz, bir kaç seçeneğiniz mevcut, kullanım alışkanlığı olarak ingilizceye alışmışlar için iki farklı yöntem var, ilk aşamada Türkçe'den gidelim.

Örnek olarak şu şekilde bir fatura oluşturabiliriz:

```
$fatura_detaylari  = [
"belgeNumarasi"  =>  "", // Zorunlu değil
"faturaTarihi"  =>  "08/02/2020",
"saat"  =>  "09:07:48",
"paraBirimi"  =>  "TRY",
"dovzTLkur"  =>  "0",
"faturaTipi"  =>  "SATIS",
"vknTckn"  =>  "11111111111",
"aliciUnvan"  =>  "FURKAN KADIOGLU",
"aliciAdi"  =>  "FURKAN",
"aliciSoyadi"  =>  "KADIOGLU",
"binaAdi"  =>  "", // Zorunlu değil
"binaNo"  =>  "", // Zorunlu değil
"kapiNo"  =>  "", // Zorunlu değil
"kasabaKoy"  =>  "", // Zorunlu değil
"vergiDairesi"  =>  "MALTEPE",
"ulke"  =>  "Türkiye",
"bulvarcaddesokak"  =>  "DENEME SK. DENEME MAH.",
"mahalleSemtIlce"  =>  "", // Zorunlu değil
"sehir"  =>  " ",
"postaKodu"  =>  "", // Zorunlu değil
"tel"  =>  "", // Zorunlu değil
"fax"  =>  "", // Zorunlu değil
"eposta"  =>  "", // Zorunlu değil
"websitesi"  =>  "", // Zorunlu değil
"iadeTable"  => [], // Zorunlu değil
"ozelMatrahTutari"  =>  "0", // Zorunlu değil
"ozelMatrahOrani"  =>  0, // Zorunlu değil
"ozelMatrahVergiTutari"  =>  "0", // Zorunlu değil
"vergiCesidi"  =>  " ", // Zorunlu değil
"malHizmetTable"  => [],
"tip"  =>  "İskonto",
"matrah"  =>  100,
"malhizmetToplamTutari"  =>  100,
"toplamIskonto"  =>  "0",
"hesaplanankdv"  =>  18,
"vergilerToplami"  =>  18,
"vergilerDahilToplamTutar"  =>  118,
"odenecekTutar"  =>  118,
"not"  =>  "xxx", // Zorunlu değil
"siparisNumarasi"  =>  "", // Zorunlu değil
"siparisTarihi"  =>  "", // Zorunlu değil
"irsaliyeNumarasi"  =>  "", // Zorunlu değil
"irsaliyeTarihi"  =>  "", // Zorunlu değil
"fisNo"  =>  "", // Zorunlu değil
"fisTarihi"  =>  "", // Zorunlu değil
"fisSaati"  =>  " ", // Zorunlu değil
"fisTipi"  =>  " ", // Zorunlu değil
"zRaporNo"  =>  "", // Zorunlu değil
"okcSeriNo"  =>  "" // Zorunlu değil
];
```

Faturayı oluşturmak yetmez tabi, ürün veya hizmet de girmek lazım, oda şu şekilde oluyor.

```
$fatura_detaylari["malHizmetTable"][] = [
"malHizmet"  =>  "Yazılım Geliştirme",
"miktar"  =>  28,
"birim"  =>  "DAY",
"birimFiyat"  =>  "3",
"fiyat"  =>  "84",
"iskontoArttm"  =>  "İskonto",
"iskontoOrani"  =>  0,
"iskontoTutari"  =>  "0",
"iskontoNedeni"  =>  "",
"malHizmetTutari"  =>  "99",
"kdvOrani"  =>  18,
"kdvTutari"  =>  "15.12",
"vergininKdvTutari"  =>  "0"
];
```

Değişkenler Türkçe olduğundan dolayı **mapWithTurkishKeys** fonksiyonunu kullanıyoruz.

```
use furkankadioglu\eFatura\Invoice;
$inv  =  new Invoice();
$inv->mapWithTurkishKeys($fatura_detaylari); // Key yapısı türkçe 🇹🇷
// VEYA
$inv->mapWithEnglishKeys($invoice_details); // Key yapısı ingilizce 🇺🇸
```

Sonrasında bunu InvoiceManager'a kayıt etmemiz gerekiyor. Oda bu şekilde:

```
$client->setInvoice($inv);
```

Sonrasında da taslak oluşturuyoruz:

```
$client->createDraftBasicInvoice();
```

**Kullanıcı Bilgileri**

Bu kısım firmanızın eArşiv'de kayıtlı olan bilgileridir. Bu bilgileri alabilir ve güncelleyebilirsiniz.

👉Aynı zamanda bu bilgileri almak, fatura oluştururken ihtiyaç duyacağınız bir çok veri ihtiyacınızı da karşılar.

```
$userInformations = $client->getUserInformationsData();
```

Bu işlem size bir adet UserInformations sınıfı döndürür. Bu sınıftaki verilerinizin tamamını set ve get metodlarıyla değiştirebilirsiniz:

```
// Sadece vknTckn değiştirilemez.
$userInformations = $userInformations->setUnvan("FRKN Yazılım")->setApartmanNo("4");
$apartmanNo = $userInformations->getApartmanNo(); // 4
```

Ayrıca bu sınıfın verilerini toplu olarak almak isterseniz aşağıdaki kullanımı uygulayabilirsiniz, aynı fonksiyon Invoice sınıfı içinde geçerli:

```
$userInformations->export(); // Array olarak tüm değişkenleri döndürür.
```

Aynı zamanda bu sınıfı kendiniz oluşturabilir ve array olarak veriyi sağlayabilirsiniz. Sonrasında da şu şekilde sunucuya göndeririz:

```
$client->setUserInformations($userInformations); // Manager'a tanımla.
$client->sendUserInformationsData(); // Sunucuya gönder.
```

### 🚩Fonksiyonel Özellikler

[](#fonksiyonel-özellikler)

(İndirme/Onaylama/HTML Çıktısını Alma/İptal vb.)

**Onaylamak için:**

```
$client->signDraftInvoice();
```

**HTML çıktısını almak için:**

```
$client->getInvoiceHTML();
```

**PDF çıktısını almak için:**

```
$client->getInvoicePDF();
```

**İndirme linkini almak için:**

```
$client->getDownloadURL();
```

**Faturayı iptal etmek için:**

```
$client->cancelInvoice();
```

**SMS doğrulaması yapmak için:**

```
$client->sendSMSVerification($telefon); // Operasyon id döndürür.
```

**SMS doğrulamasını onaylamak için:**

```
$client->verifySMSCode($kod, $operasyonId);
```

**Kişi veya kurumun bilgilerini çekmek için:**

```
$client->getCompanyInfo($TCKimlikNoVeyaVergiNo);
```

**Çıkış yapıp, oturumu kapatmak için:**

```
$client->logOutFromAPI();
```

**Varolan bir faturayı sorgulamak için:**

```
$oldInvoice = new Invoice();
$oldInvoice->setUuid("e8277cfa-4ac9-11ea-a5b5-acde48001122");
$client->setInvoice($oldInvoice)->getInvoiceFromAPI();
// {"faturaUuid":"8a4423bc-4aca-11ea-8c30-acde48001122","faturaTarihi":"09\/02\/2020"...
```

### 🚩Alternatif Kullanımlar

[](#alternatif-kullanımlar)

**Kısaltılmış Kullanımlar:**

Uzun gelmiş olabilir. 😂 Gayet doğal, chain methodlar ile hayatımızı kolaylaştırıyoruz. Tek satırda işimizi halledelim:

```
$client->setDebugMode(true) // Test urlsine geçtik
->setTestCredentials() // Test bilgilerini aldık
->connect() // Bilgilerle birlikte sunucuya bağlanıp token aldık.
->setInvoice($inv) // Faturamızı sınıfa tanımladık (Invoice sınıfı kullanılmalı)
->createDraftBasicInvoice() // Taslak faturamızı oluşturduk
->getDownloadURL(); // İndirme adresini aldık

// https://earsivportaltest.efatura.gov.tr/earsiv-services/download?token=b8b6c261c511a9b2757279c0111b538a2f02d98ae2df6205448d002687cab8cf74ce04d187bf0c6ce839dee40a6a8aad003aa6d5946ba02a0942ceb10bde327f&ettn=85933f42-4ab1-11ea-922e-acde48001122&belgeTip=FATURA&onayDurumu=Onaylandı&cmd=downloadResource
```

**Sabit Değişkenler:**

Bir çok farklı veri tipi olduğundan ve önceden bilinmediğinde sorunlar çıkabileceğini düşünerek, bazı ihtiyaç duyulan sabit seçenekler de mevcut. Tüm değişken isimleri eArşiv de görünenlerle birebir yapıldı. Örnekten bazılarını görebilirsiniz:

```
use furkankadioglu\eFatura\Models\Country;
use furkankadioglu\eFatura\Models\CurrencyType;
use furkankadioglu\eFatura\Models\InvoiceType;
use furkankadioglu\eFatura\Models\UnitType;

$gunBirim = UnitType::GUN; // DAY
$turkLirasi = CurrencyType::TURK_LIRASI; // TRY
$satisFaturasi = InvoiceType::SATIS; // SATIŞ
$gurcistanUlkesi = Country::GURCISTAN; // Gürcistan
```

**Anahtar Yapısını Değiştirme:**

```
use furkankadioglu\eFatura\Invoice;
$inv  =  new Invoice();

$invoice_details = [
    "uuid" => $uuid,
    "documentNumber" => $documentNumber,
    "date" => $date,
    "time" => $time,
    "currency" => $currency,
    "currencyRate" => $currencyRate,
    "invoiceType" => $invoiceType,
    "taxOrIdentityNumber" => $taxOrIdentityNumber,
    "invoiceAcceptorTitle" => $invoiceAcceptorTitle,
    "invoiceAcceptorName" => $invoiceAcceptorName,
    "invoiceAcceptorLastName" => $invoiceAcceptorLastName,
    "buildingName" => $buildingName,
    "buildingNumber" => $buildingNumber,
    "doorNumber" => $doorNumber,
    "town" => $town,
    "taxAdministration" => $taxAdministration,
    "country" => $country,
    "avenueStreet" => $avenueStreet,
    "district" => $district,
    "city" => $city,
    "postNumber" => $postNumber,
    "telephoneNumber" => $telephoneNumber,
    "faxNumber" => $faxNumber,
    "email" => $email,
    "website" => $website,
    "refundTable" => $refundTable,
    "specialBaseAmount" => $specialBaseAmount,
    "specialBasePercent" => $specialBasePercent,
    "specialBaseTaxAmount" => $specialBaseTaxAmount,
    "taxType" => $taxType,
    "itemOrServiceList" => $itemOrServiceList,
    "type" => $type,
    "base" => $base,
    "itemOrServiceTotalPrice" => $itemOrServiceTotalPrice,
    "totalDiscount" => $totalDiscount,
    "calculatedVAT" => $calculatedVAT,
    "taxTotalPrice" => $taxTotalPrice,
    "includedTaxesTotalPrice" => $includedTaxesTotalPrice,
    "paymentPrice" => $paymentPrice,
    "note" => $note,
    "orderNumber" => $orderNumber,
    "orderData" => $orderData,
    "waybillNumber" => $waybillNumber,
    "waybillDate" => $waybillDate,
    "receiptNumber" => $receiptNumber,
    "voucherDate" => $voucherDate,
    "voucherTime" => $voucherTime,
    "voucherType" => $voucherType,
    "zReportNumber" => $zReportNumber,
    "okcSerialNumber" => $okcSerialNumber
];

$inv->mapWithEnglishKeys($invoice_details); // Key yapısı ingilizce
```

Bu şekilde de map edebileceğiniz gibi ayrıyetten getter/setter methodları da mevcut, istediğiniz her veriyi düzenleyebilirsiniz:

```
$inv->setUuid("Buraya kendi fatura idniz")
->setCountry("Türkiye")
->getCurrencyRate(); // TRY
```

**Toplu veri alımı ve çıkartımı:**

Fatura verisinin değişken değerlerini toplu olarak ekleyebilir veya çıkartabiliriz, şöyle:

```
    $inv = new Invoice($data); // data arrayinden keylere göre tüm verileri alır.
    $inv->export(); // tüm verileri çıkartır.
```

### 🚩Diğer Konular

[](#diğer-konular)

**Testleri Çalıştırma:**

```
composer test

```

**Daha Fazla Örnek:**

Daha fazla örneği [buradan](https://github.com/furkankadioglu/efatura/blob/master/example/index.php "buradan")` bulabilirsiniz.

**Uyarı**

🚨 Bu paket vergiye tabi olan belge oluşturur, hiç bir sorumluluk kabul edilmez ve ne yaptığınızdan emin olana kadar debugMode açık şekilde test verileriyle işlem yapmanız önerilir.

**Ayrıca**

Bu proje Fatih Kadir Akın'ın [fatura.js](https://github.com/f/fatura "fatura")` projesinden yola çıkılarak PHP diline uyarlanarak yapılmıştır. Arda Kılıçdağı'na da ayrıca teşekkürler.

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

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

Every ~9 days

Recently: every ~16 days

Total

8

Last Release

2214d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/61ae24a0661d9aa5d74b1a9a2da0ba5d50dc723e84aca63e50a4ac3f2b7f4e22?d=identicon)[FatihSafa](/maintainers/FatihSafa)

---

Top Contributors

[![furkankadioglu](https://avatars.githubusercontent.com/u/5060068?v=4)](https://github.com/furkankadioglu "furkankadioglu (96 commits)")[![FatihSafa](https://avatars.githubusercontent.com/u/44993431?v=4)](https://github.com/FatihSafa "FatihSafa (3 commits)")[![muratcesmecioglu](https://avatars.githubusercontent.com/u/12040730?v=4)](https://github.com/muratcesmecioglu "muratcesmecioglu (2 commits)")

---

Tags

efaturaearsive faturae arşivfatura

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/fatihsafa-efatura/health.svg)

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

###  Alternatives

[furkankadioglu/efatura

EFatura

4364.6k1](/packages/furkankadioglu-efatura)[mlevent/fatura

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

1655.9k](/packages/mlevent-fatura)[google/cloud

Google Cloud Client Library

1.2k16.2M54](/packages/google-cloud)[shlinkio/shlink

A self-hosted and PHP-based URL shortener application with CLI and REST interfaces

4.8k4.3k](/packages/shlinkio-shlink)[buckaroo/sdk

Buckaroo payment SDK

12189.1k9](/packages/buckaroo-sdk)

PHPackages © 2026

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