### 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.