nullInvoice, e-ticaret mağazaları ve SaaS platformları ile entegrasyon için tasarlanmış, tamamen özelleştirilebilir HTML şablonlarına sahip, otomatik fatura oluşturma ve yönetimi için geliştirilmiş bir Spring Boot mikroservisidir.
📖 Genişletilmiş Dokümantasyon: Dağıtım, API referansı, şablonlar, yapılandırma ve geliştirme hakkında ayrıntılı kılavuzlar için aşağıdaki Genişletilmiş Dokümantasyon bölümüne bakın.
İşletmeler, satışlar tamamlandıktan sonra fatura kesme işlemlerini yönetmek için nullInvoice'u kullanır. Tedarikçiler web arayüzü üzerinden bir kez yapılandırılır, ardından uygulamanız isteğe bağlı olarak mevzuata uygun faturaları otomatik olarak oluşturmak için REST API'yi çağırır.
Nasıl çalışır:
- Kurulum: Tedarikçileri arayüzde şirket detayları, dil/bölge (locale), para birimi, vergi oranları, özel markalama ve fatura şablonları ile yapılandırın
- Kimlik Doğrulama: Güvenli REST API erişimi için Yönetici kontrol panelinden API anahtarları oluşturun
- Entegrasyon: E-ticaret mağazanız veya SaaS uygulamanız, tedarikçi kimliğini (supplier_id) kullanarak
/api/v1/invoices/generateadresine kimliği doğrulanmış API çağrıları yapar - Oluşturma: Faturalar tamamen özelleştirilebilir HTML şablonlarından oluşturulur ve üst bilgi üstverileriyle (metadata) birlikte JSON veya PDF olarak döndürülür
- Teslimat: Uygulamanız faturayı alır ve müşterilere iletebilir veya kayıtları için saklayabilir
┌─────────────────┐
│ Müşteri │
│ satın almayı │
│ tamamlar │
└────────┬────────┘
│
▼
┌─────────────────────────────────────────┐
│ E-Ticaret / SaaS Platformunuz │
│ ───────────────────────────────────── │
│ 1. Ödemeyi işle │
│ 2. Dijital makbuz düzenle (zorunlu) │
│ 3. Müşteri fatura talep etti mi? ────┐ │
└──────────────────────────────────────┼──┘
│
│ API Çağrısı
▼
┌──────────────────────────────┐
│ nullInvoice Servisi │
│ ────────────────────────── │
│ POST /api/v1/invoices/ │
│ generate │
│ │
│ - Tedarikçi ID doğrular │
│ - Özel şablonu uygular │
│ - HTML anlık görüntüsünü │
│ saklar │
│ - PDF oluşturur │
│ - Faturayı döndürür │
└──────────────┬───────────────┘
│
│ Yanıt (JSON veya PDF)
▼
┌──────────────────────────────────────────┐
│ E-Ticaret / SaaS Platformunuz │
│ ────────────────────────────────────── │
│ - JSON üstverisini VEYA PDF dosyasını │
│ alır │
│ - Fatura numarasını kayıtlar için │
│ saklar │
│ - PDF'i e-posta ile müşteriye iletir │
└──────────────────────────────────────────┘
- Tamamen Özelleştirilebilir Şablonlar - Satır içi CSS ve 30'dan fazla yer tutucu içeren HTML şablonları
- İstek Başına Şablon Seçimi - API çağrısı başına varsayılan şablonu
template_idveyatemplate_nameile geçersiz kılın - Doküman Değişmezliği - HTML anlık görüntüleri (snapshots), geriye dönük değişiklikleri önler (finansal uyumluluk)
- Çoklu Kiracıya Uygun (Multi-tenant) - Bağımsız ayarlara sahip birden fazla tedarikçi
- Esnek Teslimat - JSON üstverisi veya doğrudan PDF döndürme
- Asenkron Oluşturma Kuyruğu - Yüksek işlem hacimli entegrasyonlar için durum sorgulamalı isteğe bağlı kuyruk yapısı
- OpenAPI Dokümantasyonu -
/swaggeradresinde etkileşimli API dokümantasyonu
Docker dağıtımı için (önerilen):
- Docker
- Docker Compose
Yerel geliştirme için:
- Java 21 (JDK - Eclipse Temurin veya OpenJDK)
- Maven 3.9+
- MariaDB 10.5+ (veya MySQL 8.0+)
Hazır derlenmiş görüntüler Docker Hub üzerinde mevcuttur.
docker compose up -dEksiksiz kurulum talimatları için Dağıtım Kılavuzu belgesine bakın.
Temel çevre değişkenleri (environment variables):
| Değişken | Zorunlu | Açıklama |
|---|---|---|
TZ |
Evet | Sistem saat dilimi (örn. Europe/Istanbul) |
DB_HOST |
Evet | Veritabanı sunucusu |
DB_USER |
Evet | Veritabanı kullanıcı adı |
DB_PASSWORD |
Evet | Veritabanı şifresi |
DB_NAME |
Evet | Veritabanı adı |
DB_PARAMS |
Evet | serverTimezone dahil JDBC parametreleri |
Örnek:
TZ=Europe/Istanbul
DB_HOST=localhost
DB_USER=nullinvoice
DB_PASSWORD=guvenli_sifreniz
DB_NAME=nullinvoice
DB_PARAMS=?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Europe/IstanbulTüm seçenekler için Yapılandırma Referansı belgesine bakın.
http://localhost:8080 adresine ilk erişimde:
- Yönetici hesabını oluşturmak için
/setupsayfasına yönlendirileceksiniz - Kurulumdan sonra
/loginsayfasından giriş yapın - Web arayüzünde ilk tedarikçinizi yapılandırın
- Yönetim > API Anahtarları bölümünden bir API anahtarı oluşturun
- API üzerinden fatura oluşturmaya başlayın!
Bir fatura oluşturun ve PDF olarak indirin:
curl -X POST http://localhost:8080/api/v1/invoices/generate \
-H "Authorization: Bearer API_ANAHTARINIZ" \
-H "Content-Type: application/json" \
-d '{
"response_type": "pdf",
"supplier_id": 1,
"client": {
"name": "Örnek Şirket Ltd.",
"addressLine1": "Atatürk Cad. No: 100",
"city": "İstanbul",
"country": "TR"
},
"items": [
{"description": "Danışmanlık Hizmeti", "quantity": 1, "unit_price": 1000, "tax_rate": 0.20}
]
}' -o fatura.pdfTam dokümantasyon için API Referansı belgesine bakın.
nullInvoice yerleşik kimlik doğrulama içerir (oturum tabanlı kullanıcı arayüzü girişi + REST uç noktaları için API anahtarı kimlik doğrulaması). Uygulama iç/özel ağ dağıtımı için tasarlanmıştır.
Önerilen dağıtım:
- Güvenlik duvarı veya VPN arkasında
- Yalnızca güvenilir uygulamalar tarafından erişilebilen özel bir ağ içinde
- Tüm bağlantılar için HTTPS/TLS etkinleştirilmiş olarak
- Hız sınırlaması (rate limiting) yapılandırılmış bir ters proxy (reverse proxy) arkasında
Canlı ortam kontrol listesi için Yapılandırma > Güvenlik bölümüne bakın.
nullInvoice, fatura belgeleri oluşturmak, saklamak ve teslim etmek için tasarlanmış bir fatura oluşturma hattıdır. Aşağıdaki işlemleri yapmaz:
- Temel "ödenmedi/düzenlendi" durumlarının ötesinde ödemeleri veya ödeme durumlarını takip etmez
- Alacak veya borç hesaplarını yönetmez
- Finansal raporlar veya bilançolar oluşturmaz
- Muhasebe sistemleriyle (defter-i kebir, yevmiye vb.) entegre olmaz
- Defter tutma, mutabakat veya vergi beyanı işlemlerini yürütmez
Kapsamlı finansal yönetim için nullInvoice'u özel bir muhasebe yazılımı ile entegre edin.
Konulara göre düzenlenmiş ayrıntılı kılavuzlar:
- Dağıtım Kılavuzu - Veritabanı kurulumu, Docker, yerel geliştirme, ilk çalıştırma yapılandırması
- API Referansı - Örneklerle eksiksiz REST API dokümantasyonu
- Şablon Özelleştirme - HTML şablonları, yer tutucular, yazı tipleri, PDF dönüştürme
- Yapılandırma - Ortam değişkenleri, güvenlik, oturum yönetimi
- Geliştirme Kılavuzu - Katkıda bulunma, derleme, test etme, uluslararasılaştırma
- Java 21, Spring Boot 3.5.3
- MariaDB + JPA
- Thymeleaf (Kullanıcı Arayüzü)
- OpenHTMLToPDF (PDFBox)
/openapiadresinde OpenAPI,/swaggeradresinde Swagger UI
Desteklenen Arayüz Dilleri: İngilizce, Bulgarca, Almanca, İspanyolca, İtalyanca, Rusça, Türkçe
README Çevirileri:
Fatura Şablonları: 7 dilin tümü için örnek şablonlar templates/ dizininde mevcuttur
Bu proje Elastic License 2.0 kapsamında lisanslanmıştır - detaylar için LICENSE dosyasına bakın.
Telif Hakkı 2026 nullata
