AI Agent Workflow Automation untuk Invoice Follow-Up: Bangun Reminder Tagihan Anti Lupa dengan n8n Automation + Integrasi API
· 7 menit baca
AI Agent Workflow Automation untuk Invoice Follow-Up: Bangun Reminder Tagihan Anti Lupa dengan n8n Automation + Integrasi API
AI Agent workflow automation itu kerasa “wah” bukan saat bikin chatbot, tapi saat kamu berhenti jadi manusia pengingat tagihan. Kalau kamu pernah:
- ngejar invoice lewat chat/ email satu-satu,
- bingung kapan harus follow-up (H+1? H+3?),
- takut terdengar galak padahal cuma menagih,
- dan akhirnya cashflow ngadat karena “lupa follow up”,
kamu butuh n8n automation yang bukan sekadar kirim email terjadwal, tapi sistem yang bisa memutuskan: siapa yang ditagih, lewat channel apa, pakai bahasa bagaimana, kapan eskalasi, dan kapan stop.
Di artikel ini kita bikin AI Agent workflow automation untuk invoice follow-up versi “siap produksi” dengan n8n: ada guardrail, state machine, idempotency, dan integrasi API. Bukan demo lucu-lucuan.
Konsepnya: AI Agent workflow automation itu “kolektor yang sopan” + mesin aturan
Kebanyakan automasi invoice gagal karena terlalu kaku: cron → kirim email template. Dunia nyata lebih berantakan:
- Client A maunya WhatsApp, Client B maunya email.
- Ada yang perlu invoice PDF ulang karena hilang.
- Ada yang bilang “minggu depan ya” (jadi follow-up harus geser).
- Ada yang sudah bayar tapi status di sistem belum sinkron.
Makanya kita gabungkan:
- Rules/Policy (deterministik): kapan follow-up, kapan eskalasi, kapan berhenti.
- AI Agent (probabilistik): nulis pesan yang pas, merangkum konteks, mengklasifikasi balasan, dan mengusulkan next action.
- Workflow automation (orkestrasi): jalankan aksi lintas tool (Stripe/Xero/Midtrans, Gmail, WhatsApp gateway, Slack, Google Sheets/DB).
Aha moment: jadikan AI bukan “otak utama”, tapi co-pilot yang bekerja di dalam pagar aturan. Dengan begitu hasilnya stabil, aman, dan bisa diaudit.
Arsitektur AI Agent workflow automation (yang nggak bikin kamu deg-degan)
Kita akan bikin 3 komponen utama:
- Scheduler/Trigger: Cron atau webhook dari billing system (ideal: event-driven).
- State store: DB sederhana untuk status follow-up per invoice (Postgres/Notion/Airtable/Sheets minimal).
- Executor: n8n workflow yang memutuskan & menjalankan aksi (email/WA/Slack).
1) Data model minimal (biar automasinya “punya ingatan”)
Kalau kamu cuma mengandalkan data dari tool invoice, kamu bakal sulit tracking “sudah follow-up berapa kali” dan “channel terakhir apa”. Simpan state sendiri.
Tabel invoice_followups (minimal):
- invoice_id (unik)
- customer_id
- due_date, amount, currency
- status: pending | paid | disputed | promised | escalated | stop
- attempt_count
- last_channel: email | whatsapp
- last_sent_at
- next_followup_at
- notes (ringkas hasil klasifikasi AI dari reply)
- idempotency_key (untuk cegah double send)
2) Policy (aturan main) yang jelas
Contoh policy yang realistis:
- H-3 sebelum jatuh tempo: reminder halus.
- H+1 lewat jatuh tempo: reminder + link bayar.
- H+4: follow-up kedua, bisa pindah channel.
- H+7: eskalasi ke finance/CS via Slack + minta approval untuk nada lebih tegas.
- Jika ada reply “sudah bayar”: minta bukti / cek payment gateway, lalu stop jika confirmed.
- Jika reply “bulan depan”: set next_followup_at sesuai tanggal yang dijanjikan (status promised).
3) “AI Agent” tugasnya apa aja?
Batasi AI Agent hanya pada hal yang memang butuh fleksibilitas bahasa dan interpretasi:
- Generate message berdasarkan persona brand + konteks invoice.
- Classify reply (paid/disputed/promised/needs-info).
- Extract date dari janji bayar (“minggu depan”, “tgl 10”).
- Summarize context untuk audit trail (biar tim finance paham tanpa baca chat panjang).
Breakdown teknis n8n automation: workflow end-to-end
Kita susun workflow menjadi 2 jalur: Outbound follow-up dan Inbound reply handling. Ini yang bikin sistemnya “hidup”.
A. Outbound: AI Agent workflow automation untuk mengirim follow-up
Node plan (ringkas):
- Cron (jalan tiap jam / tiap pagi)
- HTTP Request / DB Query: ambil invoice yang due dan butuh follow-up
- Function: hitung tahap follow-up berdasarkan due_date & attempt_count
- IF: skip kalau status paid/stop/disputed
- AI (LLM) node: generate pesan (email/WA) + subject + CTA
- HTTP Request: kirim via provider (Gmail/SendGrid/WA gateway)
- DB Update: increment attempt_count, set last_sent_at, next_followup_at, idempotency_key
- Slack (opsional): log ringkas untuk audit
Detail penting: idempotency. Banyak workflow dobel kirim karena retry node atau workflow jalan paralel. Solusi praktis:
- Buat idempotency_key = invoice_id + stage + yyyy-mm-dd
- Sebelum send, cek di DB apakah key sudah ada.
- Kalau sudah, stop.
Prompt AI untuk generate pesan (template yang aman):
System:
Kamu adalah AI Agent finance yang sopan, ringkas, tidak mengancam, dan fokus membantu pembayaran.
Ikuti aturan:
- Jangan halusinasi status pembayaran.
- Jangan mengubah nominal, tanggal, atau nomor invoice.
- Kalau channel WhatsApp: maksimal 500 karakter.
- Sertakan CTA jelas: link bayar atau minta konfirmasi.
User:
Buat pesan follow-up invoice.
Data:
- Nama: {{customer_name}}
- Invoice: {{invoice_number}}
- Due date: {{due_date}}
- Amount: {{amount}} {{currency}}
- Stage: {{followup_stage}} (pre_due, overdue_1, overdue_2, escalation)
- Payment link: {{payment_link}}
- Catatan sebelumnya: {{notes}}
Output JSON: {"channel":"...","subject":"...","message":"..."}
Kenapa output JSON? Karena lebih gampang dipakai node berikutnya dan mengurangi ambiguity.
B. Inbound: menangani balasan (biar agent-nya adaptif)
Inbound ini game changer. Tanpa ini, kamu cuma “spam bot”.
Sumber balasan bisa:
- Gmail webhook / IMAP trigger (email masuk)
- Webhook dari WhatsApp gateway
- Slack mention dari tim finance (manual input)
Node plan inbound:
- Webhook: terima pesan masuk
- Lookup: cocokkan ke invoice_id (berdasarkan subject thread / metadata / nomor invoice di teks)
- AI (LLM) node: klasifikasi intent + ekstraksi tanggal
- Switch:
- paid → cek ke payment API → update status paid/needs-proof
- promised → set next_followup_at sesuai tanggal
- disputed → buat ticket ke Zendesk/Jira + stop follow-up
- needs-info → kirim ulang invoice/rekap
- DB Update: simpan notes + status
Prompt AI untuk klasifikasi balasan:
System:
Kamu AI Agent untuk mengklasifikasi balasan terkait invoice.
Keluaran harus JSON valid.
Kategori: paid, promised, disputed, needs_invoice_copy, needs_clarification, other.
Jika ada janji bayar, ekstrak tanggal ISO (YYYY-MM-DD) jika bisa; jika tidak bisa, null.
Jangan mengarang.
User:
Teks balasan:
"""
{{reply_text}}
"""
Konteks invoice:
- invoice_number: {{invoice_number}}
- due_date: {{due_date}}
Output JSON: {"category":"...","promised_date":"...","summary":"..."}
Contoh use case real: agency kecil yang cashflow-nya sering seret
Misal kamu punya agency desain. Klien 30-an, invoice bervariasi, payment terms 14 hari. Masalahnya bukan “nggak mau bayar”, tapi mereka lupa dan kamu juga nggak punya ritme follow-up.
Implementasi real (yang sering kejadian):
- Invoice dibuat di Xero (atau sistem internal).
- Event “invoice created” masuk ke n8n via webhook.
- n8n simpan record ke Postgres + generate payment link (Midtrans/Stripe payment link).
- H-3: email reminder halus.
- H+1: WhatsApp reminder singkat (lebih kebaca).
- Klien balas: “Minggu depan ya, lagi proses approval.”
- Inbound workflow klasifikasi jadi promised + ekstrak tanggal (atau set 7 hari).
- n8n reschedule next_followup_at, tidak spam.
- H+7 belum bayar: sistem eskalasi ke Slack channel finance dengan ringkasan + tombol approval “kirim follow-up tegas”.
Hasil yang biasanya langsung terasa:
- DSO (days sales outstanding) turun beberapa hari karena follow-up jadi konsisten.
- Tim finance nggak capek “mikir kata-kata”.
- Hubungan dengan klien tetap enak karena nada pesan adaptif.
Insight/strategi (bagian paling penting): bikin agent yang tahan banting, bukan cuma pinter ngomong
1) Gunakan “policy-first”, AI belakangan
Kalau AI kamu kasih kebebasan penuh untuk menentukan kapan follow-up, kamu bakal dapat perilaku aneh: terlalu agresif, terlalu sering, atau salah konteks. Set policy layer di Function/IF node, baru AI mengisi bahasa & interpretasi reply.
2) Pisahkan “decision log” untuk audit
Simpan alasan keputusan dalam bentuk ringkas (notes/summary):
- Kenapa hari ini dikirim?
- Stage apa?
- Kategori reply apa?
Ini penting ketika ada komplain dari klien atau saat finance minta penjelasan.
3) Terapkan fallback model + throttling (biar biaya & latency waras)
Strategi sederhana:
- Untuk outbound message generasi: pakai model cepat (lebih murah).
- Untuk klasifikasi inbound: model kecil juga cukup (task sempit).
- Kalau LLM error/rate limit: fallback ke template statis + tetap kirim (atau tunda) sesuai policy.
4) Human-in-the-loop khusus tahap eskalasi
Di tahap awal, otomatis penuh. Tapi saat overdue panjang, wajib ada approval sebelum nada lebih tegas atau sebelum mengancam stop service. Implementasi gampang:
- n8n kirim Slack message berisi draft AI + button approve/reject.
- Kalau approve, baru kirim ke klien.
5) “Stop conditions” itu fitur keamanan
Pastikan ada kondisi berhenti:
- status paid (confirmed via API)
- disputed (pindah ke ticketing)
- hard bounce email / nomor WA invalid (jangan loop)
- max attempts (misal 5 kali), lalu eskalasi manual
Penutup: build versi MVP hari ini (dan upgrade jadi SaaS kecil besok)
Kalau kamu mau mulai cepat, bikin dulu MVP AI Agent workflow automation versi minimal:
- DB state (Postgres/Sheets)
- Outbound cron + email reminder
- Idempotency + attempt_count
- 1 prompt untuk generate pesan
Setelah itu baru naik level:
- Inbound reply classification
- Multi-channel (WhatsApp + email)
- Approval flow eskalasi
- Integrasi API payment untuk auto-confirm paid
Call to action: kalau kamu serius mau “build SaaS cepat dengan AI”, invoice follow-up ini kandidat bagus untuk dipaketkan jadi produk: targetnya agency, freelancer, dan UMKM yang pain-nya sama. Kamu bisa vibe coding UI sederhana (Next.js) untuk setting policy + koneksi akun, lalu n8n jadi orchestrator di belakangnya.
Kalau kamu mau, sebutkan kamu pakai sistem invoice apa (Xero, QuickBooks, Stripe, Midtrans, atau custom) dan channel apa (email/WhatsApp/Slack). Nanti aku bikinkan blueprint node-by-node n8n + contoh schema DB yang pas.