Dokumentasi API · Member & Publik

Integrasi Rajacek dalam hitungan menit.

Rajacek mengecek rekening bank, akun e-wallet, nomor WhatsApp, dan ID pelanggan PLN Indonesia lewat satu API. Semua contoh di halaman ini memakai domain asli https://www.rajacek.com dan bisa langsung disalin-tempel. Ganti saja kunci contoh rc_CONTOH dengan kunci Anda sendiri. Kunci baru diawali rc_. Kunci lama rv_live_ tetap berlaku. Perlakukan kunci Anda seperti kata sandi. Jangan dibagikan ke siapa pun.

Mulai cepat

  1. Daftar dengan akun Google di portal member. API key (rc_...) langsung terbit. Simpan baik-baik: kunci hanya ditampilkan satu kali. Pendaftar baru mendapat trial gratis 1000× cek selama 7 hari.
  2. Mau coba tanpa coding? Buka menu Coba Cek Live di portal. Ceknya sungguhan dan memakai kuota Anda.
  3. Untuk cek rekening, ambil dulu kode bank 3 digit dari GET /v1/banks.
  4. Kirim request ke endpoint validasi /api/v3/validate. Paling mudah: GET dengan kunci di query, atau POST dengan kunci di header. Contohnya di bawah ini.
Trial habis? Setelah kuota trial habis atau 7 hari berakhir, API menolak cek baru dengan kode 402. Lanjutkan ke paket berbayar lewat portal member. Beli paket dengan QRIS dan kuota langsung aktif.
curl "https://www.rajacek.com/api/v3/validate?code=014&accountNumber=1234567890&api_key=rc_CONTOH"

Atau POST dengan kunci di header (mendukung Idempotency-Key — lihat Idempotensi):

curl -X POST https://www.rajacek.com/api/v3/validate \
  -H "Content-Type: application/json" \
  -H "X-API-Key: rc_CONTOH" \
  -H "Idempotency-Key: order-20261021-0001" \
  -d '{"code": "014", "accountNumber": "1234567890"}'

Respons sukses (HTTP 200):

{
  "request_id": "Kx7fA92pQm",
  "status": "valid",
  "valid": true,
  "product": "bank_account",
  "message": "Respons diterima dari provider validasi.",
  "result": {
    "account_number": "1234667890",
    "service_code": "014",
    "bank_name": "BCA",
    "account_name": "NAMA PELANGGAN",
    "registered": true,
    "reference": "ref-001"
  },
  "meta": {
    "provider": "Rajacek",
    "provider_latency_ms": 812,
    "attempts": 1,
    "rajacek_processing_ms": 6,
    "total_latency_ms": 818,
    "cached": false,
    "remaining_quota": 4999,
    "expires_at": "2027-01-21T10:00:00Z"
  }
}

Autentikasi

Setiap request harus membawa API key Anda. Ada tiga cara mengirimnya:

X-API-Key: rc_KUNCI_ANDA
# atau
Authorization: Bearer rc_KUNCI_ANDA

Cara ketiga, khusus /api/v3/validate: kirim api_key lewat query (GET) atau field api_key di body JSON (POST). Jika lebih dari satu sumber dikirim dengan nilai berbeda, request ditolak 401. Jangan bagikan URL yang masih mengandung api_key. Kunci di query bisa tercatat di log server dan riwayat browser.

Idempotensi

Idempotency-Key adalah kode unik untuk satu operasi, misalnya nomor order. Anda yang menentukannya. Fungsinya: jika request yang sama terkirim dua kali, hasilnya tidak diproses dua kali. Isi dengan 8–200 karakter ASCII tanpa spasi. Header ini dianjurkan. Jika tidak dikirim atau kosong, server membuatkan kode otomatis dan mengembalikannya di header respons Idempotency-Key. Request tetap jalan, tetapi pengiriman ulang akan dihitung sebagai cek baru.

GET tidak idempotent. Setiap GET ke /api/v3/validate adalah cek baru. Pengiriman ulang GET tidak memutar respons dan bisa tertagih lagi. Untuk operasi yang harus aman diulang, pakai POST dengan Idempotency-Key yang sama.

Pembelian paket (portal member)

Member bisa membeli paket sendiri dengan QRIS lewat portal. Alurnya: lihat pratinjau → buat order → pindai QR → tekan "Saya sudah bayar". Ketentuannya:

Rate limit & kuota

Daftar bank GET /v1/banks

Endpoint ini gratis, tanpa API key. Hasilnya: daftar semua bank yang didukung beserta kode resminya (3 digit). Pakai nilai code_bank sebagai code saat mengecek rekening lewat /api/v3/validate.

[
  { "code_bank": "002", "name_bank": "BRI" },
  { "code_bank": "008", "name_bank": "MANDIRI" },
  { "code_bank": "009", "name_bank": "BNI" },
  { "code_bank": "014", "name_bank": "BCA" }
]

Validasi rekening GET POST /api/v3/validate

