BorderPayDaftar gratis

Dokumentasi

Terima pembayaran QRIS, Virtual Account, dan e-wallet — dalam 4 langkah.

Persiapan

Siapkan akun & kredensial sebelum integrasi.

  1. 1

    Daftar & verifikasi (KYC)

    Buat akun BorderPay, lalu selesaikan verifikasi identitas agar bisa menerima pembayaran. Daftar gratis →
  2. 2

    Buat project

    Di dashboard, buat project (mis. website atau aplikasimu). Setiap project punya slug unik, API key, dan webhook sendiri.
  3. 3

    Ambil slug & API key

    Buka detail project untuk menyalin slug dan membuat API key (mode test untuk uji, live untuk produksi).
  4. 4

    Mulai terima pembayaran

    Pilih salah satu cara integrasi di bawah — dari yang tanpa kode hingga REST API.

Cara integrasi

Tiga cara, dari termudah ke paling fleksibel.

Pay-link

Termudah

Cukup share URL — pembayaran dibuat otomatis, customer pilih metode. Tanpa kode.

REST API

Kontrol penuh secara programatik. Dapatkan qr_string / va_number mentah untuk render sendiri.

Dashboard

Buat payment link manual dari dashboard, tanpa integrasi teknis sama sekali.

Pay-link: 1 URL REST API: 1 request Dashboard: klik

Autentikasi (REST API)

Sertakan API key project pada header Authorization. Key test untuk sandbox, live untuk produksi. Rahasiakan — jangan di kode klien.

URLhttps://borderpay.id/api/v1
header
Authorization: Bearer bp_live_xxxxxxxxxxxx

Buat pembayaran

POST/api/v1/payments

QRIS mengembalikan qr_string mentah; VA mengembalikan va_number. Atau pakai pay_url (checkout siap-pakai).

amountintegerwajib

Nominal (rupiah).

methodqris | va | ewalletwajib

Metode pembayaran.

fee_borne_bymerchant | customeropsional

Siapa menanggung fee. Default merchant.

reference_idstringopsional

ID transaksi Anda.

request
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"
  }'
201 Created
{
  "reference_id": "ORD-123",
  "status": "pending",
  "pay_url": "https://borderpay.id/pay/ORD-123",
  "qr_string": "00020101021226...",
  "va_number": null
}

Cek status

GET/api/v1/payments/{reference_id}

Ambil status terkini sebuah transaksi.

request
curl https://borderpay.id/api/v1/payments/ORD-123 \
  -H "Authorization: Bearer bp_live_xxx"
200 OK
{
  "reference_id": "ORD-123",
  "amount": 150000,
  "method": "qris",
  "status": "paid",
  "paid_at": "2026-07-02T10:00:00Z"
}

Batalkan

POST/api/v1/payments/{reference_id}/cancel

Batalkan transaksi yang masih pending.

request
curl -X POST \
  https://borderpay.id/api/v1/payments/ORD-123/cancel \
  -H "Authorization: Bearer bp_live_xxx"
200 OK
{ "reference_id": "ORD-123", "status": "expired" }

Simulasi bayar (sandbox)

POST/api/v1/payments/{reference_id}/simulate

Tandai transaksi test sebagai lunas untuk uji integrasi — memicu webhook seperti pembayaran nyata. Hanya key bp_test_.

request
curl -X POST \
  https://borderpay.id/api/v1/payments/ORD-123/simulate \
  -H "Authorization: Bearer bp_test_xxx"
200 OK
{ "reference_id": "ORD-123", "status": "paid" }

Daftar transaksi

GET/api/v1/payments

50 transaksi terakhir pada project.

request
curl https://borderpay.id/api/v1/payments \
  -H "Authorization: Bearer bp_live_xxx"
200 OK
{
  "data": [
    { "reference_id": "ORD-123", "amount": 150000,
      "method": "qris", "status": "paid" }
  ]
}

Saldo

GET/api/v1/balance

Saldo merchant dalam rupiah.

request
curl https://borderpay.id/api/v1/balance \
  -H "Authorization: Bearer bp_live_xxx"
200 OK
{
  "available": 950000,
  "pending": 150000,
  "currency": "IDR"
}

Webhook

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.

verifikasi (Node.js)
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();
payload
{ "event": "payment.paid",
  "data": { "reference_id": "ORD-123",
            "status": "paid", "amount": 150000 } }

Siap mulai?

Daftar, buat project, dan ambil API key-mu.