# Integrasi

> Hubungkan akun payment gateway, kurir, WhatsApp, dan email milik Anda sendiri, lengkap dengan tautan daftar, tautan dasbor, nilai yang dibutuhkan, dan URL yang harus ditempel untuk tiap penyedia.

Source: https://docs.bakasir.com/id/docs/portal/integrations



**Integrasi** menghubungkan Bakasir dengan akun milik Anda di perusahaan lain. Uang, pesan, dan pengiriman berjalan lewat akun Anda sendiri, jadi Bakasir tidak pernah memegang pembayaran pelanggan Anda. Halaman ini menjelaskan fungsi tiap integrasi, apakah Anda memerlukannya, dan cara menyiapkannya langkah demi langkah. Setiap bagian penyedia dimulai dengan tautan yang Anda perlukan (daftar, dasbor, panduan resmi penyedia, harga), jadi Anda tidak perlu mencarinya sendiri.

## Sebelum mulai

- Anda adalah **Owner**. Manager bisa membuka halaman ini tetapi hanya untuk dilihat.
- Buka **Pengaturan → Integrasi**. Setiap kartu menampilkan statusnya (**Terhubung**, **Belum terhubung**, atau **Tersimpan, belum diverifikasi**), fungsinya, dan tautan **Baca panduan** ke bagian yang sesuai di bawah.
- Nilai rahasia (server key, kata sandi, token) tidak pernah ditampilkan lagi setelah disimpan. Kosongkan isian rahasia untuk mempertahankan nilai yang tersimpan.
- Buka dua tab browser: Bakasir di satu tab, dasbor penyedia di tab lain. Anda akan menyalin nilai bolak-balik.
- Pakai **Sandbox** atau mode uji coba lebih dulu. Pindah ke produksi hanya setelah pesanan uji berhasil.
- Nama menu di dasbor penyedia kadang berubah. Jika menu tidak ada di tempat yang disebut halaman ini, cari nama isiannya di dasbor, atau buka panduan penyedia yang ditautkan di bagian terkait.

## Fungsi tiap integrasi

