---
title: Transfer bank (Vietnam)
description: Terima transfer bank Vietnam (VND) dengan Sepay — akun penerima, prefiks memo, webhook, batas, dan cara menetapkan transfer yang tidak cocok.
url: https://nexcmp.com/id/docs/billing/bank-transfer-vn/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Transfer bank (Vietnam) {#bank-transfer-vietnam}

> **Di mana letaknya di admin:** Finance › Payment channels › VN bank transfer (`/payments/bank`). Nilai tukar: Finance › Payment channels › Exchange rates (`/payments/fx`).

## Fungsi {#what-it-does}

Memungkinkan pelanggan mengisi ulang dompet USD melalui transfer bank normal dalam dong Vietnam. NexCMP menampilkan kode VietQR, detail akun, dan **transfer memo** yang unik; [Sepay](https://sepay.vn) memantau rekening bank Anda dan memanggil webhook saat uang tiba, lalu NexCMP mengkredit dompet tersebut. Gunakan ini jika Anda menjual kepada pelanggan di Vietnam.

::: info Hanya ditampilkan dalam antarmuka bahasa Vietnam
Opsi bank VN ditawarkan kepada pelanggan hanya ketika portal ditampilkan dalam bahasa **Vietnamese**. Pelanggan dengan bahasa lain tidak akan pernah melihatnya.
:::

## Persyaratan {#requirements}

| Item | Persyaratan |
|---|---|
| Akun bank | Sebuah rekening bank Vietnam (atau akun virtual Sepay, **VA**) yang terhubung ke akun Sepay di [my.sepay.vn](https://my.sepay.vn). |
| Sepay | Akun Sepay dengan integrasi webhook yang diaktifkan. |
| Nilai tukar | Kurs USD ke VND harus ada: perbarui terlebih dahulu di bawah **Exchange rates**. Tanpa kurs, kanal akan menjawab `fx_unavailable` dan pelanggan tidak dapat memulai transfer. |
| Jaringan | Panel Anda harus dapat diakses melalui HTTPS agar Sepay dapat memanggil `https://<your-domain>/v1/billing/sepay/webhook`. |
| Dependensi | [Mata uang dan nilai tukar](https://nexcmp.com/id/docs/catalog/currency-and-exchange-rates/). |

## Siapkan infrastruktur {#prepare-the-infrastructure}

Di sisi Sepay:

1. Di [my.sepay.vn](https://my.sepay.vn), hubungkan rekening bank Anda (atau buat VA) dan pastikan transaksi muncul.
2. Tentukan **prefix memo** — 2 hingga 5 huruf kapital, misalnya `PAY`. NexCMP menghasilkan memo sebagai prefix yang diikuti oleh 8 digit acak (misalnya `PAY48210937`). Prefix tidak boleh mengandung `ORD`, dan sebaiknya tidak digunakan oleh sistem lain yang menerima uang ke rekening yang sama.
3. Jika akun Sepay Anda menggunakan *struktur kode pembayaran*, daftarkan prefix yang sama di sana agar Sepay mengenali memo tersebut.
4. Buat webhook nanti, setelah halaman NexCMP memberi Anda URL dan kunci (langkah 7 di bawah).

## Hubungkan di NexCMP {#connect-in-nexcmp}

1. Buka **Finance › Payment channels › Exchange rates** dan klik **Update exchange rates** jika belum ada kurs yang tersimpan.
2. Buka **Finance › Payment channels › VN bank transfer** (`/payments/bank`).
3. Di **Receiving account** isi:

   | Kolom | Contoh | Aturan |
   |---|---|---|
   | Bank | `VCB` Vietcombank | Pilih dari daftar; BIN akan terisi secara otomatis. |
   | Nomor rekening | `0123456789` | 4–24 digit atau huruf kapital. |
   | Akun virtual (VA — opsional) | | Jika disetel, pelanggan mentransfer ke VA dan QR akan menampilkannya. |
   | Nama pemilik rekening | `NGUYEN VAN A` | Tanpa aksen, HURUF BESAR, 2–60 karakter. |
   | Prefix memo transfer | `PAY` | 2–5 huruf kapital, tanpa `ORD`. |

4. Di **Webhook authentication** pilih **Auth method**: **HMAC-SHA256** (disarankan) atau **API key**, dan masukkan **Webhook key / HMAC secret** (8–200 karakter). Secara opsional, masukkan **userapi token** dari Sepay; ini hanya digunakan untuk mencocokkan kembali transfer yang webhook-nya hilang.
5. Di **Channel & limits** atur batas (bawaan dalam tanda kurung): **Min / order** (10,000 VND), **Max / order** (200,000,000 VND), **Order expiry** (120 menit, 15–1440), **Max pending orders / account** (3, 1–10), **Reconcile every** (10 menit) dan, secara opsional, **Allowed webhook IPs** (dipisahkan koma; kosong berarti IP hanya dicatat).
6. Klik **Save**. Spanduk merah "Sepay not configured" akan hilang setelah akun, nama, prefix, dan kunci valid.
7. Salin **Webhook URL to paste into my.sepay.vn** (tertulis `https://<your-domain>/v1/billing/sepay/webhook`) dengan **Copy**. Di Sepay, buka integrasi webhook, tempel URL tersebut, pilih jenis autentikasi dan key yang sama, lalu aktifkan event "money in".
8. Klik **Test connection**. Kemudian aktifkan **Enable Sepay for clients (main site)** dan **Save**.

![Halaman transfer bank VN dengan rekening penerima, prefix memo, dan autentikasi webhook yang terisi nilai contoh](https://nexcmp.com/id/docs/images/billing/bank-transfer-vn-01-config.webp)

![Kartu kanal dan batasan dengan tombol Sepay dinyalakan dan batasan default](https://nexcmp.com/id/docs/images/billing/bank-transfer-vn-02-limits.webp)

### Keamanan webhook {#webhook-security}

| Metode | Apa yang harus dikirim oleh Sepay |
|---|---|
| HMAC-SHA256 | Header `X-SePay-Signature: sha256=<hex>`, dihitung dari `"<X-SePay-Timestamp>.<raw body>"`; stempel waktu mungkin berbeda paling lama 300 detik. |
| Kunci API | Header `Authorization: Apikey <key>`. |

Hanya header yang diperiksa (tidak pernah isi atau string kueri) dan perbandingan dilakukan dalam waktu-konstan. Hanya transfer masuk (`transferType = in`) ke akun atau VA yang Anda konfigurasikan yang digunakan. Setiap transaksi Sepay disimpan sekali, sehingga webhook yang dicoba ulang tidak pernah mengkreditkan dua kali. NexCMP merespons `200 {"success":true}` bahkan ketika dengan sengaja mengabaikan suatu transaksi, dan HTTP 5xx hanya untuk kesalahan sementara agar Sepay mencoba ulang.

## Cara pelanggan membayar {#how-the-customer-pays}

1. Di **Billing › Deposit** (antarmuka berbahasa Vietnam), pelanggan memilih opsi transfer bank VN dan memasukkan jumlah, lalu mengklik tombol buat-transfer.
2. NexCMP mengonversi jumlah USD pada kurs yang disimpan (termasuk margin dan langkah pembulatan yang Anda atur di **Exchange rates**) dan **membulatkan jumlah VND ke atas** ke langkah pembulatan tersebut.
3. Pelanggan melihat kode QR (VietQR, dibuat secara lokal) yang berisi nomor rekening, bank, jumlah, dan berita transfer.
4. Setelah transfer, Sepay memanggil webhook, NexCMP mengkreditkan `floor(VND received × 100 / rate)` sen. Nilai tukar dikunci saat pesanan dibuat; jika dana tiba setelah pesanan kedaluwarsa, nilai tukar yang lebih tinggi antara nilai yang dikunci dan nilai saat ini akan digunakan.
5. Pesanan kedaluwarsa setelah **Order expiry**; rekonsiliasi berjalan setiap **Reconcile every** menit sebagai jaring pengaman (memerlukan token userapi).

## Verifikasi {#verify}

1. Buat pesanan uji sebagai pelanggan pada antarmuka bahasa Vietnam. Periksa apakah jumlah, rekening, dan berita transfer sudah benar.
2. Transfer jumlah minimum yang diizinkan dengan berita transfer yang tepat.
3. Dalam waktu satu menit, portal menampilkan setoran sebagai selesai dan saldo dompet bertambah; kartu **State** pada halaman bank menunjukkan waktu webhook terakhir.
4. Buka **Finance › Billing › Top-ups** dan periksa apakah pembayaran terdaftar dengan jumlah VND yang diterima.

## Batas & catatan {#limits-notes}

- **Minimum.** Minimum VND yang dilihat pelanggan adalah nilai yang lebih besar antara **Min / order** dan nilai VND dari [minimum top-up](https://nexcmp.com/id/docs/billing/minimum-top-up/).
- **Pesanan tertunda.** Pelanggan hanya dapat memiliki pesanan terbuka sejumlah **Max pending orders / account** (default 3).
- **Berita transfer sama dua kali.** Melakukan transfer dua kali dengan berita transfer yang sama akan membuat pembayaran kedua yang selesai pada nilai tukar saat ini.
- **Tidak ada pengembalian dana otomatis** ke rekening bank.
- **Biaya.** Kanal ini tidak memiliki baris biaya tetap di **Fees & limits**; margin nilai tukar adalah satu-satunya penyesuaian.
- **Resellers** dapat mengonfigurasi akun mereka sendiri; URL webhook mereka diakhiri dengan `/v1/billing/sepay/webhook/r/<id>`.

### Transfer yang tidak cocok {#unmatched-transfers}

Dana yang masuk ke rekening namun tidak membawa berita transfer yang valid akan muncul di **Unmatched transactions** di bagian bawah halaman (filter *All channel owners* atau *Master*). Periksa referensi bank dengan pelanggan, lalu klik **Assign** dan pilih akun. Dompet dikreditkan pada nilai tukar saat ini.

## Pemecahan Masalah {#troubleshooting}

| Gejala | Penyebab | Solusi |
|---|---|---|
| Banner "Sepay belum dikonfigurasi" | Bank, akun, nama pemilik, prefiks, atau kunci hilang atau tidak valid | Lengkapi kartu **Receiving account** dan **Webhook authentication**. |
| Banner "Kurs USD/VND diblokir" (`fx_unavailable`) | Tidak ada nilai tukar yang disimpan | Buka **Exchange rates › Update exchange rates**. |
| `prefix: 2–5 capital letters, no ORD` | Prefiks tidak valid | Gunakan 2–5 huruf kapital tanpa `ORD`. |
| Kesalahan `account_name` | Aksen atau huruf kecil | Gunakan huruf HURUF BESAR tanpa aksen, angka, spasi, titik, atau tanda hubung. |
| `webhook_secret: 8–200 characters` | Kunci terlalu pendek | Gunakan setidaknya 8 karakter cetak. |
| Pelanggan tidak dapat melihat opsi | Tidak ada dalam antarmuka bahasa Vietnam, dinonaktifkan, atau tidak ada tarif | Periksa bahasa, sakelar, dan tarif. |
| Pelanggan sudah membayar tetapi saldo tidak masuk | Webhook tidak sampai, memo berubah, jumlah salah | Periksa log webhook Sepay; transfer akan masuk ke **Unmatched transactions** jika memo salah. |
| Webhook mengembalikan respons 401 atau 403 | Ketidakcocokan metode otentikasi atau kunci | Gunakan metode dan kunci yang sama di Sepay dan NexCMP. |
| Pelanggan melihat "Too many pending requests" | Batas pesanan tertunda tercapai | Selesaikan pesanan tersebut atau tunggu hingga kedaluwarsa. |


