Cara Bangun AI Agent untuk Automasi Invoice Reconciliation di n8n + GPT (MVP 2 Hari)
· 4 menit baca
Cara Bangun AI Agent untuk Automasi Invoice Reconciliation di n8n + GPT (MVP 2 Hari)
Pain point: Tim finance sering terjebak memeriksa ribuan invoice tiap bulan, mencocokkan angka antara sistem billing, bank statement, dan purchase order. Proses manual bikin error, delay cash‑flow, dan bikin tim sales frustrasi.
Kenapa n8n + GPT?
n8n adalah orchestration engine low‑code yang bisa menghubungkan hampir semua API tanpa menulis server. GPT (ChatGPT atau model OpenAI) menyelesaikan "pemahaman bahasa" – meng‑extract nilai, menormalkan istilah, bahkan menilai anomali. Kombinasi keduanya memberi AI Agent yang meng‑automasi siklus reconciliasi penuh: ingest, extract, match, alert, dan close.
Arsitektur Workflow (High‑level)
- Trigger: Cron (setiap hari pukul 02:00) atau webhook dari sistem billing (misal Stripe) untuk invoice baru.
- Ingest: Ambil file CSV/Excel dari S3 atau Google Drive + ambil bank statement via API (Papara, Midtrans, atau CSV).
- Extract dengan GPT: Node
HTTP Request → OpenAImen‑prompt GPT untuk mengekstrakinvoice_number, amount, due_date, vendor_namedari teks bebas (misal PDF OCR hasil). - Normalize & Enrich: Mapping vendor aliases menggunakan
Setnode + lookup ke Google Sheets master list. - Match Engine: Gunakan
Functionnode (JS) untuk mencocokkan invoice vs payment berdasarkaninvoice_numberatau fuzzy amount (+‑5%). - Decision: Jika match berhasil → buat entry di database (PostgreSQL). Jika tidak → kirim notifikasi Slack + email dengan ringkasan yang di‑generate GPT ("Tidak ditemukan pembayaran untuk INV‑2024‑0012 …").
- Auto‑Close: Untuk match berhasil, kirim webhook ke ERP (SAP, Odoo) untuk men‑update status "Paid".
- Logging & Observability: Simpan log JSON ke Elasticsearch + alert jika error rate > 5%.
Langkah‑per‑Langkah Implementasi
1. Siapkan lingkungan n8n
- Deploy n8n via Docker (
docker run -p 5678:5678 n8nio/n8n) atau gunakan cloud n8n.io. - Pasang credential untuk OpenAI, S3, Slack, PostgreSQL di menu Credentials.
2. Buat workflow baru “Invoice Reconciliation”
- Tambahkan node
Cron– schedule =0 2 * * *. - Node
AWS S3 – Downloaduntuk folder/invoices/daily/. - Node
HTTP Requestke API bank untuk CSV statement (auth via API key).
3. Prompt GPT untuk ekstraksi
Prompt contoh:
Extract the following fields from the invoice text: invoice_number, vendor_name, issue_date (YYYY-MM-DD), due_date (YYYY-MM-DD), total_amount (numeric). Return JSON.
Invoice Text:
{{ $json["content"] }}
Gunakan OpenAI node, model gpt-4o-mini, temperature 0. Simpan output ke Set node dengan return JSON.parse($json["choices"][0]["message"]["content"]).
4. Normalisasi vendor
Upload vendors.csv ke Google Sheet (col: alias, master_name). Buat node Google Sheets – Lookup untuk mengganti alias menjadi master_name.
5. Matching Logic (JS)
const invoices = $json["invoices"];
const payments = $json["payments"];
let matches = [];
invoices.forEach(inv => {
const cand = payments.find(p => p.invoice_number === inv.invoice_number && Math.abs(p.amount - inv.amount) < inv.amount*0.05);
if (cand) {
matches.push({invoice: inv, payment: cand});
} else {
// fallback fuzzy on amount only
const fuzzy = payments.find(p => Math.abs(p.amount - inv.amount) < inv.amount*0.05);
if (fuzzy) matches.push({invoice: inv, payment: fuzzy, warning: "fuzzy_match"});
}
});
return [{matches}];
6. Decision & Notifikasi
- Gunakan
Ifnode:matches.length > 0→ branch matched, else → unmatched. - Branch matched: Loop
Matches→PostgreSQL – Insert+Webhook – ERP. - Branch unmatched: Buat summary via GPT:
Summarize the unmatched invoices in a short bullet list for finance team.
Kirim ke Slack (Slack – Send Message) dan email (SMTP – Send).
7. Logging
Set node JSON.stringify($json) → Elasticsearch – Index Document. Tambahkan Error Catch untuk meng‑alert ke Slack jika ada exception.
Contoh Use Case Real
PT FinTech Indonesia mengelola 3.200 invoice/bulan lewat Stripe, Midtrans, dan bank BCA. Sebelum otomasi, tim finance memerlukan 2‑3 hari kerja untuk reconciliasi. Setelah menerapkan workflow di atas (2‑hari MVP), proses selesai dalam 30 menit dengan error rate turun 92%. Finance kini fokus pada analisis cash‑flow, bukan data entry.
Insight & Strategi Penting
- Prompt Engineering Matters: Ringkas dan beri contoh format output (JSON). Tanpa ini, GPT sering mengembalikan teks bebas yang susah di‑parse.
- Hybrid Matching: Kombinasi exact‑match + fuzzy amount meminimalkan false negative tanpa menambah false positive.
- Human‑in‑the‑Loop (HITL) pada unmatched: Biarkan GPT generate ringkasan, tim hanya klik “Approve” di Slack, mengurangi interaksi manual.
- Cost Control: Gunakan model
gpt-4o-mini(≈$0.0004 per 1k token) hanya untuk ekstraksi; untuk summarization gunakan same model – total biaya < $5/bulan untuk 10k invoice. - Observability: Simpan metrics (matched, unmatched, latency) ke Grafana via Prometheus exporter n8n. Deteksi regresi prompt dengan alert.
Penutup & Call to Action
Dengan kombinasi n8n sebagai orkestrator dan GPT sebagai AI Agent, kamu bisa meng‑transformasi proses invoice reconciliation yang biasanya memakan waktu berhari‑hari menjadi otomatis dalam hitungan menit. Mulai dari langkah di atas, deploy workflow pertama dalam 2 hari, lalu iterasi prompt serta matching logic untuk menyesuaikan dengan domain kamu.
👉 Challenge: Buat workflow serupa untuk purchase order matching atau expense claim reconciliation. Share hasilnya di komunitas JIPRAKS Classroom, dan dapatkan feedback langsung dari para AI Engineer lainnya!