Lewati ke konten utama

Error Codes

Format error standar untuk semua respons gagal:

{
"error": "human readable message",
"code": "machine_readable_code"
}

4xx — Client Errors

400 Bad Request

CodeDeskripsiTindakan
invalid_cursorPagination cursor tidak valid atau sudah expiredMulai dari halaman pertama (tanpa cursor)
invalid_bank_codebank_code tidak ada di referensiCek kode bank yang valid dengan tim Kesles
invalid_timestamp_formatFormat X-Timestamp bukan unix secondsGunakan int64 unix timestamp
missing_required_paramQuery param wajib tidak disertakanCek dokumentasi endpoint

401 Unauthorized

CodeDeskripsiTindakan
invalid_signatureHMAC signature tidak cocokCek ulang string-to-sign dan secret
timestamp_expiredX-Timestamp lebih dari ±300 detik dari waktu serverSinkronkan clock dengan NTP, regenerate timestamp
api_key_not_foundX-API-Key-ID tidak dikenalHubungi tim Kesles
api_key_revokedKey sudah direvokasiHubungi tim Kesles untuk key baru
api_key_expiredKey sudah melewati expires_atLakukan key rotation

403 Forbidden

CodeDeskripsiTindakan
ip_not_allowedIP caller tidak ada di allowlistHubungi tim Kesles untuk update IP allowlist
tier_internal_requiredEndpoint tidak tersedia untuk PSPJangan panggil endpoint ini

404 Not Found

CodeDeskripsiTindakan
merchant_not_foundMerchant tidak ada, tidak aktif, tidak punya NMID, atau milik bank lainVerifikasi NMID; merchant mungkin belum aktif atau bukan milik bank kamu

429 Too Many Requests

CodeDeskripsiTindakan
rate_limit_exceededMelebihi rate limit per API keyTunggu Retry-After header (dalam detik), lalu retry

Header yang disertakan pada 429:

Retry-After: 30
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1716453000

5xx — Server Errors

HTTPCodeDeskripsiTindakan
500internal_server_errorError tidak terduga di sisi KeslesRetry dengan backoff; jika persisten, hubungi tim Kesles dengan X-Request-ID
502upstream_errorDependency internal Kesles tidak meresponsRetry dengan backoff
503service_unavailableMaintenance atau overloadTunggu Retry-After jika ada, lalu retry
Retry Policy untuk 5xx

Implementasikan exponential backoff untuk semua 5xx:

  1. Retry segera
  2. 1 detik
  3. 5 detik
  4. 30 detik
  5. 2 menit (berhenti setelah ini, alert)

Jangan retry 4xx (kecuali 429 dengan Retry-After).


Tracing & Debugging

Selalu sertakan X-Request-ID (uuid v4) di setiap request. Ketika melaporkan error ke tim Kesles, sertakan:

  • X-Request-ID dari request yang gagal
  • Timestamp request
  • HTTP status code dan error code yang diterima
  • Bank code dan API Key ID kamu