Lewati ke isi

Pembayaran Pending

Gejala: Pelanggan klaim sudah bayar (transfer bank, QRIS, e-wallet, dll) tapi status invoice di TB Radius tetap Unpaid. Pelanggan akhirnya komplain — internet diisolir padahal mereka sudah bayar.

Dampak:

  • Pelanggan tidak puas → trust turun
  • Cashflow Anda tidak match dengan data sistem
  • Risiko churn kalau berulang

Diagnostic Pertanyaan

Sebelum troubleshoot, minta info dari pelanggan:

  1. Kapan bayar? (Tanggal & jam)
  2. Bayar lewat apa? (QRIS / VA bank / e-wallet / transfer manual / tunai)
  3. Berapa nominal?
  4. Punya bukti bayar? (screenshot mutasi / receipt)
  5. Bayar untuk invoice mana? (Nomor invoice atau periode tagihan)

Penyebab Umum

1. Webhook Payment Gateway Delay / Miss

Pembayaran via PG (Tripay/Midtrans/Xendit/Duitku) sukses, tapi webhook ke TB Radius miss atau delay.

Cek di TB Radius:

  1. Settings → Webhook Log filter by transaction
  2. Cari entry untuk pembayaran tersebut
  3. Status:
  4. Received → webhook sampai, tapi mungkin gagal proses
  5. Tidak ada → webhook tidak diterima sama sekali

Solusi:

  • Tunggu 5-10 menit (kadang delay PG)
  • TB Radius polling ke PG tiap 5 menit sebagai fallback — biasanya auto-update dalam 10 menit
  • Kalau lebih dari 30 menit, manual mark paid di dashboard

2. Pelanggan Bayar ke Akun yang Salah

Pelanggan transfer ke nomor rekening bukan rekening Anda — uang masuk ke orang lain.

Cek:

  • Bukti transfer pelanggan → nomor rekening tujuan
  • Bandingkan dengan rekening resmi Anda

Solusi:

  • Kalau ke rekening salah: pelanggan harus claim sendiri ke bank atau orang yang nerima
  • Edukasi pelanggan untuk double-check nomor rekening sebelum transfer
  • Saran: pakai Virtual Account (auto-detect nominal) atau QRIS — lebih sulit salah

3. Pelanggan Bayar Nominal Salah

Bayar kurang atau lebih dari nominal invoice.

Cek:

  • Invoice nominal: Rp 350.000
  • Pelanggan transfer: Rp 300.000 → underpaid
  • Pelanggan transfer: Rp 400.000 → overpaid

Solusi:

  • Underpaid: invoice status Partial. Inform pelanggan untuk transfer kekurangan.
  • Overpaid: kelebihan = credit balance untuk invoice berikutnya. Inform pelanggan.

4. Bayar via Manual Transfer (Tidak Auto-Detect)

Pelanggan transfer manual ke rekening Anda tanpa lewat VA. Sistem tidak otomatis tahu pelanggan ini bayar untuk invoice mana.

Cek:

  • Mutasi rekening Anda — apakah ada masuk di tanggal yang pelanggan klaim?
  • Bukti transfer pelanggan

Solusi:

  • Anda manual input pembayaran di dashboard (lihat Pembayaran Manual)
  • Edukasi pelanggan untuk pakai VA atau QRIS (auto-detect) supaya tidak perlu konfirmasi manual

5. Webhook URL Salah di Dashboard PG

PG kirim webhook ke URL salah → tidak sampai TB Radius.

Cek di dashboard PG:

  • Login Tripay/Midtrans/dll
  • Lihat webhook URL ter-config
  • Harus exact match dengan URL yang TB Radius kasih

Solusi:

  • Update webhook URL di dashboard PG sesuai instruksi TB Radius (lihat Integrasi PG)
  • Test webhook (kebanyakan PG punya tombol "Test")

6. Webhook Signature Validation Failed

Webhook sampai TB Radius, tapi signature invalid → ditolak.

Cek:

  • Settings → Webhook Log filter by error
  • Lihat error message detail

Solusi:

  • Update private key / signature key di TB Radius supaya match dengan dashboard PG
  • Re-test webhook

7. Server TB Radius Down Saat Webhook

Webhook PG dikirim, tapi server TB Radius sedang restart/maintenance → webhook miss.

Cek:

  • Status TB Radius saat pembayaran (jam berapa kira-kira)
  • Apakah maintenance window saat itu

Solusi:

  • PG biasanya retry webhook (sampai 3-5x)
  • TB Radius polling fallback akan catch
  • Kalau benar-benar miss, manual mark paid

8. Status Invoice Sudah Paid tapi Belum Sync ke RADIUS

Invoice paid, tapi pelanggan masih diisolir (RADIUS belum reaktivasi).

Cek:

  • Invoice status di dashboard: Paid
  • Pelanggan status: masih Isolated