| Integrasi | Fitur yang bergantung padanya | Perlu dihubungkan? | Waktu penyiapan |
| --- | --- | --- | --- |
| [**Midtrans**](#midtrans) | Checkout toko online, DP reservasi, pesan mandiri, dan QRIS di POS. | Hubungkan Midtrans **atau** DOKU untuk menerima pembayaran digital. | 15 menit untuk Sandbox, ditambah peninjauan penyedia untuk Produksi |
| [**DOKU**](#doku) | Alur yang sama seperti Midtrans, dengan DANA, OVO, dan e-wallet lain. | Hubungkan DOKU **atau** Midtrans. | 20 menit untuk Sandbox, ditambah peninjauan penyedia untuk Produksi |
| [**Biteship**](#biteship) | Tarif kurir langsung saat checkout, pengiriman dan resi dari pesanan. | Hanya untuk plugin **Shipping**. | 20 menit, ditambah aktivasi live dari Biteship |
| [**RajaOngkir**](#rajaongkir) | Tarif kurir langsung saat checkout dan pelacakan resi. Paket dipesan ke kurir secara manual. | Hanya untuk plugin **Shipping**, sebagai alternatif Biteship. Pilih salah satu. | 10 menit |
| [**WhatsApp**](#whatsapp) | Struk, pesanan pembelian, kabar pesanan online, dan pengingat reservasi dari nomor Anda sendiri. | Opsional. Tanpa ini, Bakasir membuka tautan chat WhatsApp untuk Anda kirim manual. | 30 menit, ditambah persetujuan template oleh Meta (hingga 24 jam) |
| [**SMTP**](#smtp) | Email bisnis Anda dikirim dari server surat sendiri: struk, slip gaji, laporan terjadwal, pesanan pembelian, dan email booking. | Opsional. Perlu paket yang menyertakan SMTP sendiri. | 10 menit |
| [**Twilio**](#twilio) | Menyimpan dan memeriksa kunci Twilio Anda. Bakasir belum mengirim SMS. | Opsional, dan belum ada fitur lain yang memakainya. | 10 menit |

<Callout type="info" title="Paket dan mata uang untuk pembayaran">
    Midtrans dan DOKU menagih pelanggan Anda hanya pada paket **Mulai** atau lebih tinggi, dan hanya untuk toko yang berjualan dalam **IDR**. Pada paket Gratis, kartunya bisa diisi, tetapi checkout tidak menawarkan pembayaran digital.
</Callout>

<Callout type="info" title="Email mana yang memakai kartu SMTP">
    Bila paket Anda menyertakan SMTP sendiri dan kartu SMTP sudah lengkap, email yang dikirim bisnis Anda lewat server surat Anda sendiri: **Resi via Email**, slip gaji, laporan terjadwal, pesanan pembelian ke pemasok, dan email booking. Selain itu, seperti email tagihan, keamanan, dan verifikasi dari Bakasir, selalu lewat Bakasir.
</Callout>

## Midtrans

Midtrans menerima pembayaran online pelanggan Anda ke akun Midtrans milik Anda sendiri: kartu (3D Secure terbuka di dalam Bakasir), QRIS, virtual account (BCA, BNI, BRI, Mandiri, Permata, CIMB), GoPay, ShopeePay, Indomaret, dan Alfamart. Langganan Bakasir ditagih dengan kunci milik Bakasir, bukan kunci Anda.

**Yang perlu disiapkan**

- Alamat email dan nomor telepon untuk akun Midtrans.
- Untuk **Produksi** (uang sungguhan), Midtrans meninjau bisnis Anda. Menurut Midtrans, perorangan membutuhkan KTP pemilik (ditambah NPWP bila ingin pembayaran kartu). Badan usaha membutuhkan KTP direktur, NPWP perusahaan, akta pendirian dan perubahan, serta SK Kemenkumham. Anda juga perlu situs web, atau tautan media sosial atau katalog produk bila belum punya situs. Lihat [daftar dokumen legal Midtrans](https://docs.midtrans.com/docs/what-are-the-legal-documents-required-for-midtrans-account-registration).
- Waktu: sekitar 15 menit untuk Sandbox. Persetujuan Produksi ada di pihak Midtrans, dan pembayaran kartu bisa memakan waktu hingga 10 hari kerja.

**Tautan yang Anda perlukan**

- Daftar: [dashboard.midtrans.com/register](https://dashboard.midtrans.com/register). [Panduan pendaftaran Midtrans dalam bahasa Indonesia](https://midtrans.com/id/passport) menunjukkan tiap langkahnya.
- Dasbor Sandbox (untuk uji coba): [dashboard.sandbox.midtrans.com](https://dashboard.sandbox.midtrans.com). Dasbor Produksi (uang sungguhan): [dashboard.midtrans.com/login](https://dashboard.midtrans.com/login).
- Access Keys: [Sandbox](https://dashboard.sandbox.midtrans.com/settings/access-keys) dan [Produksi](https://dashboard.midtrans.com/settings/access-keys). Anda harus sudah masuk.
- Mengaktifkan metode pembayaran tambahan nanti: [dashboard.midtrans.com/new_payment_method](https://dashboard.midtrans.com/new_payment_method).
- Panduan Midtrans: [akun dan kunci Midtrans](https://docs.midtrans.com/docs/midtrans-account), [URL notifikasi](https://docs.midtrans.com/docs/https-notification-webhooks), [menguji pembayaran di Sandbox](https://docs.midtrans.com/docs/testing-payment-on-sandbox), [pindah ke Produksi](https://docs.midtrans.com/docs/switching-to-production-mode).
- Biaya: [midtrans.com/pricing](https://midtrans.com/pricing).




### Buat akun Midtrans

Buka [dashboard.midtrans.com/register](https://dashboard.midtrans.com/register), isi formulir, lalu konfirmasi email Anda (cari email berjudul "Instruksi Konfirmasi"). Lingkungan Sandbox dibuat otomatis dan gratis.




### Ambil kunci Sandbox

Masuk ke [dashboard.sandbox.midtrans.com](https://dashboard.sandbox.midtrans.com). Tombol **Environment** di kiri atas menunjukkan Anda sedang berada di mana (Sandbox bersidebar oranye, Produksi bersidebar biru). Buka **Settings → Access Keys** lalu salin **Client Key** dan **Server Key**. Server Key itu rahasia: jangan dibagikan.




### Isi di Bakasir

Di **Pengaturan → Integrasi**, klik **Hubungkan** pada **Midtrans**. Tempel **Client Key** dan **Server Key**. Mode mengikuti Server Key: kunci berawalan `SB-` berjalan di **Sandbox**, kunci lain di **Produksi**.

Pilih **Acquirer QRIS** (**GoPay** atau **ShopeePay (airpay shopee)**), yaitu jaringan QRIS yang aktif di akun Midtrans Anda. Jika ragu, biarkan **GoPay**.




### Tempel URL notifikasi ke Midtrans

Jendela Midtrans di Bakasir menampilkan **Payment Notification URL**. Klik **Salin**. Di dasbor Midtrans (environment yang sama dengan kuncinya) buka **Settings → Payment**, cari **Payment Notification URL**, tempel, lalu simpan. Dasbor dan panduan Midtrans yang lebih lama menyebut halaman ini **Settings → Configuration**, dengan tombol **Update**. Di Bakasir cloud alamatnya:

```text
https://api.bakasir.com/webhooks/shop/midtrans
```

Biarkan **Recurring Notification URL** dan **Pay Account Notification URL** (penautan akun) **kosong**. **Finish Redirect URL** tidak dipakai, karena 3D Secure kartu terbuka di dalam Bakasir. URL harus bisa dijangkau dari internet, jadi tidak boleh alamat lokal.




### Uji dan simpan

Klik **Uji Koneksi**. Bakasir menyimpan isian Anda lalu meminta Midtrans memastikan Server Key. Saat muncul **Berhasil. Kredensial Anda bekerja.**, klik **Simpan**. Kartu kini menampilkan **Terhubung**.




### Buat pesanan uji

Buka toko online Anda, masukkan produk ke keranjang, dan pilih **Pembayaran Online** saat checkout. Bayar dengan simulator Midtrans, mengikuti [menguji pembayaran di Sandbox](https://docs.midtrans.com/docs/testing-payment-on-sandbox): [simulator QRIS](https://simulator.sandbox.midtrans.com/v2/qris/index) untuk QRIS dan e-wallet, simulator bank untuk virtual account, dan nomor kartu uji di halaman itu untuk kartu. Di **E-Commerce → Pesanan Online**, pesanan akan berubah menjadi **Lunas** dengan sendirinya.

<Callout type="warn" title="Jangan bayar pesanan Sandbox dengan uang sungguhan">
    Nomor virtual account dan kode QR Sandbox bisa sama dengan yang asli. Midtrans memperingatkan bahwa uang sungguhan yang dikirim ke sana bisa hilang. Pakai simulator saja.
</Callout>




### Beralih ke produksi

1. Selesaikan aktivasi. Di dasbor Produksi, lengkapi banner pendaftaran ("One more step!") dan unggah dokumen yang disebut di atas. Midtrans bisa mengirim email untuk meminta informasi tambahan.
2. Geser tombol **Environment** ke **Production**, buka **Settings → Access Keys**, lalu salin kunci Produksi.
3. Di Bakasir buka **Midtrans → Kelola**, tempel **Client Key** dan **Server Key** Produksi (kunci Produksi tidak berawalan `SB-`), klik **Uji Koneksi**, lalu **Simpan**.
4. Di dasbor Produksi, isi lagi **Payment Notification URL**. Sandbox dan Produksi punya pengaturan sendiri-sendiri.
5. Buat satu pesanan sungguhan dengan nilai kecil (Midtrans menyarankan minimal Rp10.000) dan pastikan pesanannya menjadi **Lunas**. Batalkan atau kembalikan dananya setelahnya bila perlu.

Untuk mengaktifkan metode lain (misalnya kartu atau Indomaret), pakai **+ Payment Method** di dasbor Produksi.




<Callout type="warn" title="Pakai URL toko, bukan yang lain">
    Pakai URL yang berakhiran `/webhooks/shop/midtrans`. URL `/webhooks/midtrans` hanya untuk penagihan langganan Bakasir sendiri dan tidak akan mengonfirmasi pesanan pelanggan Anda.
</Callout>

**Yang dilihat pelanggan Anda.** Saat checkout, toko menampilkan **Pilih metode pembayaran** dengan kelompok **Kartu**, **QRIS**, **Virtual Account**, **E-wallet**, dan **Gerai retail**, sesuai yang aktif di akun Midtrans Anda. Data kartu langsung dikirim ke Midtrans dan tidak pernah sampai ke Bakasir. Setelah membayar, halaman diperbarui sendiri dan pesanan berubah menjadi **Lunas** di Portal Anda.

**Biaya.** Midtrans menagih Anda per transaksi yang berhasil, dan pendaftaran gratis. Tarif yang terlihat pada 2 November 2026 di [midtrans.com/pricing](https://midtrans.com/pricing), sebelum PPN: virtual account Rp4.000, QRIS 0,7%, GoPay 2%, kartu kredit 2,9% ditambah Rp2.000. Cek halamannya untuk tarif terkini. Bakasir tidak menambah biaya apa pun.

**Masalah umum**

| Yang Anda lihat | Penyebab dan solusi |
| --- | --- |
| **midtrans rejected the server key: check the key and that it matches the selected mode** | Kunci dan environment tidak cocok. Kunci Sandbox (`SB-`) hanya bekerja di Sandbox, kunci Produksi hanya di Produksi. Salin ulang kunci tanpa spasi. |
| **server_key is required** | Anda mengklik **Uji Koneksi** saat Server Key masih kosong. Tempel dulu. |
| Pelanggan sudah membayar tetapi pesanan tetap belum lunas | Pastikan **Payment Notification URL** tersimpan di environment Midtrans yang benar, lalu cek pesanan lagi. Bakasir juga bertanya langsung ke Midtrans saat halaman pembayaran pelanggan memeriksa status, sehingga notifikasi yang terlambat tetap tertangani. |
| Pilihan **Pembayaran Online** tidak muncul di checkout | Anda masih di paket Gratis, toko tidak berjualan dalam IDR, atau kuncinya belum lengkap (kedua kunci wajib diisi). |
| Metode pembayaran yang diinginkan pelanggan tidak ada | Metode itu belum aktif di akun Midtrans Anda. Ajukan lewat **+ Payment Method** di dasbor Produksi. |
| **the QRIS acquirer is gopay or airpay shopee** | Pilih salah satu dari dua nilai di daftar **Acquirer QRIS**. |

## DOKU

DOKU menerima pembayaran online ke akun DOKU milik Anda sendiri: QRIS, virtual account (BCA, BNI, BRI, Mandiri, Permata, CIMB), DANA, ShopeePay, OVO, Indomaret, dan Alfamart. DOKU tidak menyediakan pembayaran kartu di Bakasir. DOKU memakai pasangan kunci: Anda memberi DOKU kunci publik Anda, dan DOKU memberi Anda kunci publiknya.

**Yang perlu disiapkan**

- Alamat email bisnis dan nomor telepon untuk akun DOKU.
- Untuk **Produksi**, DOKU memverifikasi bisnis Anda dalam sekitar 48 jam. Menurut DOKU, perusahaan membutuhkan NIB, akta pendirian dan perubahan, surat persetujuan Kemenkumham, NPWP, KTP direktur, dan foto bukti usaha (lokasi, kegiatan, atau produk). Usaha tanpa badan hukum (khusus WNI) membutuhkan KTP, selfie sambil memegang KTP, dan foto bukti usaha. Berkas harus terbaca jelas dan tidak disensor (PDF, JPG, atau PNG, maksimal 15 MB per berkas). Sebagian produk membutuhkan izin tambahan.
- Waktu: sekitar 20 menit untuk Sandbox. Sebagian metode pembayaran diaktifkan oleh tim sales DOKU, jadi sediakan waktu tambahan.

**Tautan yang Anda perlukan**

- Daftar untuk produksi: [dashboard.doku.com/bo/register](https://dashboard.doku.com/bo/register). Daftar untuk Sandbox (uji coba): [sandbox.doku.com/bo/sandbox-registration](https://sandbox.doku.com/bo/sandbox-registration).
- Masuk: [Sandbox](https://sandbox.doku.com/bo/login) dan [Produksi](https://dashboard.doku.com/bo/login).
- Panduan DOKU: [membuat akun](https://docs.doku.com/get-started/create-account), [mengaktifkan bisnis (Indonesia)](https://docs.doku.com/get-started/activate-business/business-account), [mengaktifkan layanan](https://docs.doku.com/get-started/manage-business/activate-services), [API key dan kunci publik](https://docs.doku.com/get-started/manage-business/set-up-integration), [URL notifikasi per metode pembayaran](https://docs.doku.com/get-started/manage-business/set-up-integration/webhook-payment-notification), [simulasi transaksi](https://docs.doku.com/get-started/manage-business/set-up-integration/simulate-transactions).
- Biaya: [doku.com/pricing](https://doku.com/pricing).




### Buat akun

Buat akun **Sandbox** lebih dulu dengan tautan Sandbox di atas, lalu akun **Produksi** saat Anda siap. Keduanya terpisah: login untuk yang satu tidak berlaku di yang lain. Untuk Produksi, masukkan OTP yang DOKU kirim ke email Anda, lalu ikuti [panduan aktivasi](https://docs.doku.com/get-started/activate-business/business-account) DOKU: pilih jenis akun, isi data bisnis, unggah dokumen, dan tunggu email verifikasi.




### Aktifkan layanan

Di dasbor DOKU buka **Settings**, lalu di bagian **Account** pilih **Service**, klik **ADD SERVICE**, pilih layanannya (virtual account, QRIS, e-wallet, convenience store), lalu klik **ACTIVATE**. Sebagian layanan perlu disetujui tim sales DOKU.




### Pilih mode di Bakasir

Di **Pengaturan → Integrasi**, klik **Hubungkan** pada **DOKU** lalu pilih **Sandbox** untuk mencoba atau **Produksi** untuk pembayaran sungguhan. Harus sama dengan environment DOKU tempat Anda menyalin kunci.




### Salin Client ID dan Secret Key

Di dasbor DOKU buka **Settings**, lalu di bagian **Account** pilih **API Keys**. Dasbor yang lebih lama menyebutnya **Integration → API Keys**. **Client ID** Anda ada di halaman itu. Klik **Reveal Key**, masukkan kode 6 digit yang DOKU kirim ke email Anda, lalu salin **Secret Key** dalam 30 detik. Tempel keduanya ke isian **Client ID** dan **Secret Key** di Bakasir.




### Buat pasangan kunci

Di Bakasir klik **Buat pasangan kunci**. Bakasir membuat pasangannya dan menampilkan **Kunci publik Anda**. Klik **Salin**, lalu tempel di halaman **API Keys** yang sama di dasbor DOKU, sebagai **Merchant Public Key** Anda. Kunci privat tetap di server dan tidak pernah ditampilkan.




### Salin kunci publik DOKU kembali

Di halaman **API Keys** DOKU klik **Reveal Key** di samping **DOKU Public Key** lalu salin. Tempel seluruh blok, termasuk baris `BEGIN` dan `END`, ke **Kunci publik DOKU** di Bakasir.




### Tempel URL ke DOKU

Jendela Bakasir menampilkan dua URL. Di Bakasir cloud alamatnya:

| Isian di Bakasir | Tempatnya di dasbor DOKU | URL |
| --- | --- | --- |
| **URL notifikasi** | **Settings → Payment Settings**, lalu tiap kanal yang Anda pakai: **Virtual Account** (klik **Configure**), **QR Payment** untuk QRIS (klik **Edit**), **e-Wallet** dan **Convenience Store** (klik **CONFIGURE**). Simpan masing-masing. | `https://api.bakasir.com/webhooks/shop/doku` |
| **URL token SNAP (Virtual Account)** | **Settings → Account → API Keys**, di isian **Token URL**. | `https://api.bakasir.com/webhooks/shop/doku/token` |

DOKU memanggil URL token untuk meminta token sebelum mengirim pemberitahuan pembayaran virtual account. Jika suatu kanal tidak punya URL, DOKU tidak mengirim pemberitahuannya dan pembayaran tidak terkonfirmasi.




### Uji dan simpan

Klik **Uji Koneksi**. Saat muncul **Berhasil. Kredensial Anda bekerja.**, klik **Simpan**. Kartu menampilkan **Terhubung**.




### Buat pesanan uji lalu beralih ke produksi

Di Sandbox, buat pesanan uji dari toko Anda. Bayar dengan simulator DOKU: di dasbor Sandbox buka **Settings → Payment Settings → Simulator**, pilih metode pembayarannya, lalu klik **Simulate**. Pastikan pesanan berubah menjadi **Lunas**.

Untuk beralih ke produksi, ulangi langkah di atas dengan akun Produksi Anda: ubah mode ke **Produksi**, salin Client ID, Secret Key, dan kunci publik DOKU milik Produksi, daftarkan **Kunci publik Anda** dan kedua URL di dasbor Produksi, lalu klik **Uji Koneksi** dan **Simpan**. Buat satu pesanan sungguhan bernilai kecil untuk memastikan.




<Callout type="warn" title="Mengganti pasangan kunci">
    Jika Anda mengklik **Ganti pasangan kunci**, kunci publik yang lama berhenti bekerja. Tempel kunci publik yang baru ke dasbor DOKU lagi, kalau tidak pembayaran tidak akan terkonfirmasi.
</Callout>

<Callout type="info" title="Nama menu DOKU">
    DOKU sesekali mengubah dasbornya, dan dasbor Sandbox dan Produksi bisa sedikit berbeda. Jika Anda tidak menemukan tempat untuk Merchant Public Key, Token URL, atau URL notifikasi, cari nama isiannya di dasbor, atau tanyakan ke DOKU Care. Bakasir membutuhkan empat hal ini terdaftar di DOKU: kunci publik Anda, URL notifikasi untuk tiap kanal yang dipakai, URL token, serta Client ID dan Secret Key Anda.
</Callout>

**Yang dilihat pelanggan Anda.** Saat checkout, toko menampilkan **Pilih metode pembayaran** dengan kelompok **QRIS**, **Virtual Account**, **E-wallet** (DANA, ShopeePay, OVO), dan **Gerai retail** (Indomaret, Alfamart). Untuk OVO, pelanggan mengetik nomor telepon yang terdaftar di aplikasi OVO lalu menyetujui pembayaran di sana. Halaman diperbarui sendiri setelah pembayaran diterima.

**Biaya.** DOKU menagih per transaksi, dan tarifnya bergantung pada metode. Tarif yang terlihat pada 2 November 2026 di [doku.com/pricing](https://doku.com/pricing), sebelum PPN: QRIS 0,7% di atas Rp100.000, virtual account Rp4.000 (BCA Rp4.500), DANA 1,5%. Halaman itu juga mencantumkan biaya proses QRIS yang berlaku mulai 1 November 2026. Cek halamannya untuk tarif terkini.

**Masalah umum**

| Yang Anda lihat | Penyebab dan solusi |
| --- | --- |
| **doku rejected the Client ID or private key** | Kunci publik belum terdaftar di dasbor DOKU, atau modenya tidak cocok. Daftarkan **Kunci publik Anda** di environment yang sama dengan yang Anda pilih. |
| **doku rejected the Secret Key: check the key and that it matches the selected mode** | Salin ulang Secret Key dari environment yang benar. Jika Anda membuat ulang di DOKU, salin yang baru. |
| **doku public key is not a valid PEM** | Tempel seluruh blok kunci dengan baris `BEGIN` dan `END`, tanpa teks tambahan. |
| **client_id is required** atau **secret_key is required** | Anda mengklik **Uji Koneksi** saat isiannya masih kosong. |
| Pembayaran virtual account tidak terkonfirmasi | Pastikan URL notifikasi (di kanal **Virtual Account**) dan URL token sama-sama sudah diisi di DOKU. |
| Pembayaran QRIS atau e-wallet tetap belum lunas | Cek URL notifikasi di kanal **QR Payment** atau **e-Wallet**, dan pastikan layanannya aktif di **Settings → Account → Service**. |
| Pilihan **Pembayaran Online** tidak muncul di checkout | Anda masih di paket Gratis, toko tidak berjualan dalam IDR, atau kartu DOKU belum lengkap. Client ID, Secret Key, kunci publik DOKU, dan pasangan kunci Anda semuanya wajib. |

## Memilih gateway pembayaran aktif

Jika Midtrans dan DOKU sama-sama terhubung, **Gateway pembayaran aktif** muncul di bagian atas halaman. Pilih yang menerima pembayaran pelanggan Anda. Kartu gateway yang aktif menampilkan **Gateway aktif**. Jika hanya satu yang terhubung, itu yang otomatis dipakai. Pesanan yang sudah dimulai dengan satu gateway tetap diselesaikan dengan gateway itu.

## Biteship

Biteship memberi toko online Anda tarif kurir langsung saat checkout dan membuat pengiriman serta resi dari pesanan. Ini bagian dari plugin **Shipping** (Rp39.000 per bulan, sudah termasuk di Tumbuh dan Enterprise), yang membutuhkan **E-Commerce**. Kartu **Biteship** hanya muncul saat plugin aktif, dan membuka **Pengaturan → Pengiriman**, tempat Anda juga memilih penyedia: toko memakai Biteship atau [RajaOngkir](#rajaongkir), tidak keduanya sekaligus.

**Yang perlu disiapkan**

- Akun Biteship, serta plugin **E-Commerce Suite** dan **Shipping** yang sudah terpasang.
- Alamat penjemputan beserta nama dan nomor telepon kontak, dan berat produk Anda dalam gram.
- Toko yang berjualan dalam **IDR**.
- Saldo di akun Biteship untuk pengiriman live. Pengiriman dibayar dari saldo Biteship Anda, bukan oleh Bakasir.
- Waktu: sekitar 20 menit dengan key uji coba. Untuk pemakaian live, Biteship harus mengaktifkan Order API Anda, yang punya peninjauan sendiri.

**Tautan yang Anda perlukan**

- Daftar: [dashboard.biteship.com/signup](https://dashboard.biteship.com/signup). Masuk: [dashboard.biteship.com/signin](https://dashboard.biteship.com/signin).
- API key dan webhook: [dashboard.biteship.com/integrations](https://dashboard.biteship.com/integrations).
- Panduan Biteship: [membuat API key](https://biteship.com/en/docs/api/authentication), [Sandbox (mode testing)](https://biteship.com/en/docs/sandbox), [go live](https://biteship.com/en/docs/go_live/activation), [mengirim permintaan aktivasi](https://biteship.com/en/docs/go_live/submit-activation-request), [ringkasan webhook](https://biteship.com/en/docs/api/webhook/overview).
- Paket dan batasan: [biteship.com/en/docs/plans](https://biteship.com/en/docs/plans).




### Pasang plugin

Pasang **E-Commerce Suite** dan **Shipping** dari **Plugin → Marketplace** (paket Tumbuh dan Enterprise sudah memuat keduanya). Lihat [katalog plugin](https://docs.bakasir.com/id/docs/commerce/plugins.md).




### Buat API key uji coba

Di [dasbor Biteship](https://dashboard.biteship.com/integrations) aktifkan tombol **Testing Mode** di sidebar, buka **Integrations**, klik **Pengaturan**, lalu **Tambah Kunci API**. Beri nama, lalu salin key-nya saat itu juga karena Biteship hanya menampilkannya sekali. Key uji coba berawalan `biteship_test.` dan key live berawalan `biteship_live.`. Order API aktif secara bawaan di Testing Mode.




### Hubungkan di Bakasir

Di **Pengaturan → Pengiriman**, tempel **API key**, klik **Simpan**, lalu klik **Tes koneksi**. Anda akan melihat **Biteship menerima key ini.**




### Tambahkan webhook

Di Bakasir salin **URL webhook** (klik **Salin URL webhook**). Di dasbor Biteship buka **Integrations**, klik **Pengaturan** pada kartu webhook lalu **Tambah Webhook**, tempel URL-nya, dan pilih event **order.status** dan **order.waybill_id**. Simpan. URL ini memuat kunci rahasia toko Anda, jadi jaga kerahasiaannya. Pakai webhook terpisah untuk key uji coba dan key live.




### Atur penjemputan dan pengiriman

Isi **Alamat penjemputan**: cari dan pilih **Area (kecamatan)** (ketik minimal 3 huruf), lalu **Nama kontak**, **Telepon kontak**, dan **Alamat lengkap**. Di **Opsi pengiriman** pilih **Kurir** yang boleh dipakai pembeli, atur **Berat bawaan per barang (gram)** untuk produk yang belum punya berat, dan bila perlu **Gratis ongkir mulai dari** serta **Asuransikan paket**. Klik **Simpan**.




### Beralih ke live

Setelah uji coba berhasil, minta Biteship mengaktifkan Order API live Anda. Di dasbor Biteship matikan **Testing Mode** dan buat API key live dengan cara yang sama seperti key uji coba (Order API-nya tetap nonaktif sampai Biteship menyetujui). Buka **Integrations**, klik **Aktivasi Order API**, pilih API key live dan kurirnya, isi **Test Order ID** dari pengiriman uji Anda, lengkapi formulir, lalu klik **Kirim Data Aktivasi API**. Tunggu sampai statusnya **Aktif**. Setelah itu tempel key live di Bakasir (**Pengaturan → Pengiriman**), simpan, tes lagi, dan tambahkan webhook untuk key live.

Terakhir aktifkan **Tagih ongkir saat checkout**. Syaratnya API key, alamat penjemputan, dan minimal satu kurir.




### Buat pengiriman dari pesanan

Buka **E-Commerce → Pesanan Online**, buka sebuah pesanan, lalu klik **Buat pengiriman**. Membuat pengiriman memesan kurir dan memotong saldo Biteship Anda. Pesanan lalu menampilkan resi, riwayat pelacakan, serta tombol untuk memperbarui pelacakan, membuka halaman pelacakan, atau membatalkan pengiriman.




**Yang dilihat pelanggan Anda.** Saat checkout, toko meminta area tujuan dan menampilkan kurir yang Anda pilih beserta harganya. Pesanan di atas nilai **Gratis ongkir mulai dari** gratis ongkir (Anda tetap membayar kurir). Setelah Anda membuat pengiriman, pembeli bisa melacak paketnya.

**Biaya.** Biteship punya paket bulanan dengan kuota, dan permintaan live di luar kuota ditagih dari saldo Biteship Anda. Key uji coba tidak dihitung ke kuota. Lihat [Paket dan batasan](https://biteship.com/en/docs/plans). Ongkos kurir dibayar dari saldo Biteship Anda dan dibebankan ke pembeli dalam harga ongkir.

**Masalah umum**

| Yang Anda lihat | Penyebab dan solusi |
| --- | --- |
| **Tidak bisa terhubung ke Biteship dengan key ini.** | Key salah, atau tersalin dengan spasi. Salin ulang. Pakai key uji coba selama **Testing Mode** aktif dan key live setelah aktivasi. |
| **Simpan API key dulu, lalu tes koneksi.** | Klik **Simpan** sebelum **Tes koneksi**. |
| **Isi API key, alamat penjemputan dan minimal satu kurir sebelum mengaktifkan pengiriman.** | Salah satu dari ketiganya belum ada. Lengkapi dan simpan, lalu aktifkan **Tagih ongkir saat checkout**. |
| **Periksa isian: key, area, telepon dan kurir harus valid.** | Pilih area dari daftar, jangan hanya mengetik, dan isi nomor telepon yang valid. |
| **Pengiriman otomatis hanya untuk toko yang berjualan dalam IDR.** | Mata uang toko bukan IDR. |
| Ongkir tidak muncul saat checkout | Kedua plugin harus aktif, dan **Tagih ongkir saat checkout** harus menyala. |
| Pelacakan tidak pernah berubah | Webhook belum dipasang atau memakai kunci yang salah. Tambahkan lagi **URL webhook**, atau klik **Perbarui pelacakan** pada pesanan. |

## RajaOngkir

RajaOngkir (sekarang dikelola Komerce) adalah penyedia pengiriman kedua untuk plugin **Shipping**. Pilih ini sebagai ganti Biteship bila Anda memesan paket ke kurir sendiri dan hanya perlu tarif langsung serta pelacakan saat checkout. Toko memakai **satu penyedia dalam satu waktu**, dipilih di **Pengaturan → Pengiriman**. Kartu **RajaOngkir** hanya muncul saat plugin Shipping aktif, dan API key disimpan di halaman ini.

| | Biteship | RajaOngkir |
| --- | --- | --- |
| Tarif langsung saat checkout | Ya | Ya |
| Harga dicek ulang saat pesanan dibuat | Ya | Ya |
| Memesan kurir dari pesanan | Ya, dibayar dari saldo Biteship Anda | **Tidak.** Anda memesan paket ke kurir sendiri lalu mengisi nomor resi di pesanan |
| Pelacakan | Otomatis lewat webhook | Saat Anda mengklik **Perbarui pelacakan**, dicari lewat nomor resi |
| Asuransi paket | Ya | Tidak |
| Kontak dan alamat penjemputan | Diperlukan | Tidak diperlukan |

**Yang perlu disiapkan**

- Akun Komerce (gratis), serta plugin **E-Commerce Suite** dan **Shipping** yang sudah terpasang.
- Kecamatan atau kode pos tempat paket Anda berangkat.
- Toko yang berjualan dalam **IDR**, dan berat produk Anda dalam gram.
- Cara memesan paket ke kurir sendiri (loket kurir, aplikasi jemput, atau akun Anda sendiri), karena RajaOngkir hanya memberi tarif dan pelacakan.
- Waktu: sekitar 10 menit.

**Tautan yang Anda perlukan**

- Daftar: [collaborator.komerce.id/registration](https://collaborator.komerce.id/registration). Masuk ke dasbor dan halaman API key: [collaborator.komerce.id/login](https://collaborator.komerce.id/login).
- Dokumentasi: [rajaongkir.com/docs](https://rajaongkir.com/docs), [cara mendaftar dan mengambil key](https://rajaongkir.com/docs/introduction/register), [API ongkos kirim](https://rajaongkir.com/docs/shipping-cost/getting_started/about), [kurir yang didukung](https://rajaongkir.com/docs/shipping-cost/getting_started/courier_availability), [hitung ongkos kirim domestik](https://rajaongkir.com/docs/shipping-cost/endpoint-rajaongkir-for-search-base/calculate-domestic-cost), [pelacakan resi](https://rajaongkir.com/docs/shipping-cost/tracking).
- Paket dan batas harian: [rajaongkir.com](https://rajaongkir.com).




### Pasang plugin

Pasang **E-Commerce Suite** dan **Shipping** dari **Plugin → Marketplace** (paket Tumbuh dan Enterprise sudah memuat keduanya). Lihat [katalog plugin](https://docs.bakasir.com/id/docs/commerce/plugins.md).




### Buat akun dan salin API key

Daftar di [collaborator.komerce.id/registration](https://collaborator.komerce.id/registration) lalu verifikasi email Anda. Akun baru langsung memakai paket **Starter** gratis yang sudah termasuk API ongkos kirim dan tidak butuh dokumen atau persetujuan mode live. Masuk di [collaborator.komerce.id/login](https://collaborator.komerce.id/login), buka bagian **API Key** (di pengaturan Developer), lalu buat atau salin key untuk **Shipping Cost API**. Jaga kerahasiaannya.




### Hubungkan di Bakasir

Buka **Pengaturan → Integrasi**, klik **Hubungkan** pada kartu **RajaOngkir**, tempel **API Key**, lalu klik **Uji Koneksi**. Key disimpan dan satu permintaan nyata dikirim ke RajaOngkir. Anda akan melihat **Berhasil. Kredensial Anda bekerja.** Lalu klik **Simpan**. Key tidak pernah ditampilkan lagi; kosongkan isiannya untuk mempertahankannya.




### Pilih penyedia dan atur penjemputan

Buka **Pengaturan → Pengiriman** dan pilih **RajaOngkir** di **Penyedia pengiriman**. Di **Alamat penjemputan** cari **Area (kecamatan)** lewat kecamatan, kelurahan, atau kode pos (ketik minimal 3 huruf) lalu pilih dari daftar. Di **Opsi pengiriman** pilih **Kurir** yang boleh dipakai pembeli, atur **Berat bawaan per barang (gram)** untuk produk yang belum punya berat, dan bila perlu **Gratis ongkir mulai dari**. Klik **Simpan**, lalu **Tes koneksi**. Anda akan melihat **RajaOngkir menerima key ini.**

Berpindah penyedia mengosongkan area penjemputan dan hanya mempertahankan kurir yang ada di kedua penyedia, karena kedua layanan menomori area dengan cara berbeda. Key Biteship Anda tetap tersimpan, jadi Anda bisa kembali.




### Beralih ke live dan buat pesanan uji

Aktifkan **Tagih ongkir saat checkout**. Syaratnya key RajaOngkir, area penjemputan, dan minimal satu kurir. Buka toko Anda, tambahkan produk yang perlu dikirim, pilih area tujuan, dan pastikan kurir serta harganya muncul. Buat pesanan uji.




### Kirim pesanan dan isi nomor resi

Buka **E-Commerce → Pesanan Online** lalu buka pesanannya. Panel pengiriman menyebut bahwa RajaOngkir tidak memesan kurir. Pesan paket ke kurir sendiri, ketik nomor resi dari tanda terima ke **Nomor resi**, lalu klik **Simpan resi**. Pesanan pindah ke **Diproses** dan menampilkan resinya. Klik **Perbarui pelacakan** kapan pun Anda ingin status terbaru: Bakasir mencari resi itu di RajaOngkir, mengisi riwayat pelacakan, dan begitu kurir melaporkan paket terkirim, pesanan yang sudah dibayar diselesaikan. Bila salah ketik, klik **Hapus resi** lalu simpan nomor yang benar.




**Yang dilihat pelanggan Anda.** Sama seperti Biteship. Saat checkout, toko meminta area tujuan dan menampilkan kurir yang Anda pilih beserta harga dan perkiraan waktunya. Harga dicek ulang ke RajaOngkir saat pesanan dibuat, jadi pembeli ditagih harga RajaOngkir saat itu, dan bila berubah pembeli diminta memilih kurir lagi. Pesanan di atas nilai **Gratis ongkir mulai dari** gratis ongkir (Anda tetap membayar kurir). Setelah Anda menyimpan resi, pembeli melihatnya di halaman pelacakan pesanan.

**Biaya.** RajaOngkir berbayar dengan langganan. Saat panduan ini ditulis, paket **Starter** gratis membolehkan 100 cek tarif per hari, **Pro** 25.000, dan **Enterprise** 50.000, tanpa biaya per permintaan; lihat [rajaongkir.com](https://rajaongkir.com) untuk paket terbaru. Setiap cek tarif keranjang memakai satu permintaan: saat pembeli memilih area, saat keranjang berubah, dan sekali lagi saat pesanan dibuat. RajaOngkir tidak menyebut apakah pencarian area dihitung, jadi anggap dihitung (Bakasir menyimpan hasil area selama 6 jam). Saat batas harian habis, checkout menampilkan **Tarif kurir sedang tidak tersedia. Coba lagi sebentar lagi.** sampai hari berikutnya atau sampai Anda menaikkan paket. Ongkos kurir dibayar ke kurir saat Anda memesan, dan dibebankan ke pembeli dalam harga ongkir.

**Yang tidak dilakukan RajaOngkir.** Di Bakasir layanan ini hanya memberi tarif dan pelacakan resi. Membuat pengiriman, penjemputan, label, dan kiriman status otomatis termasuk API Shipping Delivery RajaOngkir yang terpisah, yang hanya ditawarkan RajaOngkir di paket Enterprise, dan Bakasir tidak terhubung ke sana. Selama itu belum ada, Anda memesan setiap paket sendiri.

**Masalah umum**

| Yang Anda lihat | Penyebab dan solusi |
| --- | --- |
| **RajaOngkir 401: Invalid API key or key not found** (atau **RajaOngkir 400: Invalid Api key, key not found**) | Key salah, dicabut, atau tersalin dengan spasi. Salin ulang dari dasbor lalu simpan di **Pengaturan → Integrasi**. |
| **Tambahkan API key RajaOngkir di menu Integrasi dulu.** | Hubungkan kartu **RajaOngkir** sebelum memilih RajaOngkir di **Pengaturan → Pengiriman**. |
| **Simpan API key dulu, lalu tes koneksi.** | Klik **Simpan** setelah memilih penyedia, lalu **Tes koneksi**. |
| **Isi API key, alamat penjemputan dan minimal satu kurir sebelum mengaktifkan pengiriman.** | Key, area penjemputan, atau kurir belum ada. Lengkapi dan simpan, lalu aktifkan **Tagih ongkir saat checkout**. |
| **Periksa isian: key, area, telepon dan kurir harus valid.** | Pilih area dari daftar, jangan hanya mengetik, dan pilih kurir hanya dari daftar. |
| **Tarif kurir sedang tidak tersedia. Coba lagi sebentar lagi.** | RajaOngkir tidak menjawab atau batas harian Anda habis. Tes koneksi, dan lihat pemakaian Anda di dasbor. |
| **Tidak ada kurir yang bisa mengirim ke area ini.** | Tidak ada kurir pilihan Anda yang melayani rute itu. Pilih lebih banyak kurir di **Pengaturan → Pengiriman**. |
| **Tarif pengiriman berubah. Silakan pilih kurir lagi.** | RajaOngkir mengubah harga di antara penawaran dan pesanan. Pembeli memilih kurir lagi. |
| **Isi nomor resi dari tanda terima kurir.** | Isian resi kosong atau berisi karakter selain huruf, angka, dan `. / -`. |
| **RajaOngkir 404** saat memperbarui pelacakan | RajaOngkir belum mengenal resi itu (paket baru bisa butuh beberapa jam untuk muncul), atau kode kurir tidak didukung untuk pelacakan. Coba lagi nanti. |
| Pelacakan tidak pernah berubah | RajaOngkir tidak mengirim pembaruan. Klik **Perbarui pelacakan** pada pesanan. |

## WhatsApp

WhatsApp mengirim pesan dari nomor WhatsApp Business Anda sendiri lewat Cloud API Meta, dan Meta menagih biaya pesan ke akun Anda. Tanpa koneksi, Bakasir tetap membuka tautan chat WhatsApp untuk Anda kirim manual. Kartu **WhatsApp** membuka halamannya sendiri, **Pengaturan → Integrasi → WhatsApp Business**.

**Yang perlu disiapkan**

- Akun Facebook dan portofolio bisnis Meta (Business Manager).
- Nomor telepon WhatsApp Business yang bisa menerima kode verifikasi, dan metode pembayaran untuk penagihan Meta.
- Nama bisnis, alamat, dan situs web Anda, jika Meta meminta [verifikasi bisnis](https://developers.facebook.com/docs/development/release/business-verification) untuk menaikkan batas Anda.
- Waktu: sekitar 30 menit, lalu Meta meninjau tiap template pesan (hingga 24 jam).

**Tautan yang Anda perlukan**

- Meta for Developers (aplikasi): [developers.facebook.com/apps](https://developers.facebook.com/apps/). Anda harus sudah masuk.
- Panduan penyiapan Meta: [WhatsApp Cloud API, get started](https://developers.facebook.com/docs/whatsapp/cloud-api/get-started).
- Token permanen: [Business management API, system users](https://developers.facebook.com/docs/whatsapp/business-management-api/get-started).
- App secret: [Pengaturan dasar aplikasi](https://developers.facebook.com/docs/development/create-an-app/app-dashboard/basic-settings).
- Template pesan: [template di WhatsApp Manager](https://business.facebook.com/latest/whatsapp_manager/message_templates) dan [panduan template](https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates) Meta.
- Webhook: [field webhook Meta](https://developers.facebook.com/docs/whatsapp/cloud-api/guides/set-up-webhooks).
- Harga: [harga WhatsApp](https://developers.facebook.com/docs/whatsapp/pricing).




### Buat aplikasi Meta

Di [Meta for Developers](https://developers.facebook.com/apps/) klik **Create App**, isi nama dan email, lalu pilih use case **Connect with customers through WhatsApp**. Pilih atau buat portofolio bisnis Anda saat diminta. Setelah itu klik **Start using the API** untuk membuka **API Setup**.




### Tambahkan nomor dan salin ID

Di **API Setup**, hubungkan akun WhatsApp Business, lalu tambahkan nomor telepon asli Anda dari daftar **From** dan verifikasi. Tambahkan metode pembayaran untuk pesan yang dimulai bisnis saat Meta memintanya. Salin **Phone number ID** nomor itu. **ID akun WhatsApp Business (WABA ID)** bersifat opsional dan juga tampil di WhatsApp Manager.




### Buat token permanen

Token sementara di API Setup akan kedaluwarsa, jadi jangan dipakai. Di **Business Settings** Meta buka **System users** (di bawah **Users**) lalu klik **Add** untuk membuat system user. Klik **Assign assets** dan beri **Manage app** pada aplikasi Anda dan **Manage WhatsApp Business accounts** pada akun WhatsApp Anda. Klik **Generate token** lalu centang `business_management`, `whatsapp_business_messaging`, dan `whatsapp_business_management`. Salin token sekarang: inilah **Token akses (Access token)**, dan Meta tidak menampilkannya lagi.




### Salin app secret

Di aplikasi Meta Anda buka **App settings → Basic** lalu klik **Show** di samping **App secret**. Bakasir hanya memakainya untuk memverifikasi webhook status kirim.




### Hubungkan di Bakasir

Di **Pengaturan → Integrasi** klik **Hubungkan** pada **WhatsApp**. Di halaman **WhatsApp Business**, tempel **ID nomor telepon (Phone number ID)**, **ID akun WhatsApp Business (WABA ID)** (opsional), **Token akses (Access token)**, dan **Rahasia aplikasi (App secret)**, lalu klik **Simpan** dan **Tes koneksi**. Koneksi yang berhasil menampilkan nama nomor dan peringkat kualitasnya. Lencana status berubah dari **Tersimpan, belum diverifikasi** menjadi **Terhubung**.




### Buat template pesan

Meta harus menyetujui tiap template sebelum bisa dipakai, biasanya dalam 24 jam. Di [WhatsApp Manager](https://business.facebook.com/latest/whatsapp_manager/message_templates) buat template baru, pilih kategori **Utility**, dan buat satu template per jenis pesan dengan jumlah variabel dan urutan yang persis seperti di bawah. Kalimatnya boleh diubah. Contoh teks:

| Pesan | Nama template yang disarankan | Variabel, berurutan | Contoh teks |
| --- | --- | --- | --- |
| **Struk penjualan** | `bakasir_receipt` | 1 nama pelanggan, 2 nomor struk, 3 total, 4 nama bisnis, 5 tautan struk | `Halo {{1}}, terima kasih telah berbelanja di {{4}}. Struk {{2}} senilai {{3}} sudah siap: {{5}}` |
| **Pesanan pembelian** | `bakasir_purchase_order` | 1 nama pemasok, 2 nomor pesanan pembelian, 3 total, 4 nama bisnis. Tambahkan header Document (PDF): Bakasir melampirkan PDF-nya. | `Halo {{1}}, terlampir pesanan pembelian {{2}} dengan total {{3}} dari {{4}}.` |
| **Status pesanan online** | `bakasir_order_status` | 1 nama pembeli, 2 nomor pesanan, 3 status, 4 nama bisnis | `Halo {{1}}, pesanan {{2}} Anda di {{4}} sekarang {{3}}.` |
| **Pengingat reservasi** | `bakasir_reservation_reminder` | 1 nama tamu, 2 tanggal dan jam, 3 nama bisnis | `Halo {{1}}, kami mengingatkan reservasi Anda di {{3}} pada {{2}}.` |

Variabel tidak boleh berisi baris baru. Bakasir menggantinya dengan spasi.




### Beri tahu Bakasir template mana yang dipakai

Di bagian **Pesan yang dikirim** pada halaman Bakasir, aktifkan tiap jenis pesan yang Anda inginkan, isi **Nama template** persis seperti di Meta, dan pilih **Bahasa template** (`id`, `en`, atau `en_US`) yang Anda pakai di Meta. Klik **Simpan**. Jenis pesan yang mati, atau tanpa nama template, kembali memakai tautan chat WhatsApp.




### Kirim tes

Di **Kirim tes** isi nomor telepon Anda sendiri, pilih **Jenis pesan**, lalu klik **Kirim**. Ini mengirim satu pesan sungguhan memakai template yang tersimpan, jadi Meta dapat menagih akun Anda. Buka **Log pesan** (100 pesan terakhir) dan klik **Muat ulang** untuk melihat statusnya.




### Opsional: webhook status pengiriman

Agar **Terkirim**, **Diterima**, **Dibaca**, dan **Gagal** tampil di log, simpan dulu app secret di Bakasir. Lalu di aplikasi Meta Anda buka **WhatsApp → Configuration** (aplikasi baru: **Use cases → Customize → Configuration**). Tempel **Callback URL** dan **Token verifikasi (Verify token)** yang tampil di Bakasir, klik **Verify and save**, lalu berlangganan ke field `messages`. Sebagian webhook tidak dikirim saat aplikasi Meta masih dalam mode Development, jadi ubah aplikasi ke Live bila status tidak pernah masuk.




**Yang dilihat pelanggan dan pemasok Anda.** Pesan WhatsApp dari nomor bisnis Anda dengan teks template yang sudah disetujui. **Resi via WhatsApp** pada penjualan atau pesanan online mengirimnya langsung, tidak lagi membuka chat. Pembeli online juga mendapat pesan saat pesanannya masuk dan setiap kali statusnya berubah. Pesanan pembelian dikirim ke pemasok dengan PDF terlampir.

**Biaya.** Meta menagih per pesan yang terkirim, berdasarkan kategori template dan negara penerima. Template Utility dikenai biaya, dan tiap nomor bisnis mendapat jatah bulanan pesan layanan gratis. Tarif dan aturannya berubah, jadi baca [harga WhatsApp](https://developers.facebook.com/docs/whatsapp/pricing). Bakasir tidak menambah biaya.

**Masalah umum**

| Yang Anda lihat | Penyebab dan solusi |
| --- | --- |
| **phone_number_id and access_token are required** | Simpan Phone number ID dan Access token sebelum **Tes koneksi**. |
| **Access token WhatsApp tidak valid atau kedaluwarsa** | Anda memakai token sementara, atau system user kehilangan akses. Buat token permanen lagi lalu tempel. |
| **Template WhatsApp tidak ada, belum disetujui, atau jumlah variabelnya berbeda** | Nama atau bahasa template tidak sama dengan di Meta, Meta belum menyetujuinya, atau variabelnya berbeda dari tabel di atas. |
| **Nomor itu tidak memakai WhatsApp atau tidak dapat menerima pesan ini** | Pastikan nomor memakai kode negara. Orangnya mungkin tidak memakai WhatsApp. |
| **WhatsApp hanya mengizinkan template yang disetujui di luar jendela chat 24 jam** | Jenis pesan itu belum punya template, atau belum diaktifkan. Isi dan aktifkan di **Pesan yang dikirim**. |
| **WhatsApp membatasi pesan Anda, coba lagi nanti** | Meta membatasi laju nomor Anda. Tunggu lalu coba lagi, dan hindari mengirim banyak pesan sekaligus. |
| **Akun Meta Anda bermasalah dengan pembayaran, perbaiki di Meta Business Suite** | Tambahkan atau perbaiki metode pembayaran di Meta Business Suite. |
| **WhatsApp belum terhubung atau jenis pesan ini belum diaktifkan** | Hubungkan WhatsApp, dan nyalakan jenis pesannya. |
| **Isi nama template yang disetujui sebelum mengaktifkan ini** | Jenis pesan tidak bisa menyala tanpa nama template. |
| **WhatsApp Cloud API tidak terjangkau, coba lagi nanti** | Gangguan sementara di sisi Meta. Coba lagi nanti. |
| Status pengiriman tidak pernah berubah dari **Terkirim** | Webhook belum dipasang. Lakukan langkah webhook opsional dan berlangganan ke `messages`. |

## SMTP

SMTP menyimpan login server surat Anda sendiri, sehingga email yang dikirim bisnis Anda datang dari alamat pengirim Anda, bukan dari Bakasir.

**Yang lewat server ini.** Struk penjualan dan pesanan online, slip gaji, email laporan terjadwal, pesanan pembelian ke pemasok, serta konfirmasi dan pengingat booking ke pelanggan Anda. Email Bakasir sendiri kepada Anda (tagihan, pemberitahuan perpanjangan dan pembayaran, peringatan keamanan, verifikasi, dan reset kata sandi) selalu lewat Bakasir dan tidak pernah lewat server ini.

**Paket.** SMTP sendiri adalah fitur paket (termasuk di Tumbuh dan Enterprise kecuali paket Anda menyatakan lain). Pada paket tanpa fitur ini kartu tetap bisa diisi dan **Kirim Uji Coba** tetap jalan, tetapi email bisnis Anda tetap lewat Bakasir dan kartu menampilkan pengingat untuk upgrade.

**Kapan dipakai.** Hanya bila paket Anda menyertakannya dan kartu punya **Host**, **Port** yang valid, dan **Email Pengirim**. **Nama Pengirim** dan **Email Pengirim** yang Anda isi terlihat oleh pelanggan, dan balasan mereka masuk ke alamat itu. Tanpa Nama Pengirim, nama bisnis Anda yang dipakai.

**Jika gagal.** Saat server Anda menolak pesan (kata sandi salah, pengirim belum diverifikasi, server mati), Bakasir tidak mengirim pesan itu lewat server suratnya sendiri, supaya pelanggan Anda tidak pernah melihat pengirim yang tidak Anda pilih. Anda melihat errornya di tempat Anda mengklik, dan pemilik mendapat notifikasi **Email gagal dikirim lewat SMTP Anda**, paling sering sekali per enam jam. Perbaiki kartunya, atau kosongkan **Host** untuk kembali ke server surat Bakasir.

**Yang perlu disiapkan**

- Akun di penyedia email, atau detail SMTP server Anda sendiri.
- Alamat atau domain pengirim yang sudah Anda verifikasi di penyedia itu. Penyedia menolak surat dari pengirim yang belum diverifikasi.
- Waktu: sekitar 10 menit.

**Panduan per penyedia.** Bakasir mengisi host, port, dan enkripsi saat Anda memilih penyedia.

| Penyedia | Host dan port | Nama pengguna | Kata sandi | Tautan |
| --- | --- | --- | --- | --- |
| **Brevo** | `smtp-relay.brevo.com`, 587, STARTTLS | SMTP login yang tampil di tab SMTP | **SMTP key** (bukan API key) | [Daftar](https://app.brevo.com/account/register), [SMTP & API](https://app.brevo.com/settings/keys/smtp), [panduan SMTP Brevo](https://developers.brevo.com/docs/smtp-integration), [harga](https://www.brevo.com/pricing/) |
| **SendGrid** | `smtp.sendgrid.net`, 587, STARTTLS | `apikey` | API key SendGrid dengan izin **Mail Send** | [Daftar](https://signup.sendgrid.com/), [API keys](https://app.sendgrid.com/settings/api_keys), [panduan SMTP](https://www.twilio.com/docs/sendgrid/for-developers/sending-email/getting-started-smtp), [verifikasi pengirim](https://www.twilio.com/docs/sendgrid/ui/sending-email/sender-verification), [harga](https://www.twilio.com/en-us/sendgrid) |
| **Gmail** | `smtp.gmail.com`, 587, STARTTLS | Alamat Gmail lengkap Anda | **Sandi aplikasi (app password)** Google | [Aktifkan Verifikasi 2 Langkah](https://support.google.com/accounts/answer/185839), [buat sandi aplikasi](https://support.google.com/accounts/answer/185833), [halaman sandi aplikasi](https://myaccount.google.com/apppasswords), [batas pengiriman Gmail SMTP](https://knowledge.workspace.google.com/admin/gmail/send-email-from-a-printer-scanner-or-app) |
| **Mailtrap** | `live.smtp.mailtrap.io`, 587, STARTTLS | `api` | API token dari domain pengirim Anda | [Daftar](https://mailtrap.io/register/signup), [integrasi SMTP](https://docs.mailtrap.io/email-api-smtp/setup/smtp-integration), [verifikasi domain pengirim](https://docs.mailtrap.io/email-api-smtp/setup/sending-domain), [harga](https://mailtrap.io/pricing) |
| **Postmark** | `smtp.postmarkapp.com`, 587, STARTTLS | **Server API Token** | **Server API Token** yang sama | [Daftar](https://account.postmarkapp.com/sign_up), [panduan SMTP](https://postmarkapp.com/developer/user-guide/send-email-with-smtp), [sender signature](https://postmarkapp.com/developer/user-guide/managing-your-account/managing-sender-signatures), [harga](https://postmarkapp.com/pricing) |
| **Server kustom** | Host Anda, dan port 25, 465, 587, atau 2525 | Dari penyedia Anda | Dari penyedia Anda | Tanyakan ke penyedia hosting Anda |




### Buat kredensial SMTP

Ikuti baris penyedia Anda di tabel. Ringkasnya: Brevo, buka **SMTP & API → SMTP** lalu buat SMTP key. SendGrid, buka **Settings → API Keys** lalu buat key dengan izin Mail Send. Gmail, aktifkan Verifikasi 2 Langkah lalu buat sandi aplikasi (Google dapat menyembunyikan opsi ini di akun kantor atau sekolah). Mailtrap, buka **Sending Setup** (API/SMTP), pilih domain terverifikasi dan stream **Transactional**, geser ke **SMTP**, lalu salin API token-nya. Postmark, salin Server API Token dari **Settings** message stream server, dan pastikan akses SMTP aktif di server itu.




### Verifikasi pengirim

Tambahkan dan verifikasi alamat atau domain yang akan Anda pakai untuk mengirim: SendGrid **Settings → Sender Authentication**, Mailtrap **Domains → Add Domain** (tambahkan rekaman DNS yang ditampilkan), Postmark sender signature atau domain, Brevo sender di akun Anda. Tanpa ini, uji coba gagal di penyedia.




### Pilih penyedia di Bakasir

Di **Pengaturan → Integrasi** klik **Hubungkan** pada **SMTP / Email**, lalu pilih penyedia Anda di **Penyedia SMTP** (Brevo, SendGrid, Gmail, Mailtrap, Postmark, atau **Server kustom**). **Host SMTP**, **Port**, dan **Enkripsi** terisi otomatis. Sesuaikan port: **STARTTLS (587)** atau **SSL/TLS (465)**.




### Isi login dan pengirim

Isi **Nama Pengguna** dan **Kata Sandi**, lalu **Nama Pengirim** dan **Email Pengirim**. Pengirim harus alamat atau domain yang sudah Anda verifikasi di penyedia.




### Kirim uji coba

Klik **Kirim Uji Coba**. Bakasir menyimpan isian lalu mengirim satu email sungguhan ke email akun Anda. Cek kotak masuk (dan spam), lalu klik **Simpan**. Kartu menampilkan **Terhubung**.




**Biaya.** Beberapa penyedia punya paket gratis, misalnya Mailtrap (4.000 email per bulan, 150 per hari) dan Postmark (100 per bulan) saat halaman ini ditulis. Lihat halaman harga tiap penyedia di tabel.

**Masalah umum**

| Yang Anda lihat | Penyebab dan solusi |
| --- | --- |
| **port 123 is not an SMTP port: use 25, 465, 587 or 2525** | Pakai salah satu port ini. Pakai 587 dengan STARTTLS, atau 465 dengan SSL/TLS. |
| **cannot resolve smtp host** atau **resolves to a non-public address** | Nama host salah, atau mengarah ke alamat privat, yang tidak diizinkan di Bakasir cloud. |
| **your account has no email address to send the test to** | Isi email di profil Anda dulu. |
| **host is required** atau **from_email is required** | Isi Host SMTP dan Email Pengirim. |
| Struk atau laporan masih datang dari Bakasir | Paket Anda tidak menyertakan SMTP sendiri, atau kartu belum punya Host, Port, atau Email Pengirim. Kartu menampilkan pengingat paket bila itu penyebabnya. |
| Uji coba gagal di penyedia (pesan dari server penyedia) | Nama pengguna, kata sandi, atau pengirim tidak diterima. Verifikasi pengirim di dasbor penyedia, dan pastikan Anda memakai SMTP key (Brevo) atau sandi aplikasi (Gmail), bukan kata sandi biasa. |
| Gmail menolak login | Verifikasi 2 Langkah harus aktif dan Anda harus memakai sandi aplikasi. |

## Twilio

Twilio menyimpan dan memeriksa API key Twilio Anda. Bakasir belum mengirim SMS, jadi belum ada fitur yang memakainya. Anda boleh menghubungkannya sekarang supaya sudah siap.

**Yang perlu disiapkan**

- Akun Twilio. Waktu: sekitar 10 menit.

**Tautan yang Anda perlukan**

- Daftar: [twilio.com/try-twilio](https://www.twilio.com/try-twilio). Console: [console.twilio.com](https://console.twilio.com/).
- Panduan Twilio: [ringkasan API key](https://www.twilio.com/docs/iam/api-keys) dan [membuat API key di Console](https://www.twilio.com/docs/iam/api-keys/keys-in-console).
- Harga: [harga SMS untuk Indonesia](https://www.twilio.com/en-us/sms/pricing/id).




### Buat API key

Di [Twilio Console](https://console.twilio.com/) buka **Settings → Account settings → API keys & auth tokens** (Console lama: **Account → API keys & tokens**) lalu klik **Create API key**. Beri nama dan pilih tipe **Standard**.




### Salin nilainya

Salin **SID** (diawali `SK`, bukan Account SID) ke **API Key**, dan **Secret** ke **API Secret**. Twilio hanya menampilkan secret satu kali: salin sebelum menutup jendelanya.




### Uji dan simpan

Klik **Uji Koneksi**, lalu **Simpan**.




**Masalah umum**

| Yang Anda lihat | Penyebab dan solusi |
| --- | --- |
| **api_key is required** atau **api_secret is required** | Isi kedua isian sebelum **Uji Koneksi**. |
| Pesan berawalan **401** | SID atau secret salah. Pakai SID key yang berawalan `SK` (bukan Account SID), dan salin ulang secret-nya. Jika hilang, buat key baru. |

## Tips

- **Uji di Sandbox dulu.** Buat pesanan uji dari toko Anda dan bayar dengan simulator penyedia sebelum memakai kunci Produksi.
- **Satu gateway dalam satu waktu.** Pelanggan membayar lewat gateway aktif saja.
- **Produksi punya penyiapan sendiri.** Kunci, URL notifikasi, dan webhook terpisah antara Sandbox dan Produksi. Ulangi setiap langkah di Produksi.
- **Jaga kerahasiaan kunci.** Jangan bagikan server key atau token kepada siapa pun, termasuk dukungan Bakasir.
- **Mengganti kunci.** Jika kunci bocor, buat yang baru di penyedia, tempel di Bakasir, lalu hapus yang lama di penyedia.

## Langkah berikutnya

- [Plugin dan Marketplace](https://docs.bakasir.com/id/docs/commerce/extensions.md)
- [Katalog plugin](https://docs.bakasir.com/id/docs/commerce/plugins.md)
- [Siapkan toko online Anda](https://docs.bakasir.com/id/docs/commerce/store-setup.md)
- [Tangani pesanan online](https://docs.bakasir.com/id/docs/commerce/orders.md)
- [Ringkasan Pengaturan](https://docs.bakasir.com/id/docs/portal/settings.md)
