Skip to main content

pyfatura

GİB e-Arşiv Portal üzerinden e-Arşiv fatura oluşturma, imzalama, sorgulama ve iptal işlemleri için Python istemcisi.

Uyarı: Bu paket vergi mükellefiyeti doğuran belgeler oluşturur. Oluşturulan faturaların hukuki sorumluluğu tamamen kullanıcıya aittir. Test ortamında (test_mode=True) geliştirme yapmanız önerilir.

Bu paket, f/fatura (Node.js) projesinin Python portudur.

Kurulum

pip install pyfatura

Hızlı Başlangıç

from pyfatura import EArsivClient, Invoice, InvoiceItem

# Test ortamında istemci oluştur
client = EArsivClient(test_mode=True)

# Giriş yap
client.login("kullanici_adi", "sifre")

# Fatura kalemleri
items = [
    InvoiceItem(
        name="Yazılım Geliştirme Hizmeti",
        quantity=1,
        unit_price=5000.00,
        vat_rate=20,
    ),
    InvoiceItem(
        name="Danışmanlık Hizmeti",
        quantity=3,
        unit_price=1000.00,
        vat_rate=20,
    ),
]

# Fatura oluştur
invoice = Invoice(
    date="13/03/2026",
    time="14:30:00",
    name="Ali",
    surname="Yılmaz",
    tax_id_or_tr_id="11111111111",
    full_address="Örnek Mah. Test Sok. No:1",
    district="Kadıköy",
    city="İstanbul",
    items=items,
)

# Faturayı oluştur ve imzala
result = client.create_invoice(invoice, sign=True)
print(f"Fatura UUID: {result['uuid']}")

# İndirme URL'si al
url = client.get_download_url(result["uuid"], signed=True)
print(f"İndirme URL: {url}")

# Çıkış yap
client.logout()
client.close()

Context Manager Kullanımı

with EArsivClient(test_mode=True) as client:
    client.login("kullanici", "sifre")
    # ... işlemler ...
    client.logout()

API Referansı

EArsivClient(test_mode=False)

Ana istemci sınıfı.

Parametre Tip Varsayılan Açıklama
test_mode bool False True ise GİB test ortamını kullanır

Kimlik Doğrulama

client.login(username, password) -> str

e-Arşiv portalına giriş yapar. Oturum token'ı döner.

client.logout() -> str | None

Oturumu kapatır.

Fatura İşlemleri

client.create_draft_invoice(invoice) -> dict

Taslak fatura oluşturur.

result = client.create_draft_invoice(invoice)
# {"date": "13/03/2026", "uuid": "...", ...}

client.get_all_invoices_by_date_range(start_date, end_date) -> list[dict]

Tarih aralığında kesilen faturaları listeler.

invoices = client.get_all_invoices_by_date_range("01/03/2026", "31/03/2026")

client.get_all_invoices_issued_to_me(start_date, end_date) -> list[dict]

Tarih aralığında adınıza kesilen faturaları listeler.

client.find_invoice(date, invoice_uuid) -> dict | None

UUID ile belirli bir faturayı bulur.

client.sign_draft_invoice(draft_invoice) -> dict

Taslak faturayı imzalar/onaylar.

draft = client.find_invoice("13/03/2026", "fatura-uuid")
client.sign_draft_invoice(draft)

client.get_invoice_html(invoice_uuid, signed=True) -> str

Faturanın HTML içeriğini döner.

client.get_download_url(invoice_uuid, signed=True) -> str

Fatura indirme URL'si oluşturur (ZIP formatında).

client.cancel_draft_invoice(reason, draft_invoice) -> dict

Taslak faturayı iptal eder.

draft = client.find_invoice("13/03/2026", "fatura-uuid")
client.cancel_draft_invoice("Yanlış kesildi", draft)

Toplu İşlemler

client.create_invoice(invoice, sign=True) -> dict

Fatura oluşturur ve opsiyonel olarak imzalar. Tüm adımları otomatik yapar.