Solusi:

  • Settings → Auto Reactivate on Payment ON?
  • Tunggu cron reactivate-paid (default 5 menit)
  • Manual reaktivasi: edit pelanggan → status Active

9. Refund / Reversal Belum Di-record

Pelanggan klaim sudah bayar, tapi sebenarnya transaksi mereka failed / refund dari sisi bank.

Cek:

  • Status di dashboard PG: apakah "Success" atau "Failed/Refunded"
  • Mutasi rekening Anda — uang benar-benar masuk?

Solusi:

  • Kalau memang failed di PG, inform pelanggan untuk bayar ulang
  • Kalau refund (rare), inform pelanggan & tunggu transaksi baru

10. Pelanggan Salah Klaim (Sengaja atau Tidak)

Rare, tapi possible: pelanggan klaim sudah bayar padahal belum, untuk delay isolir.

Cek:

  • Minta bukti transfer (screenshot mutasi mereka — bukan foto edit)
  • Cek mutasi rekening Anda di tanggal klaim
  • Cek dashboard PG kalau pakai online payment

Solusi:

  • Kalau benar tidak ada bukti, jelaskan ke pelanggan: tidak ada data masuk, mohon bayar dulu
  • Verifikasi mutasi adalah source of truth, bukan klaim verbal

Diagnostic Workflow

1. Pelanggan klaim bayar (tanpa info detail)
2. Tanya 5 diagnostic questions (kapan, lewat apa, dll)
3. Cek dashboard PG / mutasi rekening
   ├── Ada di PG/bank? → Step 4
   └── Tidak ada? → Pelanggan salah/scam, klarifikasi
4. Cek di TB Radius
   ├── Invoice Paid → Sudah benar, cek status pelanggan (mungkin perlu reaktivasi)
   └── Invoice Unpaid → Step 5
5. Cek webhook log
   ├── Webhook received → ada error proses, fix manual
   └── Webhook tidak received → manual mark paid
6. Update invoice + reaktivasi pelanggan kalau perlu
7. Konfirmasi ke pelanggan + dokumentasi root cause

Best Practices

Setup multiple PG

Pakai 2-3 PG sekaligus sebagai fallback. Kalau 1 PG webhook bermasalah, yang lain masih jalan.

Edukasi pelanggan pakai VA / QRIS

Transaksi via VA / QRIS:

  • Nominal exact (tidak salah)
  • Auto-detect ke invoice (tidak perlu manual)
  • Webhook real-time

Transaksi manual transfer = pekerjaan extra Anda.

Monitoring webhook health

Dashboard punya Webhook Health Status:

  • Total webhook diterima per hari
  • % success vs failed
  • Alert kalau failure rate > 5%

Cek secara berkala.

Jangan trust klaim verbal

"Saya sudah transfer kemarin Rp 350.000" — minta bukti. Bukti = screenshot mutasi rekening pelanggan (yang menunjukkan saldo turun), bukan foto bukti transfer yang gampang di-edit.

Konfirmasi nominal & tanggal exact

Saat input manual pembayaran:

  • Tanggal = tanggal pelanggan transfer (bukan tanggal Anda input)
  • Nominal = nominal exact (jangan round-up)
  • Catatan = source pembayaran ("Transfer BCA dari rek 1234")

Audit clean = reconciliation lancar.

FAQ

Q: Pelanggan bayar 1 menit lalu, invoice belum update — wait atau action? A: Tunggu 5-10 menit. Kebanyakan PG webhook < 1 menit, beberapa lebih lambat (terutama VA bank yang slow). Kalau lebih dari 15 menit, action.

Q: Pelanggan transfer ke nomor rekening saya tapi tanpa keterangan — bagaimana link ke invoice? A: Sulit auto. Anda harus manual:

  1. Cek mutasi rekening — confirm nominal & sender
  2. Kontak pelanggan via WA — confirm transfer mereka
  3. Manual input pembayaran di dashboard ke invoice yang sesuai

Q: Multiple invoice unpaid, pelanggan bayar 1× nominal total — auto detect? A: PG biasanya tidak. Anda manual split: input pembayaran ke 1 invoice (paling lama), kalau ada sisa = credit balance untuk invoice berikutnya.

Q: Refund pelanggan — gimana? A:

  1. Refund manual via dashboard PG (refund ke rekening pelanggan)
  2. Edit invoice di TB Radius: status Refunded
  3. Komunikasi ke pelanggan: kapan dana cair (biasanya T+1)

Q: Pelanggan bayar tunai ke kolektor lapangan — workflow? A:

  1. Kolektor terima tunai + kasih kwitansi fisik
  2. Kolektor input ke aplikasi TB Radius (atau report ke admin)
  3. Admin verify + mark paid di dashboard
  4. Pelanggan terima konfirmasi WA

Bulk import kolektor: lihat Pembayaran Manual.