### Transaction Creation Success Response
Source: https://klikqris.com/dokumentasi-api
Example JSON response returned upon successful transaction creation.
```json
{
"status": true,
"message": "Transaction Created Successfully",
"data": {
"order_id": "INV-123",
"nama_toko": "Nama Toko Anda",
"tanggal": "2026-07-28",
"notifwa": 1,
"mdr": "0.00",
"redirect_url": "https://klikqris.com",
"amount_uniq": "16.00",
"amount": "1000.00",
"total_amount": "1016.00",
"status": "PENDING",
"notified_expired": 0,
"qris_url": "https://klikqris.com/storage/qris_api/qris_INV-123.png",
"expired_at": "2026-07-28 06:57:10",
"paid_at": null,
"signature": "ohRISdH4ABDvOlDTUCBTEnBndwUYK0177659...",
"keterangan": "Pembayaran Invoice",
"expired_menit": "60",
"created_at": "2026-07-28 05:57:10",
"updated_at": "2026-07-28 05:57:10",
"qris_image": "data:image/png;base64,iVBORw0KGgoAAAA..."
}
}
```
--------------------------------
### GET /api/sandbox/qris/status/{order_id}
Source: https://klikqris.com/dokumentasi-api
Checks the status of a simulation transaction in the sandbox environment.
```APIDOC
## GET /api/sandbox/qris/status/{order_id}
### Description
Checks the status of a simulation transaction manually.
### Method
GET
### Endpoint
https://klikqris.com/api/sandbox/qris/status/{order_id}
### Parameters
#### Path Parameters
- **order_id** (string) - Required - The simulation order ID.
```
--------------------------------
### Transaction Status Response Samples
Source: https://klikqris.com/dokumentasi-api
Example JSON responses for different transaction states: PENDING, SUCCESS, and EXPIRED.
```json
{
"status": true,
"data": {
"order_id": "INV-123456",
"status": "PENDING",
"total_amount": 30021,
"expired_at": "2026-01-27 16:00:00"
}
}
```
```json
{
"status": true,
"data": {
"order_id": "INV-123456",
"status": "SUCCESS",
"total_amount": 30021,
"paid_at": "2026-01-27 15:45:12"
}
}
```
```json
{
"status": true,
"data": {
"order_id": "INV-123456",
"status": "EXPIRED",
"total_amount": 30021
}
}
```
--------------------------------
### GET /qris/history
Source: https://klikqris.com/dokumentasi-api
Retrieves the transaction history of the merchant.
```APIDOC
## GET /qris/history
### Description
Retrieves your merchant API transaction history with optional pagination.
### Method
GET
### Endpoint
/qris/history
### Parameters
#### Query Parameters
- **page** (Integer) - Optional - Page number for pagination.
### Response
#### Success Response (200)
- **status** (Boolean) - Success status.
- **data** (Object) - Contains current_page, data array of transactions, pagination URLs, per_page, and total count.
```
--------------------------------
### Transaction Status Response Examples
Source: https://klikqris.com/dokumentasi-api
JSON responses for different transaction statuses: SUCCESS, PENDING, and EXPIRED.
```json
{
"status": true,
"message": "Transaction detail retrieved",
"data": {
"order_id": "INV-123",
"nama_toko": "Nama Toko Anda",
"tanggal": "2026-07-28",
"notifwa": 1,
"mdr": "0.00",
"redirect_url": "https://klikqris.com",
"amount_uniq": "16.00",
"amount": "1000.00",
"total_amount": "1016.00",
"status": "SUCCESS",
"qris_url": null,
"expired_at": "2026-07-28 06:57:10",
"paid_at": "2026-07-28 05:57:10",
"signature": "ohRISdH4ABDvOlDTUCBTEnBndwUYK0177659...",
"keterangan": "Pembayaran Invoice",
"expired_menit": "60",
"created_at": "2026-07-28 05:52:10",
"updated_at": "2026-07-28 05:57:10",
"qris_image": null
}
}
```
```json
{
"status": true,
"message": "Transaction detail retrieved",
"data": {
"order_id": "INV-123",
"nama_toko": "Nama Toko Anda",
"tanggal": "2026-07-28",
"notifwa": 1,
"mdr": "0.00",
"redirect_url": "https://klikqris.com",
"amount_uniq": "16.00",
"amount": "1000.00",
"total_amount": "1016.00",
"status": "PENDING",
"qris_url": "https://klikqris.com/storage/qris_api/qris_INV-123.png",
"expired_at": "2026-07-28 06:57:10",
"paid_at": null,
"signature": "ohRISdH4ABDvOlDTUCBTEnBndwUYK0177659...",
"keterangan": "Pembayaran Invoice",
"expired_menit": "60",
"created_at": "2026-07-28 05:57:10",
"updated_at": "2026-07-28 05:57:10",
"qris_image": "data:image/png;base64,iVBORw0KGgoAAAA..."
}
}
```
```json
{
"status": true,
"message": "Transaction detail retrieved",
"data": {
"order_id": "INV-123",
"nama_toko": "Nama Toko Anda",
"tanggal": "2026-07-28",
"notifwa": 1,
"mdr": "0.00",
"redirect_url": "https://klikqris.com",
"amount_uniq": "16.00",
"amount": "1000.00",
"total_amount": "1016.00",
"status": "EXPIRED",
"qris_url": null,
"expired_at": "2026-07-28 04:57:10",
"paid_at": null,
"signature": "ohRISdH4ABDvOlDTUCBTEnBndwUYK0177659...",
"keterangan": "Pembayaran Invoice",
"expired_menit": "60",
"created_at": "2026-07-28 03:57:10",
"updated_at": "2026-07-28 04:57:10",
"qris_image": null
}
}
```
--------------------------------
### GET /qris/status/{order_id}
Source: https://klikqris.com/dokumentasi-api
Retrieves the current status of a specific transaction manually.
```APIDOC
## GET /qris/status/{order_id}
### Description
Used to check the latest status of a specific transaction ID manually outside of the webhook system.
### Method
GET
### Endpoint
/qris/status/{order_id}
### Parameters
#### Path Parameters
- **order_id** (string) - Required - The unique transaction ID to check.
### Response
#### Success Response (200)
- **status** (boolean) - Indicates if the request was successful.
- **message** (string) - Status message.
- **data** (object) - Transaction details including status (SUCCESS, PENDING, EXPIRED), amounts, and timestamps.
```
--------------------------------
### GET /api/qrisv2/status/{id_merchant}/{order_id}
Source: https://klikqris.com/dokumentasi-api
Checks the payment status of a specific transaction.
```APIDOC
## GET /api/qrisv2/status/{id_merchant}/{order_id}
### Description
Check the payment status of a specific transaction using the Merchant ID and Order ID.
### Method
GET
### Endpoint
https://klikqris.com/api/qrisv2/status/{id_merchant}/{order_id}
### Parameters
#### Path Parameters
- **id_merchant** (String) - Required - Your KlikQRIS Merchant ID.
- **order_id** (String) - Required - The unique invoice ID.
```
--------------------------------
### Retrieve Historical Transaction Data
Source: https://klikqris.com/dokumentasi-api
Example JSON response for the historical data endpoint, showing transaction details and pagination metadata.
```json
{
"status": true,
"data": {
"current_page": 1,
"data": [
{
"order_id": "INV-123",
"created_at": "2026-01-16 22:22:43",
"total_amount": "2112.00",
"status": "SUCCESS",
"type": "DANA",
"keterangan": "coba webhook",
"via": "API"
},
{
"order_id": "INV-23233",
"created_at": "2026-01-16 22:22:14",
"total_amount": "2208.00",
"status": "PENDING",
"via": "API"
}
],
"first_page_url": "https://klikqris.com/api/qris/history?page=1",
"next_page_url": null,
"per_page": 30,
"total": 23
}
}
```
--------------------------------
### GET /api/qrisv2/status/{merchant_id}/{order_id}
Source: https://klikqris.com/dokumentasi-api
Retrieves the current status of a specific QRIS transaction.
```APIDOC
## GET /api/qrisv2/status/{merchant_id}/{order_id}
### Description
Retrieves the status of a transaction using the merchant ID and order ID.
### Method
GET
### Endpoint
https://klikqris.com/api/qrisv2/status/{merchant_id}/{order_id}
### Parameters
#### Path Parameters
- **merchant_id** (string) - Required - The unique ID of the merchant.
- **order_id** (string) - Required - The unique order ID.
### Response
#### Success Response (200)
- **status** (boolean) - Indicates if the request was successful.
- **data** (object) - Contains order_id, status, total_amount, and status-specific fields like expired_at or paid_at.
```
--------------------------------
### Webhook JSON Payload Structure
Source: https://klikqris.com/dokumentasi-api
Example of the JSON data sent to your webhook URL when a transaction status changes to SUCCESS or EXPIRED.
```json
{
"order_id": "DIRECT-176835469862-8460-202601252147",
"status": "PAID",
"amount": 1000,
"total_amount": 1215,
"payment_date": "2026-01-25 21:48:01",
"created_at": "2026-01-25 21:47:42",
"updated_at": "2026-01-25 21:48:01",
"keterangan": "Pembayaran Paket A",
"direct_url": "https://klikqris.com/payqris/176835469862/INV-123456",
"signature": "8n3v9z...1738681234"
}
```
--------------------------------
### Check Transaction Status with PHP cURL
Source: https://klikqris.com/dokumentasi-api
Perform a GET request to retrieve the current status of a specific transaction using the merchant ID and order ID.
```php
$url = 'https://klikqris.com/api/qrisv2/status/MERCHANT_ID_ANDA/INV-123456';
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'x-api-key: API_KEY_ANDA',
'id_merchant: MERCHANT_ID_ANDA'
),
));
$response = curl_exec($curl);
```
--------------------------------
### POST /api/sandbox/qris/create
Source: https://klikqris.com/dokumentasi-api
Creates a new simulation QRIS transaction in the sandbox environment.
```APIDOC
## POST /api/sandbox/qris/create
### Description
Creates a new simulation QRIS transaction for testing purposes.
### Method
POST
### Endpoint
https://klikqris.com/api/sandbox/qris/create
### Request Body
- **order_id** (string) - Required - Unique order identifier.
- **id_merchant** (string) - Required - Merchant identifier.
- **amount** (integer) - Required - Transaction amount.
- **keterangan** (string) - Optional - Transaction description.
```
--------------------------------
### POST /qris/create
Source: https://klikqris.com/dokumentasi-api
Creates a new dynamic QRIS payment request.
```APIDOC
## POST /qris/create
### Description
Creates a new QRIS bill that will be generated dynamically.
### Method
POST
### Endpoint
https://klikqris.com/api/qris/create
### Parameters
#### Request Body
- **order_id** (String) - Required - Unique ID to track your transaction (e.g., INV-1001).
- **amount** (Integer) - Required - Desired payment amount.
- **id_merchant** (String) - Required - Your Merchant ID.
- **keterangan** (String) - Optional - Transaction description.
- **callback_url** (String) - Optional - Webhook URL for transaction status notifications.
### Request Example
{
"order_id": "INV-123",
"id_merchant": "MERCHANT_ID_ANDA",
"amount": 1600,
"keterangan": "Pembayaran Invoice #123",
"callback_url": "https://websiteanda.com/webhook"
}
### Response
#### Success Response (200)
- **status** (Boolean) - Transaction status.
- **message** (String) - Success message.
- **data** (Object) - Transaction details including qris_url, total_amount, and signature.
#### Response Example
{
"status": true,
"message": "Transaction Created Successfully",
"data": {
"order_id": "INV-123",
"total_amount": "1016.00",
"status": "PENDING",
"qris_url": "https://klikqris.com/storage/qris_api/qris_INV-123.png",
"signature": "ohRISdH4ABDvOlDTUCBTEnBndwUYK0177659..."
}
}
```
--------------------------------
### Create Sandbox Transaction with PHP cURL
Source: https://klikqris.com/dokumentasi-api
Simulate a new QRIS transaction in the sandbox environment.
```php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://klikqris.com/api/sandbox/qris/create',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => '{
"order_id": "SB-INV-123",
"id_merchant": "MERCHANT_ID_ANDA",
"amount": 5000,
"keterangan": "Uji Coba Sandbox"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'x-api-key: API_KEY_ANDA',
'id_merchant: MERCHANT_ID_ANDA'
),
));
$response = curl_exec($curl);
```
--------------------------------
### POST /api/qrisv2/create
Source: https://klikqris.com/dokumentasi-api
Creates a new unique QRIS invoice for a customer.
```APIDOC
## POST /api/qrisv2/create
### Description
Endpoint for creating a new unique QRIS invoice for each customer.
### Method
POST
### Endpoint
https://klikqris.com/api/qrisv2/create
### Parameters
#### Request Body
- **order_id** (String) - Required - Unique invoice ID from your system.
- **id_merchant** (String) - Required - Your KlikQRIS Merchant ID.
- **amount** (Integer) - Required - Payment amount (e.g., 30000).
- **keterangan** (String) - Optional - Optional transaction note.
### Request Example
{
"order_id": "INV-123456",
"id_merchant": "MERCHANT_ID_ANDA",
"amount": 30000,
"keterangan": "Pembayaran Paket A"
}
### Response
#### Success Response (200)
- **status** (Boolean) - Success status.
- **message** (String) - Success message.
- **data** (Object) - Transaction details including order_id, amount, total_amount, status, direct_url, qris_url, expired_at, and signature.
```
--------------------------------
### Snap Payment Overlay Implementation
Source: https://klikqris.com/dokumentasi-api
HTML and JavaScript required to implement the overlay payment modal on your website.
```html
```
--------------------------------
### Create Transaction via PHP cURL
Source: https://klikqris.com/dokumentasi-api
PHP implementation for creating a new QRIS transaction using the cURL library.
```php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://klikqris.com/api/qrisv2/create',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode([
"order_id" => "INV-123456",
"id_merchant" => "MERCHANT_ID_ANDA",
"amount" => 30000,
"keterangan" => "Pembayaran Paket A"
]),
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'x-api-key: API_KEY_ANDA',
'id_merchant: MERCHANT_ID_ANDA'
),
));
$response = curl_exec($curl);
```
--------------------------------
### Transaction Creation Success Response
Source: https://klikqris.com/dokumentasi-api
JSON response structure returned upon successfully creating a transaction.
```json
{
"status": true,
"message": "Transaction Created Successfully",
"data": {
"order_id": "INV-123456",
"amount": "30000.00",
"total_amount": "30021.00", // TAMPILKAN TOTAL AMOUNT INI KE PEMBELI
"status": "PENDING",
"direct_url": "https://klikqris.com/payqris/MERCHANT_ID_ANDA/INV-123456",
"qris_url": "https://klikqris.com/storage/...",
"expired_at": "2026-01-22 13:00:13",
"signature": "8n3v9z...1738681234"
}
}
```
--------------------------------
### Check Sandbox Transaction Status with PHP cURL
Source: https://klikqris.com/dokumentasi-api
Retrieve the status of a simulated transaction in the sandbox environment.
```php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://klikqris.com/api/sandbox/qris/status/SB-INV-123',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'x-api-key: API_KEY_ANDA',
'id_merchant: MERCHANT_ID_ANDA'
),
));
$response = curl_exec($curl);
```
--------------------------------
### Create QRIS Transaction with PHP cURL
Source: https://klikqris.com/dokumentasi-api
Use this request to generate a dynamic QRIS tagihan. Ensure the total_amount from the response is used for display purposes as the system may add unique codes.
```php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://klikqris.com/api/qris/create',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"order_id": "INV-123",
"id_merchant": "MERCHANT_ID_ANDA",
"amount": 1600,
"keterangan": "Pembayaran Invoice #123",
"callback_url": "https://websiteanda.com/webhook"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'x-api-key: API_KEY_ANDA',
'id_merchant: MERCHANT_ID_ANDA'
),
));
$response = curl_exec($curl);
```
--------------------------------
### Webhook Payload Sample
Source: https://klikqris.com/dokumentasi-api
The JSON structure sent to your registered webhook URL when a payment status changes.
```json
{
"status": "success",
"message": "Payment received successfully",
"data": {
"order_id": "INV-123456",
"amount_request": 30000,
"amount_paid": 30021,
"payment_date": "2026-01-22 08:44:52",
"status": "PAID",
"merchant_id": "MERCHANT_ID_ANDA",
"via": "QRIS",
"signature": "8n3v9z...1738681234"
}
}
```
--------------------------------
### Manual Transaction Status Check via cURL
Source: https://klikqris.com/dokumentasi-api
Use this cURL request to manually retrieve the status of a specific transaction using the order ID.
```php
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://klikqris.com/api/qris/status/INV-123',
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'x-api-key: API_KEY_ANDA',
'id_merchant: MERCHANT_ID_ANDA'
),
));
```
=== COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.