Terima pembayaran QRIS, Virtual Account, dan e-wallet — dalam 4 langkah.
Siapkan akun & kredensial sebelum integrasi.
slug dan membuat API key (mode test untuk uji, live untuk produksi).Tiga cara, dari termudah ke paling fleksibel.
Cukup share URL — pembayaran dibuat otomatis, customer pilih metode. Tanpa kode.
Kontrol penuh secara programatik. Dapatkan qr_string / va_number mentah untuk render sendiri.
Arahkan customer ke URL ini. Pembayaran dibuat otomatis dan customer memilih metode di halaman checkout BorderPay.
/paylink/{slug}/{amount}slugstringwajibSlug project (dari langkah persiapan).
amountintegerwajibNominal dalam rupiah.
order_idstringopsionalID pesanan Anda; idempoten.
https://borderpay.id/paylink/toko-budi/150000?order_id=INV-9Sertakan API key project pada header Authorization. Key test untuk sandbox, live untuk produksi. Rahasiakan — jangan di kode klien.
https://borderpay.id/api/v1Authorization: Bearer bp_live_xxxxxxxxxxxx/api/v1/paymentsQRIS mengembalikan qr_string mentah; VA mengembalikan va_number. Atau pakai pay_url (checkout siap-pakai).
amountintegerwajibNominal (rupiah).
methodqris | va | ewalletwajibMetode pembayaran.
fee_borne_bymerchant | customeropsionalSiapa menanggung fee. Default merchant.
reference_idstringopsionalID transaksi Anda.
curl -X POST https://borderpay.id/api/v1/payments \
-H "Authorization: Bearer bp_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"amount": 150000,
"method": "qris",
"reference_id": "ORD-123"
}'{
"reference_id": "ORD-123",
"status": "pending",
"pay_url": "https://borderpay.id/pay/ORD-123",
"qr_string": "00020101021226...",
"va_number": null
}/api/v1/payments/{reference_id}Ambil status terkini sebuah transaksi.
curl https://borderpay.id/api/v1/payments/ORD-123 \
-H "Authorization: Bearer bp_live_xxx"{
"reference_id": "ORD-123",
"amount": 150000,
"method": "qris",
"status": "paid",
"paid_at": "2026-07-02T10:00:00Z"
}/api/v1/payments/{reference_id}/cancelBatalkan transaksi yang masih pending.
curl -X POST \
https://borderpay.id/api/v1/payments/ORD-123/cancel \
-H "Authorization: Bearer bp_live_xxx"{ "reference_id": "ORD-123", "status": "expired" }/api/v1/payments/{reference_id}/simulateTandai transaksi test sebagai lunas untuk uji integrasi — memicu webhook seperti pembayaran nyata. Hanya key bp_test_.
curl -X POST \
https://borderpay.id/api/v1/payments/ORD-123/simulate \
-H "Authorization: Bearer bp_test_xxx"{ "reference_id": "ORD-123", "status": "paid" }/api/v1/payments50 transaksi terakhir pada project.
curl https://borderpay.id/api/v1/payments \
-H "Authorization: Bearer bp_live_xxx"{
"data": [
{ "reference_id": "ORD-123", "amount": 150000,
"method": "qris", "status": "paid" }
]
}/api/v1/balanceSaldo merchant dalam rupiah.
curl https://borderpay.id/api/v1/balance \
-H "Authorization: Bearer bp_live_xxx"{
"available": 950000,
"pending": 150000,
"currency": "IDR"
}BorderPay mengirim POST ke URL webhook project saat status berubah. Verifikasi header x-borderpay-signature = HMAC-SHA256 atas raw body dengan signing secret project. Balas 2xx setelah tersimpan.
import { createHmac, timingSafeEqual } from "crypto";
const expected = createHmac("sha256", SECRET)
.update(rawBody).digest("hex");
const got = req.headers["x-borderpay-signature"];
if (expected !== got) return res.status(401).end();{ "event": "payment.paid",
"data": { "reference_id": "ORD-123",
"status": "paid", "amount": 150000 } }