client.create_invoice_and_get_download_url(invoice, sign=True) -> str

Fatura oluşturur ve indirme URL'si döner.

client.create_invoice_and_get_html(invoice, sign=True) -> str

Fatura oluşturur ve HTML içeriğini döner.

Alıcı Sorgulama

client.get_recipient_data(tax_id_or_tr_id) -> dict

VKN veya TCKN ile alıcı bilgilerini sorgular.

data = client.get_recipient_data("1234567890")

SMS İmza Doğrulama

client.send_sign_sms_code(phone) -> str

İmza için SMS doğrulama kodu gönderir. İşlem ID'si döner.

client.verify_sign_sms_code(sms_code, operation_id) -> str

SMS kodunu doğrular.

oid = client.send_sign_sms_code("05551234567")
client.verify_sign_sms_code("123456", oid)

Kullanıcı Bilgileri

client.get_user_data() -> dict

Kullanıcı profil bilgilerini getirir.

client.update_user_data(user_data) -> dict

Kullanıcı profil bilgilerini günceller.

data = client.get_user_data()
data["email"] = "yeni@email.com"
client.update_user_data(data)

Modeller

InvoiceItem

Alan Tip Varsayılan Açıklama
name str zorunlu Mal/hizmet adı
quantity int | float 1 Miktar
unit_price float 0.0 Birim fiyat
vat_rate int 18 KDV oranı (%)
unit_type str "C62" Birim tipi (C62=Adet)
discount_rate int 0 İskonto oranı (%)
discount_amount float 0.0 İskonto tutarı

Invoice

Alan Tip Varsayılan Açıklama
date str zorunlu Fatura tarihi (GG/AA/YYYY)
time str zorunlu Fatura saati (SS:DD:SS)
items list[InvoiceItem] zorunlu Fatura kalemleri
name str "" Alıcı adı
surname str "" Alıcı soyadı
title str "" Alıcı unvanı
tax_id_or_tr_id str "11111111111" VKN veya TCKN
tax_office str "" Vergi dairesi
full_address str "" Açık adres
district str "" İlçe
city str " " Şehir
country str "Türkiye" Ülke
currency str "TRY" Para birimi

Toplamlar (grand_total, total_vat, grand_total_incl_vat, payment_total) otomatik hesaplanır. İsterseniz manuel olarak geçersiz kılabilirsiniz.

Geliştirme

git clone https://github.com/ahmetelgun/pyfatura.git
cd pyfatura
pip install -e ".[dev]"
pytest

Lisans

MIT

Metadata

Release files for pyfatura 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyfatura 0.1.4
File Size Uploaded Provenance Actions
pyfatura-0.1.4.tar.gz 11.6 kB Without provenance Details for pyfatura-0.1.4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pyfatura 0.1.4
File Interpreter ABI Platform Actions
pyfatura-0.1.4-py3-none-any.whl Python 3 none any Details for pyfatura-0.1.4-py3-none-any.whl

Total release size: 23.0 kB

Release files / pyfatura-0.1.4.tar.gz

Download URL pyfatura-0.1.4.tar.gz
Size 11.6 kB
Tags Source
SHA-256 checksum
How to use checksums
9da5355421069426d547480886140d14aaeb568f293b2bc3fe9516538a55ee76
BLAKE2b-256 checksum
How to use checksums
7dcadb3959c3b83f5a872fd4a8f69273c64a9bfa51bc22701c981d80eae31eea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release files / pyfatura-0.1.4-py3-none-any.whl

Download URL pyfatura-0.1.4-py3-none-any.whl
Size 11.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cd017f74c1cedc31ba72b86223778502b1cba3b66eb2ffeee5613a134e823780
BLAKE2b-256 checksum
How to use checksums
3f2e841869408c2e2b6785f2fd68b0f51af42e7c654e0856a915f9925c5fcf75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Security for pyfatura 0.1.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page