Cutiezy Workspace / Dokumentasi
Production
Cutiezy • API Docs

QRIS Dinamis

Generate QRIS dengan nominal transaksi dari QRIS merchant yang sudah disimpan user melalui web.

Alur penggunaan

  1. User login ke web dan upload QRIS statis pada menu QRIS Dinamis.
  2. Sistem membaca QR dan menyimpan payload QRIS sebagai sumber default user.
  3. Integrator memanggil endpoint API di bawah hanya dengan nominal transaksi.
  4. Sistem menghasilkan payload QRIS dinamis dan PNG sementara. Gambar akan dibersihkan otomatis sesuai masa retensi.
QRIS sumber wajib disiapkan dari halaman web terlebih dahulu. Endpoint API tidak menerima upload gambar QRIS.

Endpoint

Method
POST
URL
https://api.cutiezy.id/api/qris/create

Autentikasi

Gunakan API key akun. IP pemanggil juga harus terdaftar pada slot IP yang aktif.

X-API-Key: czw_xxxxxxxxxxxxxxxxx
Accept: application/json

API key juga didukung melalui Authorization: Bearer ... atau fallback apikey, tetapi header X-API-Key direkomendasikan.

Body request

ParameterTipeWajibKeterangan
amountintegerYa*Nominal rupiah, bilangan bulat > 0. Contoh: 25000.
totalintegerAliasAlias dari amount. Kirim salah satu saja.

Body dapat dikirim sebagai JSON atau form-urlencoded.

Contoh cURL

curl -X POST "https://api.cutiezy.id/api/qris/create" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"amount":25000}'

Contoh PHP

<?php
$endpoint = 'https://api.cutiezy.id/api/qris/create';
$apiKey = 'YOUR_API_KEY';

$ch = curl_init($endpoint);
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'X-API-Key: ' . $apiKey,
        'Accept: application/json',
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['amount' => 25000]),
]);

$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);

Contoh JavaScript

const response = await fetch('https://api.cutiezy.id/api/qris/create', {
  method: 'POST',
  headers: {
    'X-API-Key': 'YOUR_API_KEY',
    'Accept': 'application/json',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ amount: 25000 })
});

const data = await response.json();

Response sukses · HTTP 201

{
  "success": true,
  "ok": true,
  "message": "QRIS dinamis berhasil dibuat.",
  "data": {
    "id": 123,
    "source_id": 7,
    "amount": 25000,
    "qris_string": "000201010212...6304ABCD",
    "image_url": "https://example.com/public/generated/qris/20260902/qris_xxx.png",
    "expires_at": "2026-09-03 10:00:00"
  }
}
image_url adalah gambar sementara. Simpan/unduh dari sisi integrator bila perlu sebelum masa retensinya habis.

Kode error

HTTPErrorArti
401API_KEY_REQUIRED / INVALID_API_KEYAPI key tidak ada atau tidak valid.
403IP_NOT_ALLOWEDIP request tidak terdaftar pada slot akun.
403SLOT_INACTIVE / SLOT_SUBSCRIPTION_REQUIREDSlot IP belum dapat memakai API.
409QRIS_SOURCE_REQUIREDUser belum upload QRIS melalui web.
422INVALID_QRIS_REQUESTNominal kosong/tidak valid/melebihi batas.
429RATE_LIMITEDRate limit API tercapai.
503QRIS_GENERATOR_UNAVAILABLEGenerator QR/extension server tidak tersedia.