Dokumentasi API QRIS untuk AI Agent
Dokumentasi API lookup QRIS dan EMVCo untuk integrasi AI agent.
Gunakan cek-qris sebagai service lookup QRIS
API ini dirancang agar AI agent dapat meminta analisis QRIS/EMVCo secara deterministik, tanpa melakukan scraping halaman atau menebak arti payload. Response juga membawa ringkasan community report publik untuk QR fingerprint yang sama.
Prinsip integrasi
- Public by default — lookup dasar tidak memerlukan registrasi. Endpoint read-only dapat digunakan secara publik dengan batas ukuran payload dan rate limit.
- Tanpa payment credential — kirim raw QR payload hasil decode saja. Jangan kirim PIN, OTP, nomor kartu, secret key, atau data pribadi.
- Bukan fraud verdict — CRC valid berarti integritas payload cocok, bukan berarti merchant atau pembayaran pasti aman.
Status akses API
MVP contract sudah live di aplikasi lokal sebagai public lookup tanpa login. Deployment publik untuk service ini masih bergantung pada deployment aplikasi; API key opsional dapat ditambahkan pada tahap berikutnya untuk integrasi dengan volume tinggi.
| Kebijakan | Nilai |
|---|---|
| Registrasi agent | Tidak diperlukan untuk lookup dasar |
| HTTP method | POST, read-only |
| Input | Raw QRIS/EMVCo payload |
| Output | JSON analysis terstruktur |
| Rate limit | Wajib untuk endpoint publik |
| API key | Opsional untuk tier lanjutan |
Request
POST /api/ai/lookup
Content-Type: application/json
{
"payload": "0002010102115204000053033605802ID5909TOKO DEMO6007JAKARTA630457C1"
}
Response
{
"ok": true,
"schemaVersion": "1.0",
"analysis": {
"fields": [
{ "tag": "00", "label": "Payload Format Indicator", "length": 2, "value": "01" },
{ "tag": "59", "label": "Merchant Name", "length": 9, "value": "TOKO DEMO" },
{ "tag": "60", "label": "Merchant City", "length": 7, "value": "JAKARTA" },
{ "tag": "63", "label": "CRC", "length": 4, "value": "57C1" }
],
"crc": {
"status": "valid",
"expected": "57C1",
"actual": "57C1"
},
"errors": [],
"warnings": [],
"nss": null,
"transaction": {
"amount": null,
"currency": "360",
"countryCode": "ID",
"merchantName": "TOKO DEMO",
"merchantCity": "JAKARTA",
"postalCode": null,
"referenceLabel": null,
"billNumber": null
}
},
"community": {
"status": "available",
"badVotes": 3,
"goodVotes": 8,
"totalVotes": 11,
"totalLikes": 4,
"commentsTruncated": false,
"comments": [
{
"id": 12,
"message": "Nama merchant sesuai dengan spanduk di lokasi.",
"likes": 2,
"createdAt": "2026-09-20T10:30:00.000Z"
}
]
},
"interpretation": {
"merchantLegitimacyVerified": false,
"paymentSafetyVerified": false
}
}
Safe curl request
CEK_QRIS_BASE_URL="http://localhost:3000" \
./docs/examples/ai-lookup-curl.sh
Machine-readable contracts
Aturan untuk AI agent
- Jelaskan merchant fields, amount/currency, issuer/NSS, CRC, errors, warnings, serta community
badVotes,goodVotes,commentsTruncated, dancommentsberdasarkan response. - Pertahankan status
unknownsebagaiunknown; jangan mengarang issuer dari pola angka. - Jangan menyimpulkan “QR ini aman” hanya karena CRC valid.
- Community votes dan comments adalah referensi tidak resmi, bukan verifikasi merchant atau jaminan keamanan pembayaran.
- Jika field tidak ada, tampilkan sebagai tidak tersedia, bukan menebak nilainya.
Kembali ke scanner.