---
title: "n8n ile PDF Faturalardan Veri Çekip Muhasebeye Aktar"
description: "PDF faturaları n8n AI düğümüyle otomatik oku, JSON'a çevir, Google Sheets veya muhasebe aracına gönder. Adım adım n8n akışı ve AgentRoost kurulumu."
canonical: https://agentroost.app/tr/blog/n8n-fatura-veri-cikarma-muhasebe-otomasyon
date: 2026-05-08T20:00:00Z
---

[Canonical URL](https://agentroost.app/tr/blog/n8n-fatura-veri-cikarma-muhasebe-otomasyon)

Küçük bir işletme yürütüyorsanız muhtemelen şu sahneyi tanıyorsunuzdur: e-posta kutusuna düşen PDF fatura, oradan "şimdi gireyim" niyetiyle masaüstüne taşınan dosya, akabinde çarşamba sabahı Excel'e açtığınızda yeniden okuduğunuz satırlar. Her fatura için beş dakika. Ayda yirmi fatura gelince bu yüz dakikaya dönüşüyor — ve bu, hata yapma ihtimalini saymadan.

Bu yazıda, e-posta gelen kutunuzu izleyen, PDF eki otomatik indiren, içindeki alanları (tutar, KDV, tarih, satıcı adı) AI ile çıkaran ve bunları doğrudan bir Google Sheets satırına yazan bir n8n akışını adım adım kuracağız.

## Gerekli n8n Düğümleri

Akış altı düğümden oluşur:

| Düğüm | Görevi |
|---|---|
| **Gmail Trigger** (veya IMAP Email) | Yeni e-postaları dinler, ek varsa tetikler |
| **HTTP Request** | PDF ekini binary olarak indirir |
| **Convert to File** | Binary veriyi base64 string'e çevirir |
| **AI / LLM (OpenAI, Anthropic…)** | PDF içeriğini okuyup JSON üretir |
| **Set** | Çıktıdaki alanları sütunlara eşler |
| **Google Sheets: Append Row** | Veriyi tabloya yazar |

> **Not:** n8n'in "Extract from File" düğümü PDF metnini doğrudan çıkarabilir; ama sayfa düzeni karmaşık ya da taranmış görüntü içeriyorsa AI düğümüne vision/base64 göndermek çok daha güvenilirdir.

---

## Adım Adım Akış Kurulumu

### 1. Tetikleyiciyi Ayarla: Gmail Trigger

**Gmail Trigger** düğümünü çalışma alanınıza ekleyin. Ayarlar:

- **Trigger On:** `Message Received`
- **Filter:** `has:attachment filename:*.pdf` (Gmail arama sözdizimi)
- **Poll Interval:** her 5 dakika

Bu düğüm her yeni e-postayı bir JSON nesnesi olarak sonraki adıma iletir; `attachments` dizisinde PDF'nin indirme URL'si bulunur.

### 2. PDF'yi İndir: HTTP Request

Bir **HTTP Request** düğümü ekleyin:

- **Method:** `GET`
- **URL:** `{{ $json.attachments[0].url }}`
- **Authentication:** Gmail OAuth2 (Trigger ile aynı kimlik bilgisi)
- **Response Format:** `File`

Çıktı: ham binary akış — bir sonraki adımda base64'e çevrilecek.

### 3. AI Düğümüne Gönder: LLM / Chat Model

Burası sihrin gerçekleştiği yer. **OpenAI** veya **Anthropic** chat modelini kullanan bir **AI Agent** veya **LLM Chain** düğümü ekleyin. System prompt'u şu şekilde yazın:

```
Sen bir muhasebe asistanısın.
Sana base64 formatında bir PDF fatura gönderiyorum.
Aşağıdaki alanları JSON olarak döndür:

{
  "satici": "<tedarikçi/firma adı>",
  "fatura_no": "<fatura numarası>",
  "tarih": "<YYYY-MM-DD>",
  "tutar_kdvsiz": <sayı>,
  "kdv_orani": <sayı, örn. 20>,
  "kdv_tutari": <sayı>,
  "toplam_tutar": <sayı>,
  "para_birimi": "<TRY/EUR/USD>"
}

Eğer bir alan bulunamazsa null yaz.
Yalnızca JSON döndür, başka açıklama ekleme.
```

**User Message** alanına şunu yazın:
```
{{ $binary.data }}
```

Model olarak `gpt-4o` veya `claude-3-5-sonnet` seçin; her ikisi de PDF base64'ü görüntü olarak işleyebilir.

### 4. JSON'ı Parse Et: Set Düğümü

LLM'in döndürdüğü metin string bir JSON'dur. **Code** düğümüyle parse edin:

```js
const raw = $input.item.json.text;          // LLM çıktısı
const parsed = JSON.parse(raw);
return [{ json: parsed }];
```

Ardından bir **Set** düğümü ile sütun adlarını netleştirin — özellikle tarih formatını kontrol edin:

```js
// Tarih ISO formatında mı?
const d = new Date($json.tarih);
return isNaN(d) ? "Hatalı tarih" : d.toISOString().split("T")[0];
```

### 5. Tabloya Yaz: Google Sheets — Append Row

**Google Sheets: Append Row** düğümünü ekleyin:

- **Spreadsheet ID:** `<tablonuzun ID'si>`
- **Sheet Name:** `Faturalar`
- **Columns → Values:**
  - `Satıcı` → `{{ $json.satici }}`
  - `Fatura No` → `{{ $json.fatura_no }}`
  - `Tarih` → `{{ $json.tarih }}`
  - `KDV'siz Tutar` → `{{ $json.tutar_kdvsiz }}`
  - `KDV %` → `{{ $json.kdv_orani }}`
  - `KDV Tutarı` → `{{ $json.kdv_tutari }}`
  - `Toplam` → `{{ $json.toplam_tutar }}`
  - `Para Birimi` → `{{ $json.para_birimi }}`

Birden fazla muhasebe aracıyla çalışıyorsanız aynı aşamada bir **HTTP Request** düğümü daha ekleyip Parasut, Foriba veya Xero API'sine de POST atabilirsiniz.

---

## Yaygın Tuzaklar ve Çözümleri

**"PDF boş döndü" sorunu**
Taranmış fatura (görüntü tabanlı PDF) ise model metni doğrudan okuyamaz. `gpt-4o` gibi multimodal bir model seçin ve PDF'yi `image/jpeg` değil `application/pdf` base64 olarak gönderin — model iç OCR uygular.

**"Toplam hesaplamıyor" sorunu**
LLM bazen `toplam_tutar` yerine `null` döndürür, tutarı metin içinde bırakır. Code düğümünde fallback ekleyin:
```js
parsed.toplam_tutar = parsed.toplam_tutar
  ?? (parsed.tutar_kdvsiz + parsed.kdv_tutari);
```

**Birden fazla ek**
Gmail Trigger birden fazla ek içeren e-postalar için tek nesne döndürür. Eklerin tümünü işlemek için `attachments` dizisini bir **Split In Batches** düğümüyle yineleyin.

**Yanlış tedarikçi adı**
LLM, fatura üstündeki resmi unvanı tam yazmayabilir. Set düğümüne bir "normalize" adımı ekleyin; ya da tabloda `Satıcı` sütununa veri doğrulama (açılır liste) uygulayıp eşleşmeyen değerleri renkle işaretleyin.

---

## Bu Akışı AgentRoost'ta Çalıştırın

Yukarıdaki akışı kendi bilgisayarınızda denediniz, işe yaradı. Şimdi sorun şu: bilgisayar kapandığında akış da duruyor. Sunucu kurmak, Docker Compose yazmak, SSL sertifikası almak istemiyorsanız buraya gelin.

**AgentRoost'ta nasıl çalışır:**

1. [agentroost.app](/tr/agents/n8n) üzerinden hesap açın (e-posta veya Google/Microsoft/Discord ile).
2. **n8n** çerçevesini seçin, instance'ınıza bir isim verin.
3. Yaklaşık iki dakika içinde `https://<sizin-id>.agentroost.app` adresinde kendi n8n editörünüz açılır — yalnızca size özel.
4. Yukarıdaki akışı içe aktarın (JSON export/import) veya sıfırdan oluşturun.
5. AI düğümlerine **API anahtarı girmenize gerek yok** — AI kredisi aboneliğe dahil. OpenAI, Anthropic ve aralarından seçim yapabileceğiniz yüzlerce modele doğrudan bağlanabilirsiniz.

Instance yalnızca sizin; verileriniz, iş akışlarınız, kimlik bilgileriniz başka hiçbir müşteriyle paylaşılmıyor. 24/7 çalışıyor, webhooklar hemen aktif oluyor, SSL otomatik.

Fiyat $19.99/ay'dan başlıyor (sunucu + AI kredisi + bakım hepsi bir arada). 14 günlük para iade garantisi var, aylık ödeme, istediğiniz zaman iptal.

[Planları karşılaştır →](/tr/pricing)

---

## Özet: Ne Kazanıyorsunuz?

- Fatura başına beş dakikalık manuel giriş → sıfır.
- Sayısal hata riski → minimuma iniyor (LLM hatalı parse ederse Code düğümünüzde yakalanıyor).
- Yeni tedarikçi eklediğinizde prompt'u güncellemeniz gerekmiyor — AI formatı kendisi öğreniyor.
- Aynı akışa Slack bildirimi, e-posta onayı veya muhasebe uygulaması webhook'u eklemeniz birkaç düğüm meselesi.

n8n'i kendiniz yönetmek istemiyorsanız AgentRoost'ta kendi instance'ınız zaten hazır bekliyor.
