Skip to main content

GİB e-Arşiv Portal Python istemcisi — Türkiye e-fatura oluşturma, imzalama ve sorgulama

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyfatura-0.1.1.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyfatura-0.1.1-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file pyfatura-0.1.1.tar.gz.

File metadata

  • Download URL: pyfatura-0.1.1.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for pyfatura-0.1.1.tar.gz
Algorithm Hash digest
SHA256 17440884f930163123f59290a53c0dcedc4763f152d961b0f8d015fe51d42ddc
MD5 7ec819f72ceda10325ef3742c1533727
BLAKE2b-256 0b077b304acd77b7b6f5b09415d80d945cb4eed1ede05df066e92d763d6286d7

See more details on using hashes here.

File details

Details for the file pyfatura-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pyfatura-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for pyfatura-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d9b7b9a50f071b1ffa91030434a86290c191a7060a3539796f1b6515600e7c35
MD5 3a3da4643c25619542f2c4e0deca11dd
BLAKE2b-256 104f2a4a269e33f351072a6bb37b32a3ed311c111119fed0e6eb029c5da6df2e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page