FieldWajibKeterangan
codeYaKode bank 3 digit dari GET /v1/banks (mis. 014 = BCA).
accountNumberYaNomor rekening 6–32 karakter (angka, spasi, dan tanda hubung diperbolehkan).

Contoh request dan respons sukses ada di Mulai cepat. Jika nomor tidak ditemukan di bank tujuan, respons tetap HTTP 200 dengan status: "not_found". Hasil ini masuk pool gratis invalid/not_found (gratis 100 pertama per hari per kunci, selebihnya 1 hit; lihat Rate limit & kuota):

{
  "request_id": "Qm3Za8Kd1s",
  "status": "not_found",
  "valid": false,
  "product": "bank_account",
  "message": "Respons diterima dari provider validasi.",
  "result": {
    "account_number": "1234667890",
    "service_code": "014",
    "bank_name": "BCA",
    "account_name": "DATA TIDAK DITEMUKAN"
  },
  "meta": {
    "provider": "Rajacek",
    "provider_latency_ms": 640,
    "rajacek_processing_ms": 5,
    "total_latency_ms": 645,
    "cached": false,
    "remaining_quota": 4998
  }
}

Scope: validate:bank_account.

Validasi e-wallet GET POST /api/v3/validate

FieldWajibKeterangan
codeYaIsi dengan salah satu kode e-wallet di bawah.
accountNumberYaNomor akun/nomor HP e-wallet 6–32 karakter.

Kode e-wallet yang didukung: dana, gopay, gopay_driver, ovo, shopeepay, linkaja, astrapay, isaku, kaspro.

curl "https://www.rajacek.com/api/v3/validate?code=gopay&accountNumber=081234567890&api_key=rc_CONTOH"

Atau POST dengan Idempotency-Key:

curl -X POST https://www.rajacek.com/api/v3/validate \
  -H "Content-Type: application/json" \
  -H "X-API-Key: rc_CONTOH" \
  -H "Idempotency-Key: topup-20261021-0007" \
  -d '{"code": "gopay", "accountNumber": "081234567890"}'

Respons sukses (HTTP 200):

{
  "request_id": "Vz81hNqP4e",
  "status": "valid",
  "valid": true,
  "product": "ewallet",
  "message": "Respons diterima dari provider validasi.",
  "result": {
    "account_number": "081234567890",
    "service_code": "gopay",
    "account_name": "SARI DEWI",
    "registered": true
  },
  "meta": {
    "provider": "Rajacek",
    "provider_latency_ms": 433,
    "rajacek_processing_ms": 4,
    "total_latency_ms": 437,
    "cached": false,
    "remaining_quota": 4997
  }
}

Scope: validate:ewallet.

Validasi WhatsApp GET POST /api/v3/validate

FieldWajibKeterangan
codeYaIsi whatsapp.
accountNumberYaNomor format internasional (+628...) atau lokal (08...).
curl "https://www.rajacek.com/api/v3/validate?code=whatsapp&accountNumber=081234567890&api_key=rc_CONTOH"

Atau POST dengan Idempotency-Key:

curl -X POST https://www.rajacek.com/api/v3/validate \
  -H "Content-Type: application/json" \
  -H "X-API-Key: rc_CONTOH" \
  -H "Idempotency-Key: wa-20261021-0003" \
  -d '{"code": "whatsapp", "accountNumber": "081234567890"}'

Respons nomor terdaftar WhatsApp (HTTP 200):

{
  "request_id": "Rt5wXc92Nb",
  "status": "valid",
  "valid": true,
  "product": "whatsapp",
  "message": "Respons diterima dari provider validasi.",
  "result": {
    "phone_number": "+6281234567890",
    "service_code": "whatsapp",
    "registered": true
  },
  "meta": {
    "provider": "Rajacek",
    "provider_latency_ms": 388,
    "rajacek_processing_ms": 4,
    "total_latency_ms": 392,
    "cached": false,
    "remaining_quota": 4996
  }
}

Nomor yang tidak terdaftar menghasilkan status: "invalid" dengan result: { "phone_number": "...", "service_code": "whatsapp", "registered": false }. Bentuk field lainnya sama.

Scope: validate:whatsapp. Gunakan layanan ini dengan bertanggung jawab. Bukan untuk spam atau mengumpulkan nomor secara massal.

Validasi PLN GET POST /api/v3/validate

Produk pln memeriksa ID pelanggan PLN (11–12 digit numerik). Di portal member, pilih tab PLN di Coba Cek Live lalu masukkan ID pelanggan. Lewat API, pakai code=pln dan accountNumber berisi ID pelanggan. Scope: validate:pln (atau validate:*).

curl "https://www.rajacek.com/api/v3/validate?code=pln&accountNumber=123456789012&api_key=rc_CONTOH"

Hasil valid (HTTP 200) menampilkan nama pelanggan (account_name, selalu huruf besar semua). Bila tersedia, tampil juga tarif dan daya:

