Dokumentasi API

Satu API untuk menerima QRIS, GoPay, dan ShopeePay. Base URL: https://instanpedia.solusipremium.my.id/v1

Autentikasi

Semua permintaan ke /v1 wajib menyertakan header Authorization: Bearer <SECRET_KEY>. Secret key hanya ditampilkan sekali saat dibuat di Dashboard → API Keys.

Setiap respons memuat request_id. Sertakan nilai ini saat menghubungi dukungan agar penelusuran cepat.

Membuat pembayaran

POST /v1/payments membuat satu transaksi. Sertakan Idempotency-Key pada header agar permintaan ulang aman (tidak membuat transaksi ganda).

Bila belum ada provider yang dikonfigurasi, API tidak membuat transaksi palsu — respons berisi kode PROVIDER_NOT_CONFIGURED.

curl -X POST https://<host>/v1/payments \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-2026-0001" \
  -d '{
    "amount": 100000,
    "currency": "IDR",
    "payment_method": "QRIS",
    "reference": "ORDER-0001",
    "description": "Pesanan #0001",
    "customer": { "name": "Budi", "email": "budi@example.com" }
  }'

Status & konfirmasi

GET /v1/payments/:id memuat status terkini. Nilai confirmation_source menunjukkan cara konfirmasi: POLLING (polling mutasi provider) atau WEBHOOK (provider bertanda tangan).

Endpoint GET /v1/payments/:id/events menyediakan aliran Server-Sent Events untuk pembaruan status real-time.

Webhook merchant

InstanPedia mengirim event ke endpoint Anda dengan header X-Instanpedia-Signature = HMAC-SHA256(timestamp + '.' + body, signing_secret).

Selalu verifikasi tanda tangan dan tolak bila selisih waktu terlalu besar. Pengiriman ulang berjenjang hingga dead-letter, yang dapat diputar ulang dari dashboard.

// Node.js — verifikasi tanda tangan
const crypto = require("crypto");
function verify(rawBody, signature, secret, timestamp) {
  const expected = crypto
    .createHmac("sha256", secret)
    .update(timestamp + "." + rawBody)
    .digest("hex");
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
}

Kode error

INVALID_REQUEST · UNAUTHORIZED · RATE_LIMITED · IDEMPOTENCY_CONFLICT · PROVIDER_NOT_CONFIGURED · PROVIDER_TIMEOUT · REFUND_NOT_ALLOWED · REFUND_AMOUNT_EXCEEDED · RISK_BLOCKED · MERCHANT_SUSPENDED

Catatan kepatuhan. InstanPedia tidak menyediakan simulasi pembayaran pada jalur Production. Integrasi provider harus mengikuti perjanjian dan ketentuan yang berlaku antara merchant, penyedia jasa pembayaran, dan pihak berwenang.