
Invoice otomatis via WhatsApp artinya kamu menghubungkan sistem tagihanmu ke WhatsApp Business API resmi (WABA Meta), membuat template invoice yang sudah di-approve Meta, lalu memicu pengiriman otomatis setiap kali tagihan terbit. Panduan ini membahas langkah teknisnya dari nol sampai pesan invoice benar-benar terkirim ke pelanggan, sekaligus alasan memakai WhatsApp API resmi dibanding menempel nomor pribadi.
Kenapa Kirim Invoice Pakai WhatsApp API, Bukan WhatsApp Biasa
WhatsApp biasa atau nomor pribadi yang dipegang tim keuangan tidak bisa dipicu oleh sistem. Setiap tagihan harus diketik dan dikirim manual, sehingga sulit dijalankan konsisten saat volume tagihan naik. Selain itu, mengirim pesan transaksional massal dari nomor pribadi berisiko dibatasi karena tidak melewati jalur resmi.
WhatsApp Business API resmi dari Meta memungkinkan pengiriman yang terpicu sistem dan terjadwal, dengan status pengiriman yang tercatat. Fokusnya memang pesan transaksional satu arah seperti invoice dan reminder, dan justru di situ kekuatannya: tagihan terkirim otomatis begitu diterbitkan, tanpa menunggu seseorang mengetik ulang. Di api.co.id, jalur ini disediakan lewat Chat Gateway API yang berjalan di atas WhatsApp Business Platform resmi Meta.
Yang Perlu Kamu Siapkan Sebelum Mulai
Akun WhatsApp Business API Resmi
Kamu butuh akun WhatsApp Business API resmi lewat penyedia atau Chat Gateway API. Nomor WhatsApp yang dipakai harus terdaftar sebagai WABA, bukan nomor WhatsApp konsumen biasa. Kalau kamu masih baru mengenal konsep ini, pahami dulu apa itu WhatsApp API dan cara kerjanya sebelum lanjut ke integrasi.
API Key Untuk Autentikasi
Setiap permintaan ke API diautentikasi dengan Bearer token. Kamu akan menaruh API key di header Authorization: Bearer {API_KEY} pada setiap panggilan. Simpan key ini di server atau environment variable, jangan ditaruh di sisi klien.
Sumber Data Tagihan
Invoice otomatis butuh sumber data: sistem kasir, platform e-commerce, spreadsheet, atau aplikasi internal yang tahu kapan tagihan terbit dan berapa nominalnya. Data inilah yang nanti mengisi variabel template, seperti nama pelanggan, nomor invoice, jumlah tagihan, dan jatuh tempo.
Langkah Kirim Invoice Otomatis Via WhatsApp API
1. Buat Template Invoice Kategori UTILITY Dan Submit Ke Meta
Pesan template adalah format pesan yang harus disetujui Meta sebelum bisa dikirim ke pelanggan. Untuk invoice dan tagihan, gunakan kategori UTILITY, yaitu kategori untuk notifikasi transaksional yang dipicu aksi pelanggan, bukan promosi. Memilih kategori yang benar itu penting: tagihan yang salah dikategorikan sebagai MARKETING bisa ditolak atau membebani ekspektasi opt-in yang berbeda.
Isi template dengan variabel yang akan diganti data nyata, misalnya {{1}} untuk nama pelanggan, {{2}} untuk nomor invoice, {{3}} untuk nominal, dan {{4}} untuk jatuh tempo. Chat Gateway API menyediakan manajemen template untuk membuat, melihat, dan submit template ke Meta.
2. Tunggu Template Di-approve Meta
Setelah disubmit, template masuk antrean review Meta. Kamu tidak bisa mengirim template sebelum statusnya approved. Siapkan template lebih awal supaya tidak menghambat pengiriman saat tagihan pertama sudah harus keluar.
3. Picu Pengiriman Lewat Endpoint Kirim Pesan
Begitu template approved dan tagihan terbit, sistemmu memanggil endpoint kirim pesan. Endpoint dan autentikasi berikut sudah pasti sesuai konfigurasi Chat Gateway API:
POST https://chat.api.co.id/api/v1/public/messages/send
Authorization: Bearer {API_KEY}
Content-Type: application/json
Field level atas yang dipakai untuk mengirim template adalah phone_number (nomor tujuan), channel, message_type bernilai "template", whatsapp_phone_number_id, serta objek template yang memuat name dan language.code. Nilai whatsapp_phone_number_id diambil dari endpoint daftar nomor Chat Gateway API (field id internal), bukan ID nomor dari Meta Business Manager.
Kalau tagihan ditujukan ke nomor yang belum ada di CRM, kamu bisa menyertakan "auto_create_customer": true (nilai ini sudah menjadi default) beserta "customer_name": "Budi" pada body request supaya kontak baru otomatis dibuat di CRM saat pesan dikirim.
4. Isi Variabel Template Dari Data Sistem
Isi template menggunakan struktur components. Struktur template.components mengikuti format resmi WhatsApp Business Platform (Meta). api.co.id meneruskan objek tersebut langsung ke Meta tanpa modifikasi. Contoh request di bawah menggabungkan field level atas dengan struktur components:
{
"phone_number": "628xxxxxxxxxx",
"channel": "whatsapp",
"message_type": "template",
"whatsapp_phone_number_id": "{PHONE_NUMBER_ID}",
"template": {
"name": "invoice_tagihan",
"language": { "code": "id" },
"components": [
{
"type": "body",
"parameters": [
{ "type": "text", "text": "Budi" },
{ "type": "text", "text": "INV-0502" },
{ "type": "text", "text": "Rp250.000" },
{ "type": "text", "text": "20 Juli 2026" }
]
},
{
"type": "button",
"sub_type": "url",
"index": 0,
"parameters": [
{ "type": "text", "text": "inv-0502" }
]
}
]
}
}
Urutan parameters di blok body mengikuti urutan variabel template ({{1}}, {{2}}, dan seterusnya). Pada tombol URL dinamis, nilai text di parameters mengisi suffix URL yang sudah didefinisikan di template Meta.
Kalau request berhasil, API merespons HTTP 200 dengan success: true dan objek data berisi detail pengiriman:
{
"success": true,
"data": {
"message_id": "cm3abc123def456ghi789",
"customer_id": "cm3xyz987uvw654rst321",
"customer_created": true,
"whatsapp_phone_number_id": "cm3phone001internalid",
"status": "sent",
"channel": "whatsapp",
"timestamp": "2026-07-14T08:12:34.567Z"
}
}
Objek data memuat message_id, customer_id, status bernilai "sent", dan timestamp pengiriman. Perlu kamu catat, message_id adalah ID pesan di sistem api.co.id, bukan wamid milik Meta. Untuk melacak status pengiriman di WhatsApp (terkirim, terbaca, gagal), gunakan webhook status yang dikirim ke endpoint webhook kamu, bukan nilai message_id ini.
5. Tambahkan Tombol CTA Ke Link Pembayaran
Supaya pelanggan bisa langsung membayar, template invoice bisa memakai tombol URL dinamis. Pada blok button di atas, sub_type bernilai "url" dan satu parameter text berfungsi sebagai suffix URL yang ditempel ke URL dasar tombol di template. Jadi tombol bisa mengarah ke halaman pembayaran spesifik per invoice, misalnya membuka inv-0502 di link pembayaranmu.
Hasilnya di sisi pelanggan berupa satu pesan berisi ringkasan tagihan dan sapaan bernama, disusul detail nomor invoice dan konfirmasi transaksi. Kalau kamu ingin melampirkan file PDF faktur langsung di pesan template, ada syaratnya: template Meta harus di-approve dengan header bertipe Document. Baru setelah itu request bisa menyertakan komponen header yang menunjuk ke file PDF, seperti ini:
{
"type": "header",
"parameters": [
{
"type": "document",
"document": {
"link": "https://contoh.com/invoices/inv-0502.pdf",
"filename": "Invoice-INV-0502.pdf"
}
}
]
}
Komponen header ini ditambahkan ke array components di samping blok body dan button. Tanpa template ber-header Document, PDF tidak bisa menempel hanya dari variabel body. Alternatifnya, kamu kirim template teks dulu lalu susulkan filenya sebagai pesan terpisah dengan message_type bernilai document, tapi alur itu di luar contoh ini.
Menagih Ulang Otomatis Untuk Tagihan Yang Belum Dibayar
Setelah invoice pertama terkirim, kamu bisa menjadwalkan reminder otomatis: H-1 sebelum jatuh tempo, di hari-H, dan setelah lewat jatuh tempo. Semua reminder ini tetap memakai template kategori UTILITY karena sifatnya transaksional.
Ada satu hal soal jendela 24 jam yang perlu kamu tahu. Kalau pelanggan sudah membalas pesanmu, kamu bisa mengirim pesan bebas (free-form) dalam 24 jam sejak balasan terakhir mereka. Di luar jendela itu, pesan yang kamu kirim wajib memakai template yang sudah di-approve. Untuk alur penagihan yang lebih halus dan manusiawi, kamu bisa memadukannya dengan contoh kata-kata menagih pembayaran via WhatsApp agar reminder tidak terkesan kaku.
Batasan Yang Perlu Kamu Tahu
Beberapa aturan main penting supaya ekspektasimu realistis:
- Template wajib di-approve Meta dulu sebelum bisa dipakai, jadi siapkan lebih awal.
- Kategori harus benar. Untuk tagihan gunakan UTILITY, bukan MARKETING.
- Jendela 24 jam berlaku untuk pesan bebas; di luar itu wajib template.
- Consent pelanggan dicatat (opt-in/opt-out), dan nomor yang menolak tidak akan menerima pesan.
Aturan kategori template dan jendela 24 jam ini bukan kebijakan satu penyedia, melainkan mekanisme resmi WhatsApp Business Platform dari Meta, sebagaimana dijelaskan pada dokumentasi harga WhatsApp Business Platform yang menyebut adanya kategori pesan dan jendela layanan pelanggan (customer service window) selama 24 jam. Memahami mekanisme ini sejak awal membantumu merancang alur yang patuh dan tidak tersendat.
Karena setiap kategori pesan punya perlakuan biaya berbeda, ada baiknya kamu juga memahami cara menghitung biaya WhatsApp API per kategori pesan sebelum menskalakan pengiriman invoice.
Mulai Kirim Invoice Otomatis
Ringkasnya, invoice otomatis via WhatsApp dibangun dari empat hal: akun WhatsApp Business API resmi, template UTILITY yang di-approve Meta, sumber data tagihan, dan panggilan ke endpoint kirim pesan setiap tagihan terbit. Dengan itu, tagihan dan reminder berjalan otomatis tanpa mengetik ulang, dan pelanggan bisa langsung membayar lewat tombol di pesan. Pola yang sama juga bisa kamu terapkan untuk notifikasi transaksi otomatis lainnya ke pelanggan.