{
  "status": "valid",
  "valid": true,
  "product": "pln",
  "result": {
    "account_name": "NAMA PELANGGAN",
    "tarif": "R1",
    "daya": "1300"
  },
  "meta": {
    "provider": "Rajacek"
  }
}

tarif dan daya hanya ada untuk PLN, dan hanya bila tersedia pada hasil valid. Produk lain tidak membawa field ini. meta.provider tetap "Rajacek". Nama provider upstream tidak pernah ditampilkan di permukaan member.

Status hasil (respons 200)

statusArtiTertagih
validNomor ditemukan dan terdaftar.Ya
invalidNomor diperiksa, tetapi tidak valid atau tidak aktif.Ya
not_foundNomor tidak ditemukan di bank atau layanan tujuan.Ya
not_kycKhusus e-wallet: nomor terdaftar, tetapi akun belum KYC. Jawaban upstream hanya berupa penanda "belum premium" atau gema nomor itu sendiri, bukan nama pemilik. Karena itu account_name tidak ditampilkan dan registered bernilai false.Ya
pendingHasil akhir belum tersedia; coba lagi nanti.Tidak

Isi result selalu memuat nomor yang Anda cek dan kode layanannya. Nomor: account_number untuk bank dan e-wallet, phone_number untuk WhatsApp. Kode layanan (service_code): kode bank 3 digit, nama e-wallet seperti dana, atau whatsapp. Untuk bank ada juga bank_name, misalnya BCA atau BRI. Untuk PLN, hasil valid dilengkapi tarif dan daya bila tersedia. Bila tersedia, hasil juga dilengkapi account_name (nama pemilik, selalu huruf besar semua), registered (terdaftar atau tidak), dan reference.

Kode error

Jika request gagal, responsnya selalu berbentuk { "code", "message", "request_id" }. Simpan request_id itu. Sertakan saat menghubungi kami agar masalah Anda cepat ditelusuri. Contoh respons saat kena rate limit (429):

{
  "code": "rate_limited",
  "message": "Batas laju tercapai; coba lagi nanti.",
  "request_id": "Hs92kLm4Qx"
}
HTTPcodeArti & tindakan
400bad_requestAda field yang hilang, formatnya salah, atau kode bank/e-wallet tidak dikenal. Periksa lagi isi request Anda.
401unauthorizedKunci tidak ada, salah, atau sudah dicabut.
402quota_exhaustedKuota paket Anda habis. Beli paket di portal member untuk menambah kuota.
403forbiddenAPI key Anda tidak punya izin (scope) untuk produk ini.
409conflictIdempotency-Key yang sama sudah dipakai dengan isi berbeda, atau request sebelumnya masih diproses. Untuk operasi baru, pakai kunci baru.
429rate_limitedAnda terlalu cepat (rate limit) atau antrean sedang penuh. Tunggu sesuai header Retry-After, lalu coba lagi.
502provider_errorLayanan pemeriksa memberi respons yang tidak bisa diproses. Aman diulang dengan Idempotency-Key yang sama.
503service_unavailableLayanan pemeriksa sedang tidak tersedia, atau produk ini belum aktif. Coba lagi beberapa saat.

Kami sudah mencoba lagi untuk Anda. Jika layanan pemeriksa gagal sesaat (timeout, sedang sibuk, atau respons rusak), Rajacek otomatis mengulang sampai 2 kali sebelum menyerah. Jawaban yang sudah pasti — misalnya "tidak ditemukan" — tidak pernah diulang.

Cara aman mengulang: untuk error 429, 502, dan 503, kirim ulang request yang sama persis dengan Idempotency-Key yang sama. Anda tidak akan ditagih dua kali.

OpenAPI JSON

Untuk Postman atau SDK sendiri, unduh spesifikasinya di /openapi.json (OpenAPI 3.1). Impor ke Postman/Insomnia atau generator klien favorit Anda. Isinya hanya endpoint untuk member.

FAQ

Apakah nama pemilik rekening selalu tersedia?

Umumnya tersedia untuk bank dan e-wallet. Untuk WhatsApp tidak ada nama. Yang menjadi acuan adalah registered (terdaftar atau tidak).

Request saya 200 tetapi valid: false — apakah ditagih?

Lihat status-nya. not_kyc selalu tertagih. invalid dan not_found masuk pool gratis (gratis 100 pertama per hari per kunci, selebihnya 1 hit). pending tidak tertagih.

Berapa lama respons idempotensi disimpan?

Respons idempotensi disimpan 24 jam. Lewat dari itu, kunci yang sama dianggap operasi baru.

Bolehkan saya memakai satu kunci untuk banyak server?

Boleh. Tetapi lebih aman dan rapi bila setiap aplikasi atau lingkungan punya kunci sendiri. Jika ada masalah, Anda cukup mencabut satu kunci itu saja.

Rajacek API · Dokumentasi member · Terakhir diselaraskan dengan kontrak API pada 29 Oktober 2026.