DuitDigitalDocsBuka Console →
REST API · v1.0

Build financial workflows
without guesswork.

Dokumentasi resmi DuitDigital Central API untuk payment gateway, checkout, payment link, PPOB, SMM, OTP, settlement, dan operasional merchant.

create-payment.sh
curl https://api.duitdigital.id/v1/merchant/payments \
  -u "$DD_PUBLIC_KEY:$DD_SECRET_KEY" \
  -H "Idempotency-Key: order-2026-001" \
  -H "Content-Type: application/json" \
  -d '{
    "reference": "INV-2026-001",
    "amount": "100000",
    "currency": "IDR",
    "channel": "QRIS",
    "customer": {
      "name": "Customer",
      "email": "customer@example.com"
    }
  }'
QUICKSTART

Integrasi dalam tiga langkah

1

Buat workspace

Daftarkan akun dan buat merchant workspace melalui aplikasi. Test API key dapat dibuat langsung dari Developer Center.

2

Gunakan idempotency

Setiap operasi finansial mutasi wajib memakai Idempotency-Key unik agar retry jaringan tidak menghasilkan transaksi ganda.

3

Verifikasi webhook

Validasi signature HMAC, timestamp, event ID, dan ownership resource sebelum memperbarui status pada sistem Anda.

AUTHENTICATION

Dua model autentikasi

Portal web memakai Bearer access token berumur pendek dengan refresh rotation. Integrasi server-to-server memakai HTTP Basic berisi scoped merchant public key dan secret.

  • Jangan simpan secret key di browser atau aplikasi mobile.
  • Gunakan test key selama development.
  • Batasi scope dan IP whitelist untuk live key.
Merchant APIAuthorization: Basic base64(public:secret)Portal & AdminAuthorization: Bearer dd_at_...
ERROR MODEL

Respons konsisten dan dapat ditindaklanjuti

{
  "success": false,
  "error": {
    "code": "PAYMENT_CHANNEL_UNAVAILABLE",
    "message": "Payment channel is unavailable",
    "fields": {}
  },
  "meta": { "request_id": "req_..." }
}

HTTP status

401 Kredensial invalid/expired

403 Scope atau permission ditolak

409 Konflik state/idempotency/provider

422 Validasi input gagal

429 Rate limit terlampaui

API REFERENCE

120 endpoint production

Daftar ini dihasilkan langsung dari spesifikasi OpenAPI yang sama dengan runtime route.

Membaca OpenAPI…