Bu paket, Node.js aracılığıyla e-Arşiv üzerinden fatura oluşturma, düzenleme, imzalama gibi işlemleri yapabilmenize olanak sağlar.
🚨 Bu paket vergiye tabî olan belge oluşturur. Hiç bir sorumluluk kabul edilmez ve ne yaptığınızdan emin olana kadar EInvoice.setTestMode(true) kullanarak test modu açık şekilde test verileriyle işlem yapmanız önerilir.
yarn add e-fatura
veya
npm i e-fatura
import EInvoice, {
getDateFormat, // Tarih formatını alır (Gün/Ay/Yıl veya Saat:Dakika:Saniye)
paymentPriceToText, // Ödenecek tutarı metine dönüştürür
XsltRenderer, // Faturayı XSLT şablonu ile işler
EInvoiceCountry, // Ülkeler
EInvoiceApi, // e-Arşiv API servisi
EInvoiceTypeError, // Tür hata sınıfı
EInvoiceApiError, // API hata sınıfı
InvoiceType, // Fatura türü
EInvoiceApiErrorCode, // API hata kodları
InvoiceApprovalStatus, // Fatura onay durumu
EInvoiceCurrencyType, // Param birimi
EInvoiceUnitType // Birim türü
// ... Typescript türleri
} from 'e-fatura'
- Fatura oluşturma.
- Faturaları listeleme.
- Adınıza düzenlenen faturaları listeleme.
- Temel fatura bilgileri alma.
- Detaylı fatura bilgilerini alma.
- Fatura güncelleme.
- Faturanın HTML çıktısını alma.
- Faturanın PDF çıktısını alma.
- Faturanın ZIP çıktısını alma.
- Faturanın XML çıktısını alma.
- Faturanın indirme bağlantısını alma.
- XSLT şablonu ile fatura işleme. (Deneysel)
- Fatura silme.
- Fatura iptal etme.
- Kullanıcı (şirket) bilgilerini çekme.
- Kullanıcı (şirket) bilgilerini güncelleme.
- SMS ile Fatura doğrulama ve onaylama.
Kendi verileriniz ile test etmek için:
https://earsivportal.efatura.gov.tr/intragiris.html
Test hesaplarıyla test etmek için:
https://earsivportaltest.efatura.gov.tr/login.jsp
Kullanım 1
import EInvoice from 'e-fatura'
await EInvoice.connect({
anonymous: true
})
// ... Diğer işlemler. Fatura oluşturma, listeleme, düzenleme vb.
// e-Arşiv oturumunu sonlandırır.
await EInvoice.logout()
Kullanım 2
import EInvoice from 'e-fatura'
// Test modunu aktif/deaktif eder.
EInvoice.setTestMode(true) // varsayılan olarak false
// Anonim kullanıcı bilgileri atar.
await EInvoice.setAnonymousCredentials()
// e-Arşive bağlanır.
await EInvoice.connect() // veya EInvoice.getAccessToken()
// ... Diğer işlemler. Fatura oluşturma, listeleme, düzenleme vb.
// e-Arşiv oturumunu sonlandırır.
await EInvoice.logout()
Kullanım 1
import EInvoice from 'e-fatura'
// Muhasebecinizden aldığınız giriş bilgileri.
await EInvoice.connect({
username: 'kullanıcı kodu|adı',
password: 'şifre'
})
// ... Diğer işlemler. Fatura oluşturma, listeleme, düzenleme vb.
// e-Arşiv oturumunu sonlandırır.
await EInvoice.logout()
Kullanım 2
import EInvoice from 'e-fatura'
// Muhasebecinizden aldığınız giriş bilgileri.
EInvoice.setCredentials({
username: 'kullanıcı kodu|adı',
password: 'şifre'
})
// e-Arşive bağlanır.
await EInvoice.connect() // veya EInvoice.getAccessToken()
// ... Diğer işlemler. Fatura oluşturma, listeleme, düzenleme vb.
// e-Arşiv oturumunu sonlandırır.
await EInvoice.logout()
API ve tür hatalarının ayıklanması.
import axios from 'axios'
import EInvoice, {
EInvoiceApiError,
EInvoiceTypeError,
EInvoiceApiErrorCode
} from 'e-fatura'
try {
await EInvoice.createDraftInvoice({})
// veya EInvoice.*()
} catch (e) {
if (e instanceof EInvoiceTypeError) {
console.error('Tür hatası meydana geldi:', e)
} else if (e instanceof EInvoiceApiError) {
const response = e.getResponse()
switch (e.errorCode) {
case EInvoiceApiErrorCode.UNKNOWN_ERROR:
console.error('Bilinmeyen bir hata oluştu:', response)
break
case EInvoiceApiErrorCode.INVALID_RESPONSE:
console.error('Geçersiz API cevabı:', response)
break
case EInvoiceApiErrorCode.INVALID_ACCESS_TOKEN:
console.error('Geçersiz erişim jetonu:', response)
break
case EInvoiceApiErrorCode.BASIC_INVOICE_NOT_CREATED:
console.error('Basit fatura oluşturulamadı:', response)
// ...
}
} else if (axios.isAxiosError(e)) {
console.error('Axios hatası meydana geldi:', e)
} else {
console.error('Bilinmeyen bir hata meydana geldi:', e)
}
}
Not: Diğer API hata kodları için EInvoiceApiErrorCode.ts dosyasına bakabilirsiniz.
Bu proje Furkan Kadıoğlu'nun efatura projesinden yola çıkılarak Node.js'e uyarlanmıştır.