VClaim BPJS Error: Panduan Solusi Lengkap untuk Rumah Sakit [2026]
VClaim BPJS Error: Panduan Solusi Lengkap untuk Rumah Sakit [2026]
Pukul 07.30 pagi. Antrian pendaftaran sudah mengular. Petugas admisi klik "Cari Peserta" di SIMRS --- dan layar menampilkan pesan merah: "401 Unauthorized". Pasien menunggu, dokter menunggu, manajemen mulai bertanya.
Kalau Anda pernah mengalami skenario ini, Anda tidak sendirian. Berdasarkan pengalaman kami mendampingi 50+ rumah sakit di 8+ provinsi, error VClaim BPJS adalah salah satu masalah operasional paling sering dan paling frustrasi di rumah sakit Indonesia. Masalahnya: tidak ada satu pun panduan komprehensif yang mengumpulkan semua error VClaim beserta solusinya di satu tempat.
Sampai sekarang.
Untuk Direktur & Wadir Keuangan: Error VClaim bukan hanya masalah teknis — ini masalah revenue. Setiap jam VClaim down di satu loket pendaftaran, rata-rata 15-20 pasien terhambat. Jika RS Anda punya 5 loket dengan rata-rata klaim Rp 4,5 juta, 1 jam downtime = potensi Rp 67-90 juta proses klaim tertunda. Dalam sebulan, ini bisa berarti ratusan juta rupiah tertahan di pipeline. Solusi jangka panjangnya: SIMRS dengan bridging VClaim terintegrasi yang mengeliminasi 60-70% error manual.
Artikel ini adalah referensi definitif untuk setiap error VClaim BPJS yang mungkin Anda temui — lengkap dengan penyebab, langkah troubleshooting, dan cara mencegahnya. Bookmark halaman ini dan bagikan ke tim IT dan pendaftaran RS Anda.
Daftar Isi
- Memahami Arsitektur VClaim BPJS
- Kategori A: HTTP/API Errors
- Kategori B: Data & Business Logic Errors
- Kategori C: SEP & Rujukan Errors
- Kategori D: Connection & Infrastructure Errors
- Quick Reference Table: 28 Error VClaim
- Tips Mencegah Error VClaim
- Kapan Hubungi Helpdesk BPJS
- Bagaimana RME Terintegrasi Mengurangi Error VClaim
- FAQ
Memahami Arsitektur VClaim BPJS
Sebelum masuk ke daftar error, penting untuk memahami bagaimana VClaim bekerja di balik layar. Pemahaman ini akan membantu Anda mendiagnosa masalah lebih cepat.
Alur Request VClaim
SIMRS (Aplikasi RS)
→ HTTP Request + Header Autentikasi
→ API Gateway BPJS (dvlp.bpjs-kesehatan.go.id / apijkn.bpjs-kesehatan.go.id)
→ VClaim Service
→ Database BPJS
Komponen Autentikasi VClaim
Setiap request ke VClaim API membutuhkan 3 komponen header:
| Header | Deskripsi | Contoh |
|---|---|---|
| `X-cons-id` | Consumer ID unik per faskes | `12345` |
| `X-timestamp` | Unix timestamp saat request dikirim | `1709784000` |
| `X-signature` | HMAC-SHA256 dari Consumer ID + timestamp, di-hash dengan Consumer Secret | `Base64(HMAC-SHA256(...))` |
signature = Base64(HMAC-SHA256(consId + "&" + timestamp, consSecret))
Jika salah satu komponen ini tidak valid --- entah karena Consumer ID salah, timestamp tidak sinkron, atau secret key expired --- Anda akan mendapat error autentikasi.
Enkripsi Response (VClaim v2)
Sejak VClaim versi 2, response dari BPJS dienkripsi menggunakan:
- AES-256-CBC untuk enkripsi data
- LZ-String untuk kompresi
- Key dekripsi: `consId + consSecret + timestamp`
Ini berarti: jika ada masalah dengan proses dekripsi di sisi SIMRS, Anda bisa mendapat data yang "rusak" meskipun response dari BPJS sebenarnya sukses.
Kategori A: HTTP/API Errors
Error di kategori ini terjadi pada level protokol HTTP --- sebelum request Anda sampai ke business logic VClaim. Biasanya terlihat dari HTTP status code.
Error A1: 401 Unauthorized
| Aspek | Detail |
|---|---|
| HTTP Code | 401 |
| Pesan | "Unauthorized" atau "Silahkan cek kembali Cons-ID dan SecretKey Anda" |
| Frekuensi | Sangat sering --- error VClaim #1 paling umum |
- Consumer ID atau Secret Key salah. Biasanya terjadi setelah BPJS melakukan reset credential atau Anda baru migrasi server.
- Timestamp tidak sinkron. VClaim mentoleransi selisih waktu maksimal 2 menit antara server RS dan server BPJS. Jika jam server Anda selisih lebih dari itu, signature akan dianggap invalid.
- Signature salah. Kesalahan dalam implementasi HMAC-SHA256 --- misalnya encoding yang tidak tepat, atau urutan parameter yang terbalik.
- Consumer ID belum diaktivasi untuk environment production.
- Verifikasi Consumer ID dan Secret Key di portal BPJS (dvlp.bpjs-kesehatan.go.id).
- Cek sinkronisasi waktu server: jalankan `date` di terminal server dan bandingkan dengan waktu sebenarnya. Selisih harus < 60 detik.
- Pastikan format signature: `Base64(HMAC-SHA256(consId + "&" + timestamp, consSecret))`.
- Test dengan tool seperti Postman menggunakan credential yang sama --- jika di Postman berhasil, masalah ada di kode SIMRS.
Error A2: 403 Forbidden
| Aspek | Detail |
|---|---|
| HTTP Code | 403 |
| Pesan | "Forbidden" atau "IP Address tidak terdaftar" |
| Frekuensi | Sering --- terutama setelah migrasi server |
- IP server RS tidak terdaftar di whitelist BPJS. Setiap Consumer ID terikat dengan IP tertentu.
- IP berubah karena migrasi server, perubahan ISP, atau penggunaan IP dinamis.
- Mengakses dari environment yang salah (production vs development).
- Cek IP publik server: `curl ifconfig.me` atau `curl ipinfo.io/ip`.
- Daftarkan IP baru melalui portal BPJS atau hubungi PIC BPJS cabang.
- Jika menggunakan cloud server, pastikan IP static/elastic, bukan dynamic.
- Periksa apakah ada proxy atau load balancer yang mengubah source IP.
Error A3: 408 Request Timeout
| Aspek | Detail |
|---|---|
| HTTP Code | 408 |
| Pesan | "Request Timeout" |
| Frekuensi | Sering --- terutama jam sibuk (07.00-10.00) |
- Server BPJS overload pada jam pendaftaran pagi.
- Koneksi internet RS lambat atau tidak stabil.
- Timeout setting di SIMRS terlalu pendek (default banyak framework: 30 detik).
- Implementasi retry mechanism dengan exponential backoff: tunggu 2 detik, retry; tunggu 4 detik, retry; tunggu 8 detik, retry.
- Naikkan timeout setting di SIMRS menjadi minimal 60 detik.
- Monitor bandwidth internet pada jam sibuk --- pertimbangkan dedicated line untuk bridging BPJS.
- Implementasi queue system agar request tidak menumpuk bersamaan.
Error A4: 500 Internal Server Error
| Aspek | Detail |
|---|---|
| HTTP Code | 500 |
| Pesan | "Internal Server Error" |
| Frekuensi | Kadang-kadang --- biasanya masalah di sisi BPJS |
- Bug atau crash di server VClaim BPJS. Ini bukan kesalahan Anda.
- Request body malformed --- JSON tidak valid, field wajib kosong.
- Data yang dikirim menyebabkan error di sisi BPJS (edge case yang tidak ter-handle).
- Cek apakah error terjadi untuk semua request atau hanya request tertentu. Jika hanya request tertentu, periksa payload yang dikirim.
- Validasi JSON request body sebelum dikirim.
- Jika error terjadi untuk semua request, tunggu 15-30 menit lalu coba lagi.
- Cek grup Telegram/WhatsApp komunitas BPJS IT untuk konfirmasi apakah ada gangguan massal.
- Jika berlanjut > 1 jam, hubungi helpdesk BPJS.
Error A5: 502 Bad Gateway
| Aspek | Detail |
|---|---|
| HTTP Code | 502 |
| Pesan | "Bad Gateway" |
| Frekuensi | Jarang --- biasanya maintenance BPJS |
- API Gateway BPJS tidak bisa menghubungi backend VClaim. Biasanya terjadi saat maintenance atau deployment.
- Backend VClaim sedang restart.
- Tunggu 5-10 menit, lalu coba lagi.
- Cek apakah ada pengumuman maintenance dari BPJS.
- Jika berlanjut > 30 menit, hubungi helpdesk.
Error A6: 503 Service Unavailable
| Aspek | Detail |
|---|---|
| HTTP Code | 503 |
| Pesan | "Service Unavailable" atau "Service sedang dalam perbaikan" |
| Frekuensi | Jarang --- biasanya maintenance terjadwal |
- Maintenance terjadwal VClaim. Biasanya malam hari atau akhir pekan.
- Server overload sehingga BPJS menonaktifkan sementara.
- Cek jadwal maintenance di portal BPJS.
- Siapkan prosedur manual (formulir kertas) untuk pendaftaran saat VClaim down.
- Catat data pasien dan buat SEP setelah VClaim kembali online.
Error A7: 404 Not Found
| Aspek | Detail |
|---|---|
| HTTP Code | 404 |
| Pesan | "Not Found" atau "Endpoint tidak ditemukan" |
| Frekuensi | Jarang --- biasanya setelah update API |
- URL endpoint salah --- typo atau versi API yang sudah deprecated.
- BPJS mengubah endpoint tanpa notifikasi yang jelas.
- Verifikasi endpoint dengan dokumentasi VClaim terbaru.
- Pastikan base URL sesuai environment: `https://apijkn.bpjs-kesehatan.go.id/vclaim-rest-v2.0/` untuk production.
- Cek changelog VClaim untuk perubahan endpoint.
Kategori B: Data & Business Logic Errors
Error di kategori ini terjadi ketika request berhasil sampai ke server BPJS, tapi data yang dikirim tidak valid atau tidak memenuhi aturan bisnis. HTTP status code biasanya 200, tapi field `metaData.code` berisi kode error.
Error B1: Peserta Tidak Ditemukan
| Aspek | Detail |
|---|---|
| Code | `metaData.code: 201` |
| Pesan | "Data peserta tidak ditemukan" |
| Frekuensi | Sangat sering |
- Nomor kartu BPJS salah --- typo saat input, kartu lama yang sudah diganti.
- NIK tidak terdaftar di database BPJS.
- Peserta sudah dinonaktifkan (pindah perusahaan, tunggakan iuran perusahaan).
- Minta pasien menunjukkan kartu BPJS fisik atau aplikasi JKN untuk verifikasi nomor.
- Coba cari menggunakan NIK sebagai alternatif nomor kartu.
- Arahkan pasien untuk cek status kepesertaan via aplikasi JKN Mobile atau kantor BPJS.
Error B2: Peserta Tidak Aktif
| Aspek | Detail |
|---|---|
| Code | Bervariasi |
| Pesan | "Peserta tidak aktif" atau "Status kepesertaan: Non Aktif" |
| Frekuensi | Sering |
- Tunggakan iuran > 1 bulan (peserta mandiri/PBPU).
- Perusahaan belum membayar iuran karyawan.
- Peserta meninggal dunia atau pindah ke luar negeri.
- Masa aktif kartu habis dan belum diperpanjang.
- Informasikan pasien untuk melunasi tunggakan melalui kantor BPJS, mobile banking, atau minimarket.
- Untuk peserta PPU (pekerja penerima upah), minta pasien menghubungi HRD perusahaan.
- Setelah tunggakan dilunasi, aktivasi membutuhkan waktu 1x24 jam --- informasikan ke pasien.
- Untuk kasus darurat, proses pasien dengan jaminan deposit dan buat SEP setelah kepesertaan aktif.
Error B3: Nomor Kartu Tidak Valid
| Aspek | Detail |
|---|---|
| Code | Bervariasi |
| Pesan | "Nomor kartu tidak valid" atau "Format nomor kartu salah" |
| Frekuensi | Kadang-kadang |
- Format nomor kartu salah --- nomor kartu BPJS harus 13 digit.
- Karakter non-numerik ikut terinput (spasi, huruf O bukan angka 0).
- Nomor kartu lama yang sudah dimigrasikan ke nomor baru.
- Validasi format di sisi SIMRS: hanya angka, 13 digit.
- Implementasi auto-trim spasi dan validasi karakter.
- Jika nomor kartu berubah, minta pasien mengecek nomor terbaru di aplikasi JKN.
Error B4: Diagnosa Tidak Sesuai
| Aspek | Detail |
|---|---|
| Code | Bervariasi |
| Pesan | "Kode diagnosa tidak valid" atau "Diagnosa tidak sesuai dengan poli tujuan" |
| Frekuensi | Kadang-kadang |
- Kode ICD-10 salah atau tidak ada di master data BPJS.
- Kode ICD-10 tidak sesuai dengan poli/spesialisasi yang dituju.
- Versi kode ICD-10 berbeda antara SIMRS dan database BPJS.
- Diagnosa utama menggunakan kode yang terlalu umum (misal R69 - Illness unspecified).
- Gunakan kode ICD-10 dari master data BPJS, bukan dari referensi WHO langsung.
- Pastikan mapping diagnosa-poli sudah benar di SIMRS.
- Untuk koding ICD-10 yang akurat, pertimbangkan menggunakan tools berbasis AI seperti CDSS MedMinutes yang memiliki modul ICD-10 AI untuk membantu dokter memilih kode yang tepat dan sesuai aturan BPJS.
- Baca panduan lengkap kami tentang optimasi koding ICD-10 untuk klaim BPJS.
Error B5: DPJP Tidak Valid
| Aspek | Detail |
|---|---|
| Code | Bervariasi |
| Pesan | "Kode DPJP tidak valid" atau "DPJP tidak terdaftar" |
| Frekuensi | Kadang-kadang |
- Kode dokter (DPJP) tidak terdaftar di mapping VClaim untuk faskes tersebut.
- Dokter baru yang belum didaftarkan ke BPJS.
- Kode dokter di SIMRS berbeda dengan kode di VClaim.
- STR dokter sudah expired sehingga dinonaktifkan oleh BPJS.
- Sinkronkan master data dokter antara SIMRS dan VClaim menggunakan endpoint referensi DPJP.
- Daftarkan dokter baru melalui portal BPJS atau PIC BPJS cabang.
- Pastikan mapping kode dokter SIMRS ↔ kode BPJS sudah benar.
- Ingatkan manajemen RS untuk memperbarui STR dokter sebelum expired.
Error B6: Kode PPK Tidak Sesuai
| Aspek | Detail |
|---|---|
| Code | Bervariasi |
| Pesan | "PPK pelayanan tidak sesuai" atau "Kode PPK tidak valid" |
| Frekuensi | Jarang |
- Kode PPK (faskes) yang digunakan tidak sesuai dengan Consumer ID.
- Kesalahan konfigurasi saat setup awal bridging.
- RS punya beberapa kode PPK (rawat jalan, rawat inap, IGD) dan yang digunakan salah.
- Pastikan kode PPK yang dikirim sesuai dengan yang terdaftar untuk Consumer ID tersebut.
- Cek konfigurasi mapping PPK di SIMRS.
- Untuk RS dengan multi-PPK, pastikan routing ke PPK yang benar berdasarkan jenis layanan.
Error B7: Kelas Rawat Tidak Sesuai Hak
| Aspek | Detail |
|---|---|
| Code | Bervariasi |
| Pesan | "Kelas rawat tidak sesuai dengan hak peserta" |
| Frekuensi | Sering |
- Kelas rawat yang dipilih lebih tinggi dari hak peserta tanpa ada persetujuan naik kelas.
- Data hak kelas di SIMRS tidak ter-update setelah peserta mengubah kelasnya.
- Selalu ambil data hak kelas dari response `peserta` VClaim, jangan hard-code di SIMRS.
- Jika pasien ingin naik kelas, gunakan mekanisme selisih biaya (iur biaya) yang sesuai regulasi.
- Sinkronkan master data peserta setiap kali pasien mendaftar.
Kategori C: SEP & Rujukan Errors
Error di kategori ini berkaitan dengan pembuatan Surat Eligibilitas Peserta (SEP), rujukan, dan surat kontrol. Ini adalah error yang paling langsung berdampak pada proses pendaftaran pasien.
Error C1: Tanggal SEP Tidak Valid
| Aspek | Detail |
|---|---|
| Code | Bervariasi |
| Pesan | "Tanggal SEP tidak valid" atau "Tanggal SEP tidak boleh kurang dari tanggal rujukan" |
| Frekuensi | Sering |
- Format tanggal salah --- VClaim menggunakan format `YYYY-MM-DD`.
- Tanggal SEP lebih awal dari tanggal rujukan.
- Tanggal SEP mundur (backdating) lebih dari batas toleransi BPJS.
- Tanggal SEP di masa depan (advance dating).
- Pastikan format tanggal: `YYYY-MM-DD` (contoh: `2026-03-07`).
- Validasi di SIMRS: tanggal SEP >= tanggal rujukan.
- Untuk SEP backdating, ikuti prosedur persetujuan dari kepala BPJS cabang.
- Pastikan jam server sudah benar --- jika timezone salah, tanggal bisa terhitung berbeda.
Error C2: SEP Duplikat
| Aspek | Detail |
|---|---|
| Code | Bervariasi |
| Pesan | "Peserta sudah memiliki SEP aktif" atau "SEP duplikat" |
| Frekuensi | Sering |
- Pasien sudah terdaftar di RS lain atau poli lain dengan SEP yang masih aktif.
- Double entry oleh petugas admisi --- tombol diklik dua kali.
- SEP sebelumnya belum di-delete meskipun pasien batal berobat.
- Cek SEP aktif terlebih dahulu menggunakan endpoint `monitoring/HistoriPelayanan` sebelum membuat SEP baru.
- Jika SEP lama perlu dibatalkan, gunakan endpoint `SEP/Delete` dengan alasan yang valid.
- Implementasi debounce/lock pada tombol buat SEP di SIMRS agar tidak double-click.
- Untuk rawat inap, pastikan SEP rawat jalan sudah ditutup sebelum buat SEP rawat inap.
Error C3: Rujukan Expired
| Aspek | Detail |
|---|---|
| Code | Bervariasi |
| Pesan | "Rujukan sudah tidak berlaku" atau "Masa berlaku rujukan sudah habis" |
| Frekuensi | Sering |
- Rujukan sudah melewati masa berlaku --- rujukan FKTP berlaku 90 hari, rujukan antar RS berlaku sesuai ketentuan.
- Rujukan sudah digunakan untuk kunjungan sebelumnya dan tidak bisa dipakai lagi.
- Cek masa berlaku rujukan sebelum membuat SEP: gunakan endpoint `Rujukan/Peserta/{noKartu}`.
- Jika rujukan expired, minta pasien kembali ke FKTP (puskesmas/klinik) untuk membuat rujukan baru.
- Untuk kasus tertentu (rujukan iteratif), gunakan mekanisme surat kontrol.
- Informasikan pasien tentang masa berlaku rujukan saat pertama kali mendaftar.
Error C4: Surat Kontrol Expired
| Aspek | Detail |
|---|---|
| Code | Bervariasi |
| Pesan | "Surat kontrol sudah tidak berlaku" |
| Frekuensi | Kadang-kadang |
- Surat kontrol melewati tanggal rencana kontrol yang ditetapkan.
- Surat kontrol sudah digunakan dan belum dibuat surat kontrol baru untuk kunjungan berikutnya.
- Buat surat kontrol baru melalui endpoint `RencanaKontrol/Insert`.
- Pastikan tanggal rencana kontrol realistis dan diinformasikan ke pasien.
- Implementasi reminder otomatis di SIMRS untuk pasien yang mendekati jadwal kontrol.
Error C5: Prosedur Tidak Sesuai Diagnosa
| Aspek | Detail |
|---|---|
| Code | Bervariasi |
| Pesan | "Prosedur tidak sesuai dengan diagnosa" |
| Frekuensi | Kadang-kadang |
- Kode prosedur (ICD-9-CM) tidak relevan dengan diagnosa (ICD-10) yang dipilih.
- Prosedur memerlukan diagnosa pendukung yang belum diinput.
- Mapping prosedur-diagnosa BPJS memiliki aturan spesifik yang tidak terpenuhi.
- Verifikasi kombinasi diagnosa-prosedur dengan panduan clinical pathway RS.
- Pastikan diagnosa utama dan sekunder sudah lengkap sebelum menambahkan prosedur.
- Gunakan tools CDSS MedMinutes dengan modul SOAP Extraction untuk memastikan dokumentasi klinis lengkap dan kode yang konsisten.
Error C6: Faskes Perujuk Tidak Sesuai
| Aspek | Detail |
|---|---|
| Code | Bervariasi |
| Pesan | "Faskes perujuk tidak sesuai" atau "PPK rujukan tidak valid" |
| Frekuensi | Kadang-kadang |
- Pasien dirujuk dari faskes yang bukan FKTP terdaftar pasien tersebut.
- Kode faskes perujuk salah dalam data rujukan.
- Aturan rujukan berjenjang tidak terpenuhi (harus dari FKTP ke FKRTL, tidak bisa langsung ke RS tipe A).
- Verifikasi faskes FKTP terdaftar pasien melalui endpoint peserta.
- Untuk kasus gawat darurat, gunakan flag IGD pada pembuatan SEP --- ini bypass aturan rujukan.
- Pastikan alur rujukan berjenjang sudah sesuai ketentuan BPJS.
Error C7: Poli Tujuan Tidak Sesuai Rujukan
| Aspek | Detail |
|---|---|
| Code | Bervariasi |
| Pesan | "Poli tujuan tidak sesuai dengan poli rujukan" |
| Frekuensi | Kadang-kadang |
- Poli yang dipilih di SEP berbeda dengan poli yang tertera di rujukan.
- Mapping kode poli SIMRS dan kode poli BPJS tidak sinkron.
- Ambil kode poli dari data rujukan dan gunakan kode tersebut saat membuat SEP.
- Sinkronkan master data poli antara SIMRS dan referensi VClaim.
- Jika pasien perlu ke poli berbeda dari rujukan, buat rujukan internal dari poli awal.
Kategori D: Connection & Infrastructure Errors
Error di kategori ini berkaitan dengan infrastruktur jaringan, SSL, dan konfigurasi server. Biasanya ditangani oleh tim IT RS.
Error D1: Connection Refused / Connection Error
| Aspek | Detail |
|---|---|
| Pesan | "Connection refused", "ECONNREFUSED", atau "Could not connect to server" |
| Frekuensi | Kadang-kadang |
- Server BPJS tidak bisa dijangkau dari jaringan RS.
- Firewall RS memblokir koneksi ke IP/port BPJS.
- DNS tidak bisa resolve domain BPJS.
- ISP mengalami gangguan pada routing ke server BPJS.
- Test konektivitas: `ping apijkn.bpjs-kesehatan.go.id` dan `telnet apijkn.bpjs-kesehatan.go.id 443`.
- Cek firewall: pastikan port 443 (HTTPS) tidak diblokir untuk outbound connection.
- Cek DNS: `nslookup apijkn.bpjs-kesehatan.go.id` --- jika gagal, coba ganti DNS ke 8.8.8.8.
- Jika menggunakan proxy, pastikan konfigurasi proxy benar di SIMRS.
Error D2: SSL/TLS Error
| Aspek | Detail |
|---|---|
| Pesan | "SSL handshake failed", "UNABLE_TO_VERIFY_LEAF_SIGNATURE", atau "SSL certificate problem" |
| Frekuensi | Kadang-kadang --- terutama pada server lama |
- Sertifikat SSL server BPJS di-update dan CA-nya belum ada di trust store server RS.
- Versi TLS terlalu lama --- BPJS mungkin sudah membutuhkan TLS 1.2 atau 1.3.
- CA bundle di server RS outdated.
- Proxy/firewall melakukan SSL inspection yang merusak sertifikat.
- Update CA certificates: `sudo update-ca-certificates` (Linux) atau download CA bundle terbaru.
- Pastikan server mendukung TLS 1.2 minimum: `openssl s_client -connect apijkn.bpjs-kesehatan.go.id:443 -tls1_2`.
- Jika menggunakan Node.js, pastikan tidak ada `NODE_TLS_REJECT_UNAUTHORIZED=0` di production --- ini hanya boleh untuk debugging.
- Cek apakah proxy/firewall melakukan SSL interception dan tambahkan exception untuk domain BPJS.
Error D3: Decrypt Error (VClaim v2)
| Aspek | Detail |
|---|---|
| Pesan | "Decrypt error", response berisi karakter acak, atau JSON parse error pada response |
| Frekuensi | Sering --- terutama saat migrasi ke VClaim v2 |
- Implementasi dekripsi LZ-String tidak benar di sisi SIMRS.
- Key dekripsi salah --- key harus dibuat dari `consId + consSecret + timestamp` dari request.
- Library LZ-String yang digunakan tidak kompatibel dengan versi yang digunakan BPJS.
- Encoding mismatch --- response harus di-decode sebagai UTF-8 terlebih dahulu.
- Pastikan alur dekripsi benar:
- Buat key: `consId + consSecret + timestamp` (timestamp yang sama dengan yang ada di header request).
- Decrypt AES-256-CBC menggunakan key tersebut.
- Decompress hasil decrypt menggunakan LZ-String (`decompressFromEncodedURIComponent`).
- Gunakan library LZ-String yang sudah teruji. Untuk PHP: `lz-string-php`; untuk Java: `lz-string-java`; untuk Node.js: `lz-string` npm package.
- Pastikan timestamp yang digunakan untuk decrypt sama persis dengan timestamp yang dikirim di header request. Jangan generate timestamp baru untuk decrypt.
- Test dekripsi dengan response sampel dari dokumentasi BPJS.
Error D4: Fingerprint Gagal
| Aspek | Detail |
|---|---|
| Pesan | "Fingerprint tidak valid" atau error pada proses fingerprint verification |
| Frekuensi | Kadang-kadang --- untuk layanan yang memerlukan verifikasi biometrik |
- Device fingerprint reader tidak terdeteksi atau driver bermasalah.
- Sidik jari pasien tidak terbaca --- jari basah, kotor, atau luka.
- Data fingerprint pasien belum terdaftar di BPJS.
- Versi SDK fingerprint tidak kompatibel dengan sistem operasi.
- Pastikan driver fingerprint reader ter-install dan up-to-date.
- Bersihkan sensor fingerprint reader secara berkala.
- Minta pasien mengeringkan jari sebelum scan. Coba jari yang berbeda.
- Jika fingerprint gagal berulang, gunakan verifikasi alternatif sesuai ketentuan BPJS (foto pasien + NIK).
Error D5: Connection Timeout (Network Level)
| Aspek | Detail |
|---|---|
| Pesan | "ETIMEDOUT", "ESOCKETTIMEDOUT", atau "Network timeout" |
| Frekuensi | Kadang-kadang --- berbeda dari HTTP 408 |
- Koneksi tidak bisa established ke server BPJS (berbeda dari 408 di mana koneksi berhasil tapi response lama).
- Routing internet bermasalah antara RS dan data center BPJS.
- MTU mismatch pada jaringan RS.
- Traceroute ke server BPJS: `traceroute apijkn.bpjs-kesehatan.go.id` untuk identifikasi hop yang bermasalah.
- Hubungi ISP jika ada hop yang timeout.
- Cek MTU: `ping -M do -s 1472 apijkn.bpjs-kesehatan.go.id` --- jika gagal, mungkin perlu adjust MTU.
- Pertimbangkan backup ISP atau VPN sebagai jalur alternatif.
Error D6: Rate Limiting
| Aspek | Detail |
|---|---|
| HTTP Code | 429 |
| Pesan | "Too Many Requests" atau "Rate limit exceeded" |
| Frekuensi | Jarang --- hanya pada RS besar dengan volume tinggi |
- Terlalu banyak request dalam waktu singkat ke API BPJS.
- Loop atau bug di SIMRS yang mengirim request berulang-ulang.
- Beberapa proses/thread mengirim request bersamaan.
- Implementasi request throttling: batasi maksimal 5-10 request per detik.
- Gunakan caching untuk data yang jarang berubah (data peserta, referensi poli, referensi dokter).
- Periksa log SIMRS untuk request yang berulang atau infinite loop.
- Implementasi queue untuk request VClaim agar tidak menumpuk.
Quick Reference Table: 28 Error VClaim
Berikut tabel ringkasan semua error yang dibahas dalam artikel ini. Bookmark tabel ini untuk referensi cepat saat troubleshooting.
| # | Error | Cek Pertama | Solusi Cepat |
|---|---|---|---|
| A1 | 401 Unauthorized | Consumer ID, Secret Key, timestamp | Verifikasi credential, sinkronkan jam server |
| A2 | 403 Forbidden | IP server, whitelist | Daftarkan IP baru di portal BPJS |
| A3 | 408 Request Timeout | Koneksi internet, jam sibuk | Naikkan timeout, implementasi retry |
| A4 | 500 Internal Server Error | Payload JSON, status server BPJS | Validasi JSON, tunggu 15-30 menit |
| A5 | 502 Bad Gateway | Status maintenance BPJS | Tunggu 5-10 menit, cek pengumuman |
| A6 | 503 Service Unavailable | Jadwal maintenance | Gunakan prosedur manual, coba lagi nanti |
| A7 | 404 Not Found | URL endpoint | Verifikasi endpoint dengan dokumentasi terbaru |
| B1 | Peserta tidak ditemukan | Nomor kartu, NIK | Verifikasi nomor dari kartu fisik/JKN Mobile |
| B2 | Peserta tidak aktif | Status iuran, kepesertaan | Lunasi tunggakan, hubungi HRD perusahaan |
| B3 | Nomor kartu tidak valid | Format 13 digit | Validasi format, trim spasi |
| B4 | Diagnosa tidak sesuai | Kode ICD-10, poli tujuan | Cek master data BPJS, gunakan CDSS |
| B5 | DPJP tidak valid | Kode dokter, STR | Sinkronkan master data dokter |
| B6 | PPK tidak sesuai | Kode faskes, Consumer ID | Cek konfigurasi mapping PPK |
| B7 | Kelas rawat tidak sesuai | Hak kelas peserta | Ambil hak kelas dari response peserta |
| C1 | Tanggal SEP tidak valid | Format tanggal, timezone | Format YYYY-MM-DD, cek jam server |
| C2 | SEP duplikat | SEP aktif sebelumnya | Cek histori, delete SEP lama jika perlu |
| C3 | Rujukan expired | Masa berlaku rujukan | Minta pasien buat rujukan baru di FKTP |
| C4 | Surat kontrol expired | Tanggal rencana kontrol | Buat surat kontrol baru |
| C5 | Prosedur tidak sesuai diagnosa | Kombinasi ICD-10 & ICD-9-CM | Verifikasi clinical pathway |
| C6 | Faskes perujuk tidak sesuai | FKTP terdaftar, rujukan berjenjang | Verifikasi faskes FKTP, gunakan flag IGD |
| C7 | Poli tujuan tidak sesuai | Poli di rujukan vs poli SEP | Ambil kode poli dari data rujukan |
| D1 | Connection refused | Koneksi internet, firewall, DNS | Ping, cek firewall port 443, cek DNS |
| D2 | SSL/TLS error | Sertifikat, versi TLS | Update CA cert, pastikan TLS 1.2+ |
| D3 | Decrypt error | Implementasi LZ-String, key | Verifikasi alur dekripsi, gunakan library teruji |
| D4 | Fingerprint gagal | Device, driver, kondisi jari | Update driver, bersihkan sensor, jari kering |
| D5 | Connection timeout | Routing internet, MTU | Traceroute, hubungi ISP, backup koneksi |
| D6 | Rate limiting (429) | Volume request, loop | Throttle request, implementasi caching |
| D7 | JSON parse error | Response format, encoding | Cek encoding UTF-8, validasi response body |
Error D7: JSON Parse Error (Bonus)
Satu error tambahan yang sering terjadi tapi jarang dibahas:
| Aspek | Detail |
|---|---|
| Pesan | "Unexpected token", "JSON.parse error", atau "Invalid JSON response" |
| Frekuensi | Kadang-kadang |
- Response dari BPJS bukan JSON valid --- bisa karena HTML error page (maintenance page) yang di-parse sebagai JSON.
- Proses dekripsi gagal sebagian sehingga menghasilkan string yang bukan JSON valid.
- Encoding issue --- BOM (Byte Order Mark) di awal response.
- Log raw response sebelum parsing untuk debugging.
- Cek apakah response dimulai dengan `{` atau `` --- jika dimulai dengan `<`, kemungkinan Anda mendapat HTML error page.
- Strip BOM jika ada: `response.replace(/^\xEF\xBB\xBF/, '')`.
- Implementasi try-catch pada JSON parse dan berikan pesan error yang informatif ke user.
Tips Mencegah Error VClaim
Lebih baik mencegah daripada troubleshooting. Berikut best practices yang kami rekomendasikan berdasarkan pengalaman implementasi di 50+ rumah sakit:
1. Sinkronisasi Waktu Server (NTP)
Ini adalah penyebab error #1 yang paling mudah dicegah tapi paling sering diabaikan.
Install NTP (jika belum)
sudo apt install ntp
Konfigurasi NTP server Indonesia
Edit /etc/ntp.conf, tambahkan:
server 0.id.pool.ntp.org
server 1.id.pool.ntp.org
server 2.id.pool.ntp.org
Restart NTP service
sudo systemctl restart ntp
Verifikasi sinkronisasi
ntpq -p
Target: Selisih waktu antara server RS dan UTC harus < 30 detik. Cek secara berkala, minimal 1x seminggu.
2. IP Whitelisting & Monitoring
- Catat IP publik server yang terdaftar di BPJS. Simpan di dokumentasi IT.
- Set monitoring alert jika IP publik berubah (terutama untuk ISP yang tidak menjamin static IP).
- Gunakan elastic/static IP pada cloud server (AWS EIP, GCP Static IP, dll).
- Jika punya backup ISP, daftarkan kedua IP ke BPJS.
3. Logging yang Komprehensif
Setiap request dan response VClaim harus di-log. Minimal informasi yang harus dicatat:
| Field | Contoh |
|---|---|
| Timestamp | 2026-03-07T08:30:15.123Z |
| Endpoint | /SEP/Insert |
| Request Body | (sanitized --- tanpa credential) |
| HTTP Status | 200 |
| Response Code | metaData.code: 200 |
| Response Message | metaData.message: OK |
| Duration (ms) | 1250 |
| User/Workstation | Admin01 / PC-Admisi-03 |
Log ini akan sangat berharga saat troubleshooting --- Anda bisa melihat pola error (jam tertentu, endpoint tertentu, user tertentu).
4. Backup Connection
- Siapkan ISP cadangan yang bisa di-switch dalam hitungan menit.
- Pertimbangkan 4G/5G backup sebagai last resort.
- Implementasi automatic failover jika koneksi utama down.
- Test failover secara berkala --- jangan tunggu sampai koneksi utama benar-benar mati.
5. Validasi Input di Sisi SIMRS
Banyak error bisa dicegah dengan validasi sebelum mengirim request ke BPJS:
| Validasi | Rule |
|---|---|
| Nomor kartu BPJS | 13 digit, hanya angka |
| NIK | 16 digit, hanya angka |
| Tanggal | Format YYYY-MM-DD, tidak di masa depan, tidak lebih dari 7 hari di masa lalu |
| Kode diagnosa | Ada di master data, sesuai poli |
| Kode DPJP | Ada di mapping VClaim |
| JSON payload | Valid JSON, field wajib terisi |
6. Caching Data Referensi
Data referensi yang jarang berubah sebaiknya di-cache di SIMRS:
- Referensi poli --- cache 24 jam.
- Referensi DPJP --- cache 6 jam.
- Referensi diagnosa --- cache 7 hari.
- Referensi prosedur --- cache 7 hari.
- Referensi faskes --- cache 7 hari.
Ini mengurangi jumlah request ke BPJS dan mempercepat proses pendaftaran.
7. Monitoring & Alerting
Setup monitoring untuk mendeteksi masalah sebelum menjadi krisis:
- Alert jika error rate > 10% dalam 15 menit terakhir.
- Alert jika average response time > 10 detik.
- Alert jika ada 5+ error berturut-turut pada endpoint yang sama.
- Dashboard real-time yang menampilkan status VClaim saat ini.
Kapan Hubungi Helpdesk BPJS
Tidak semua error bisa diselesaikan sendiri. Hubungi helpdesk BPJS ketika:
- Error 500/502/503 berlanjut > 1 jam dan sudah dikonfirmasi bukan dari sisi RS.
- Perlu mendaftarkan IP baru atau Consumer ID baru.
- Data peserta tidak sinkron antara VClaim dan JKN Mobile (peserta klaim aktif tapi VClaim bilang tidak aktif).
- Error baru yang tidak ada di dokumentasi dan tidak bisa diidentifikasi penyebabnya.
- Perlu reset Consumer Secret karena security breach.
Kontak Helpdesk BPJS
| Channel | Detail |
|---|---|
| Call Center | 165 (dari HP) atau 021-165 (dari telepon kantor) |
| halo@bpjs-kesehatan.go.id | |
| WhatsApp (CHIKA) | 08118-165-165 |
| Portal | dvlp.bpjs-kesehatan.go.id → menu Support |
| PIC Cabang | Hubungi PIC IT BPJS cabang setempat (minta nomor ke bagian umum RS) |
- Siapkan Consumer ID dan kode PPK.
- Siapkan screenshot error dan log request/response.
- Catat waktu kejadian yang spesifik.
- Jelaskan langkah yang sudah dilakukan untuk troubleshooting.
- Minta nomor tiket untuk follow-up.
Bagaimana RME Terintegrasi Mengurangi Error VClaim
Banyak error VClaim sebenarnya disebabkan oleh ketidaksinkronan antara SIMRS dan VClaim --- data yang tidak ter-update, format yang salah, atau mapping yang tidak konsisten.
Sistem [Rekam Medis Elektronik (RME) yang terintegrasi langsung dengan VClaim mengatasi ini dengan:
1. Bridging Otomatis
RME yang terintegrasi tidak memerlukan "jembatan" (bridging) tambahan. Data mengalir langsung dari SIMRS ke VClaim dan sebaliknya, mengurangi titik kegagalan.
2. Validasi Real-Time
Sebelum data dikirim ke BPJS, sistem otomatis memvalidasi:
- Format dan kelengkapan field
- Kesesuaian kode diagnosa dengan poli
- Status kepesertaan aktif
- Kelas rawat sesuai hak
Error yang biasanya muncul di BPJS ditangkap lebih awal di sisi SIMRS, memberikan pesan yang lebih jelas ke petugas.
3. Auto-Sync Master Data
Data referensi (poli, dokter, diagnosa) otomatis ter-update tanpa intervensi manual, mengurangi error karena data yang outdated.
4. Retry & Error Handling
Untuk error sementara (timeout, server busy), sistem otomatis melakukan retry tanpa perlu intervensi petugas.
MedMinutes RME dirancang dengan integrasi VClaim sebagai fitur inti --- bukan tambahan. Hasilnya: error rate VClaim berkurang signifikan karena validasi dilakukan sebelum data dikirim ke BPJS.Selain integrasi VClaim, MedMinutes juga menyediakan CDSS (Clinical Decision Support System) dengan modul SOAP Extraction, ICD-10 AI, Drug Interaction, dan AI Resume Medis yang membantu dokter menghasilkan dokumentasi klinis yang lengkap dan akurat --- sehingga mengurangi error koding di sisi klaim.
FAQ
1. Apakah VClaim sering down?
VClaim relatif stabil, tapi memang ada periode maintenance terjadwal (biasanya malam hari atau akhir pekan) dan kadang-kadang gangguan tidak terjadwal pada jam sibuk. Berdasarkan pengalaman, uptime VClaim sekitar 98-99%. Yang penting: selalu siapkan prosedur manual sebagai backup.
2. Bagaimana cara cek apakah error dari sisi BPJS atau dari SIMRS?
Gunakan tool independen seperti Postman atau cURL untuk mengirim request langsung ke API VClaim. Jika di Postman berhasil tapi di SIMRS gagal, masalahnya ada di kode SIMRS. Jika di Postman juga gagal, masalahnya di sisi BPJS atau koneksi jaringan. Selalu log raw request dan response untuk memudahkan isolasi masalah.3. Berapa lama normal response time VClaim?
Rata-rata response time VClaim yang sehat adalah 1-3 detik. Jika konsisten di atas 5 detik, ada masalah --- bisa dari koneksi internet RS, konfigurasi server, atau server BPJS yang sedang sibuk. Pada jam puncak (07.00-10.00), response time bisa naik menjadi 3-5 detik dan ini masih normal.
4. Apa yang harus dilakukan jika VClaim down total saat jam pelayanan?
Terapkan prosedur darurat:
- Beritahu seluruh loket pendaftaran bahwa VClaim sedang gangguan.
- Gunakan formulir manual untuk mencatat data pasien.
- Pastikan pasien tetap dilayani --- jangan tolak pasien hanya karena VClaim down.
- Setelah VClaim kembali online, input data retroaktif (backdating SEP sesuai prosedur).
- Koordinasi dengan manajemen RS dan PIC BPJS jika downtime > 2 jam.
5. Apakah perlu upgrade ke VClaim v2?
Ya, sangat disarankan. VClaim v2 sudah menjadi standar resmi BPJS. Versi lama (v1) semakin jarang didukung dan mungkin akan di-deprecate. Tantangan utama migrasi ke v2 adalah implementasi dekripsi LZ-String --- pastikan tim IT Anda sudah memahami alur enkripsi/dekripsi sebelum migrasi. Tes di environment development terlebih dahulu.6. Bagaimana cara mengurangi error VClaim tanpa overhaul SIMRS?
Ada langkah-langkah yang bisa segera dilakukan tanpa perubahan besar pada SIMRS:
- Sinkronkan jam server dengan NTP --- ini menghilangkan error 401 yang disebabkan timestamp.
- Validasi input di front-end sebelum submit --- format nomor kartu, tanggal, dll.
- Implementasi retry otomatis untuk error timeout (408) dan server error (5xx).
- Caching data referensi untuk mengurangi beban request.
- Untuk solusi yang lebih komprehensif, pertimbangkan BPJScan dari MedMinutes yang menganalisis data klaim dan membantu mengidentifikasi pola error yang berulang.
Penutup
Error VClaim BPJS memang tidak bisa dihindari 100% --- tapi dengan pemahaman yang benar, monitoring yang proaktif, dan prosedur yang jelas, dampaknya bisa diminimalkan secara drastis.
Tiga hal yang bisa Anda lakukan hari ini:
- Bookmark artikel ini dan bagikan ke tim IT dan admisi RS Anda.
- Cek sinkronisasi NTP server --- ini penyebab error paling umum dan paling mudah diperbaiki.
- Pastikan logging VClaim aktif --- tanpa log, troubleshooting hanya tebak-tebakan.
Ingin Mengurangi Error VClaim Secara Sistematis?
MedMinutes BPJScan menganalisis data klaim BPJS rumah sakit Anda dan mengidentifikasi pola error, potensi revenue yang hilang, serta peluang optimasi klaim. Sudah digunakan oleh 50+ rumah sakit di 8+ provinsi. Jadwalkan demo gratis untuk melihat potensi recovery klaim RS Anda: Hubungi MedMinutes via WhatsApp.%20Saya%20ingin%20jadwalkan%20demo%20untuk%20lihat%20potensi%20recovery%20klaim%20BPJS%20kami.>)_Artikel ini terakhir diperbarui pada Maret 2026. Informasi error code dan solusi berdasarkan VClaim API versi 2.0. Hubungi BPJS Kesehatan untuk informasi terbaru mengenai perubahan API._
Dipercaya 50+ rumah sakit di 8+ provinsi











