eArşiv / eFatura Fatura Oluşturucu
Find a file
Fatih Kadir Akın b8db46cb87 0.2.1
2026-04-08 13:42:35 +03:00
.github/workflows BREAKING: fatura 0.2.0 - TS, FaturaClient, dokümantasyon, testler ve daha fazlası (#41) 2026-04-08 07:23:47 +03:00
src BREAKING: fatura 0.2.0 - TS, FaturaClient, dokümantasyon, testler ve daha fazlası (#41) 2026-04-08 07:23:47 +03:00
tests BREAKING: fatura 0.2.0 - TS, FaturaClient, dokümantasyon, testler ve daha fazlası (#41) 2026-04-08 07:23:47 +03:00
website fix: tsconfig DOM lib (fetch tipleri) ve website lockfile (#44) 2026-04-08 13:41:51 +03:00
.gitignore initial 2020-02-08 04:30:06 +03:00
.prettierignore BREAKING: fatura 0.2.0 - TS, FaturaClient, dokümantasyon, testler ve daha fazlası (#41) 2026-04-08 07:23:47 +03:00
.prettierrc.json BREAKING: fatura 0.2.0 - TS, FaturaClient, dokümantasyon, testler ve daha fazlası (#41) 2026-04-08 07:23:47 +03:00
eslint.config.mjs BREAKING: fatura 0.2.0 - TS, FaturaClient, dokümantasyon, testler ve daha fazlası (#41) 2026-04-08 07:23:47 +03:00
LICENSE Update LICENSE 2020-02-08 21:53:56 +03:00
package-lock.json 0.2.1 2026-04-08 13:42:35 +03:00
package.json 0.2.1 2026-04-08 13:42:35 +03:00
README.md BREAKING: fatura 0.2.0 - TS, FaturaClient, dokümantasyon, testler ve daha fazlası (#41) 2026-04-08 07:23:47 +03:00
tsconfig.json fix: tsconfig DOM lib (fetch tipleri) ve website lockfile (#44) 2026-04-08 13:41:51 +03:00
vitest.config.integration.ts BREAKING: fatura 0.2.0 - TS, FaturaClient, dokümantasyon, testler ve daha fazlası (#41) 2026-04-08 07:23:47 +03:00
vitest.config.ts BREAKING: fatura 0.2.0 - TS, FaturaClient, dokümantasyon, testler ve daha fazlası (#41) 2026-04-08 07:23:47 +03:00

🧾 Fatura.js

eArşiv sistemi üzerinde fatura oluşturmanızı sağlar.

Alternatifler

Dil Repo Geliştirici
PHP https://github.com/AdemAliDurmus/fatura Adem Ali Durmuş
PHP https://github.com/furkankadioglu/efatura Furkan Kadıoğlu
PHP https://github.com/mlevent/fatura Mert Levent
C# https://github.com/BFYDigital/e-arsiv-fatura-dotnet BFY Digital

Bu sistem https://earsivportal.efatura.gov.tr/ adresini kullanarak bu sistem üzerinden fatura oluşturmanızı sağlar.

Bu sistem GİB'e tabi şahıs şirketi ya da şirket hesapları ile çalışır ve bu kişilikler adına resmi fatura oluşturur. Kesilen faturaları https://earsivportal.efatura.gov.tr/ adresinden görüntüleyebilir ya da bu kütüphane ile indirebilirsiniz.

Kullanıcı Adı ve Parola Bilgileri

https://earsivportal.efatura.gov.tr/intragiris.html adresindeki parola ekranında kullanılan kullanıcı kodu ve parola ile bu paketi kullanabilirsiniz. Bu kullanıcı kodu ve parola bilgilerini muhasebecinizden ya da GİB - İnteraktif Vergi Dairesi'nden edinebilirsiniz.

Yükleme

npm install fatura

Node.js 18 veya üzeri gereklidir (package.json içinde engines).

Kullanım

Tüm işlemler bir FaturaClient örneği üzerinden yapılır. Üretim (canlı GİB) için:

const { createFaturaClient } = require("fatura");
const client = createFaturaClient(); // varsayılan: PROD

Test ortamı (https://earsivportaltest.efatura.gov.tr):

const client = createFaturaClient("TEST");

ES modülü:

import { createFaturaClient } from "fatura";
const client = createFaturaClient();

Oldukça kolay bir kullanıma sahiptir:

createInvoiceAndGetDownloadURL(user, pass, invoice, { sign })

Bu method ile fatura oluşturulup imzalanır ve indirme adresi döner.

const { createFaturaClient } = require("fatura");

const client = createFaturaClient();

const faturaURL = await client.createInvoiceAndGetDownloadURL(
    "GIB Kullanıcı Adı",
    "GIB Parolası",
    {
        ...faturaDetayları,
    },
    // Varsayılan olarak sign: true gönderilir.
    { sign: false },
);

createInvoiceAndGetHTML(user, pass, invoice, { sign })

Bu method ile fatura oluşturulup imzalanır ve fatura HTML'i döner. Bu HTML'i iframe içerisinde gösterip yazdırılmasını sağlayabilirsiniz.

const { createFaturaClient } = require("fatura");

const client = createFaturaClient();

const faturaHTML = await client.createInvoiceAndGetHTML(
    "GIB Kullanıcı Adı",
    "GIB Parolası",
    {
        ...faturaDetayları,
    },
    // Varsayılan olarak sign: true gönderilir.
    { sign: false },
);

Diğer metodlar (client üzerinde)

Aşağıdakilerin tümü const client = createFaturaClient(...) ile oluşturduğunuz istemci üzerinde çağrılır.

getToken(user, pass)

e-Arşiv Portal oturumu için token döner.

createDraftInvoice(token, invoiceDetails)

e-Arşivde önce taslak oluşturulur. Dönüş değerinde uuid, date ve GİB cevabı bulunur. invoiceDetails örnek şekli:

uuid vermezseniz yeni bir UUID atanır.

{
    uuid: "4c72cb57-b72d-4812-ac48-0a0bce83e771",

    date: "08/02/2020",
    time: "09:07:48",
    taxIDOrTRID: "11111111111",
    taxOffice: "Beylikduzu",
    title: "FATIH AKIN",
    name: "",
    surname: "",
    fullAddress: "X Sok. Y Cad. No: 3 Z Istanbul",
    items: [
        {
            name: "Stickker",
            quantity: 1,
            unitPrice: 100,
            price: 100,
            VATRate: 20,
            VATAmount: 20,
        },
    ],
    totalVAT: 20,
    grandTotal: 100.0,
    grandTotalInclVAT: 120.0,
    paymentTotal: 120.0,
}

findInvoice(token, draftInvoice)

createDraftInvoiceın döndürdüğü taslak nesnesi (date + uuid içeren) verilir; ilgili gündeki taslaklar arasından eşleşen kayıt döner. İmzalama için gereken bilgiler (ör. belge numarası) bu nesnede yer alır.

getAllInvoicesByDateRange(token, { startDate, endDate })

İki tarih arasındaki kesilen / taslak listesi (GİB komutuna göre).

getAllInvoicesIssuedToMeByDateRange(token, { startDate, endDate })

İki tarih arasındaki adıma düzenlenen belgeler.

signDraftInvoice(token, draftInvoice)

☢️ İmzalama kesilmiş sayılan mali işlem oluşturur; dikkatli kullanın.

findInvoice ile bulunan liste öğesi (draftInvoice formatı) verilmelidir.

getDownloadURL(token, invoiceUUID, { signed })

İndirme URLsi döner (.zip içinde HTML/XML olabilir). signed: fatura onaylı mı (true / false).

getInvoiceHTML(token, uuid, { signed })

Fatura HTML metni. signed imzalı/onaysız görünüm için kullanılır.

cancelDraftInvoice(token, reason, draftInvoice)

Taslak iptali.

getRecipientDataByTaxIDOrTRID(token, taxIDOrTRID)

VKN/TCKN ile alıcı bilgisi sorgusu.

sendSignSMSCode / verifySignSMSCode

İmzaya ilişkin SMS doğrulama akışı (GİB kurallarına tabi).

getUserData / updateUserData

Portal kullanıcı bilgilerini okuma / güncelleme.

createInvoice(user, pass, invoiceDetails, { sign })

Token alır, taslak oluşturur, bulur; sign: true (varsayılan) ise imzalar. findInvoice sonuç vermezse imza atlanır.

logout(token)

Oturum kapatma; GİB cevabına göre dönüş tipi değişebilir.

Lisans

MIT


☢️ BU PAKET VERGİYE TABİ OLAN MALİ VERİ OLUŞTURUR. BU PAKET NEDENİYLE OLUŞABİLECEK SORUNLARDAN BU PAKET SORUMLU TUTULAMAZ, RİSK KULLANANA AİTTİR. RİSKLİ GÖRÜYORSANIZ KULLANMAYINIZ.