CekMutasi.Co.Id mendukung komunikasi data lintas platform melalui konektivitas RESTful API. API terbagi menjadi 2 metode, pertama adalah Callback dan kedua adalah HTTP Request dan keduanya memanfaatkan format data JSON.

Pada metode Callback, sistem CekMutasi.Co.Id akan melakukan pengiriman notifikasi yang berisi detail transaksi ke URL Callback yang telah ditentukan oleh pengguna sedangkan pada metode HTTP Request sistem pengguna melakukan request data ke sistem CekMutasi.Co.Id dan sistem CekMutasi.Co.Id memberikan respon data yang diminta.

Library/Package integrasi tersedia pada halaman Github https://github.com/trijayadigital/cekmutasi



Callback

Agar sistem Anda menerima notifikasi transaksi melalui callback API, Anda hanya perlu menambahkan URL callback Anda pada kolom "URL IPN/Callback" saat menambahkan rekening. Ada juga dapat mengedit akun rekening Anda untuk menambahkan URL Callback.

Setiap ada transaksi baru yang masuk, sistem akan mengirim data transaksi dengan method POST dan struktur JSON sebagai berikut :

{
    "action": "payment_report",
    "content": {
        "service_name": "Bank BRI",
        "service_code": "bri",
        "account_number": "1234567890",
        "account_name": "Nama Pemilik Rekening",
        "data": [
            {
            	"id": 1,
                "unix_timestamp": 123456789,
                "type": "credit",
                "amount": "1400026.00",
                "description": "Berita transfer",
                "balance": "1500000.00"
            },
            {
            	"id": 2,
                "unix_timestamp": 987654321,
                "type": "debit",
                "amount": "50000.00",
                "description": "Berita transfer",
                "balance": "1450000.00"
            }
        ]
    }
}

Dan berikut adalah contoh script PHP untuk menerima data notifikasi (PHP 5.6+)

<?php

// include file koneksi database
require('koneksi.php');

$cekmutasi = array(
    "api_signature" => "Masukkan API Signature Anda disini"
);

$incomingApiSignature = isset($_SERVER['HTTP_API_SIGNATURE']) ? $_SERVER['HTTP_API_SIGNATURE'] : '';

// validasi API Signature
if( !hash_equals($cekmutasi['api_signature'], $incomingApiSignature) ) {
    exit("Invalid Signature");
}

$post = file_get_contents("php://input");
$json = json_decode($post);

if( json_last_error() !== JSON_ERROR_NONE ) {
    exit("Invalid JSON");
}

if( $json->action == "payment_report" )
{
    foreach( $json->content->data as $data )
    {
        # Waktu transaksi dalam format unix timestamp
        $time = $data->unix_timestamp;

        # Tipe transaksi : credit / debit
        $type = $data->type;

        # Jumlah (2 desimal) : 50000.00
        $amount = $data->amount;

        # Berita transfer
        $description = $data->description;

        # Saldo rekening (2 desimal) : 1500000.00
        $balance = $data->balance;
        
        if( $type == "credit" ) // dana masuk
        {
            $sql = "SELECT * FROM tabel_invoice WHERE jumlah_tagihan = '".$conn->real_escape_string($amount)."' AND status = 'UNPAID' ORDER BY id ASC LIMIT 1";
            if( ($exec = $conn->query($sql)) )
            {
                while( $invoice = $exec->fetch_object() )
                {
                    // Invoice dengan nominal ini ditemukan, lanjutkan proses
                    // contoh proses update status pembayaran invoice UNPAID -> PAID
                    $update = "UPDATE tabel_invoice SET status = 'PAID' WHERE id = {$invoice->id}";
                    $conn->query($update) or die($conn->error);
                }
            }
        }
    }
}
?>


HTTP REQUEST

Versi : 1.0

Base URL : https://api.cekmutasi.co.id/v1

HTTP Request memanfaatkan fungsi cURL (atau sejenisnya) untuk mengirim request ke API Endpoint CekMutasi.Co.Id dengan beberapa parameter tambahan. Berikut daftar API Endpoint yang tersedia beserta parameternya.

[POST] /bank/add

Digunakan untuk menambahkan rekening baru ke akun

Parameter Tipe Nilai
service_code String

bni = Bank BNI

bca = Bank BCA

bri = Bank BRI

mandiri_online = Bank Mandiri

btpn_jenius = Bank BTPN (Jenius)

package_code String

basic = Paket Basic

professional = Paket Professional

enterprise = Paket Enterprise

username String User ID/Username internet banking
password String Password internet banking
account_number String Nomor rekening
account_name String Nama pemilik rekening
ipn_url String Callback URL
status String

ACTIVE = Status Aktif

INACTIVE = Status Tidak Aktif

Contoh script PHP dan response yang diberikan sistem

<?php

$data = array(
    "service_code"      => "bca",
    "package_code"      => "basic",
    "username"          => "testing",
    "password"          => "password",
    "account_number"    => "1234567890",
    "account_name"      => "Nama Pemilik",
    "ipn_url"           => "https://mywebsite.com/callback",
    "status"            => "ACTIVE"
);

$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_URL             => "https://api.cekmutasi.co.id/v1/bank/add",
    CURLOPT_POST            => true,
    CURLOPT_POSTFIELDS      => http_build_query($data),
    CURLOPT_HTTPHEADER      => ["Api-Key: (APIKEY-ANDA)", "Accept: application/json"], // tanpa tanda kurung
    CURLOPT_RETURNTRANSFER  => true,
    CURLOPT_HEADER          => false,
    CURLOPT_IPRESOLVE       => CURL_IPRESOLVE_V4,
));
$result = curl_exec($ch);
curl_close($ch);

echo $result;

?>

Berikut adalah contoh respon SUKSES

{
    "success": true,
    "error_message": "",
    "data": {
        "id": 1234,
        "service_code": "bca",
        "service_name": "Bank BCA",
        "account_number": "1234567890",
        "account_name": "Nama Pemilik",
        "balance": 0,
        "package": "Basic",
        "ipn_url": "https://mywebsite.com/callback",
        "status": "ACTIVE"
    }
}

Berikut adalah contoh respon GAGAL

{
    "success": false,
    "error_message": "Access to this credential is not enabled"
}

[POST] /bank/update

Digunakan untuk memperbarui info rekening yang terdaftar di akun

Parameter Tipe Nilai
id Integer ID rekening bank
password String Memperbarui password yang tersimpan
account_number String Memperbarui nomor rekening
account_name String Memperbarui nama pemilik rekening
ipn_url String Memperbarui callback/IPN URL
status String Memperbarui status rekening

ACTIVE = Status Aktif

INACTIVE = Status Tidak Aktif

Contoh script PHP dan response yang diberikan sistem

<?php

$data = array(
    "id"        => 1234,
    "status"    => "INACTIVE"
);

$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_URL             => "https://api.cekmutasi.co.id/v1/bank/update",
    CURLOPT_POST            => true,
    CURLOPT_POSTFIELDS      => http_build_query($data),
    CURLOPT_HTTPHEADER      => ["Api-Key: (APIKEY-ANDA)", "Accept: application/json"], // tanpa tanda kurung
    CURLOPT_RETURNTRANSFER  => true,
    CURLOPT_HEADER          => false,
    CURLOPT_IPRESOLVE       => CURL_IPRESOLVE_V4,
));
$result = curl_exec($ch);
curl_close($ch);

echo $result;

?>

Berikut adalah contoh respon SUKSES

{
    "success": true,
    "error_message": "",
    "data": {
        "id": 1234,
        "service_code": "bca",
        "service_name": "Bank BCA",
        "account_number": "1234567890",
        "account_name": "Nama Pemilik",
        "balance": 0,
        "package": "Basic",
        "ipn_url": "https://mywebsite.com/callback",
        "status": "INACTIVE"
    }
}

Berikut adalah contoh respon GAGAL

{
    "success": false,
    "error_message": "Access to this credential is not enabled"
}

[POST] /bank/delete

Digunakan untuk menghapus rekening yang terdaftar di akun. Mutasi rekening yang tersimpan juga akan ikut terhapus

Parameter Tipe Nilai
id Integer ID rekening bank yang ingin dihapus

Contoh script PHP dan response yang diberikan sistem

<?php

$data = array(
    "id"        => 1234,
);

$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_URL             => "https://api.cekmutasi.co.id/v1/bank/delete",
    CURLOPT_POST            => true,
    CURLOPT_POSTFIELDS      => http_build_query($data),
    CURLOPT_HTTPHEADER      => ["Api-Key: (APIKEY-ANDA)", "Accept: application/json"], // tanpa tanda kurung
    CURLOPT_RETURNTRANSFER  => true,
    CURLOPT_HEADER          => false,
    CURLOPT_IPRESOLVE       => CURL_IPRESOLVE_V4,
));
$result = curl_exec($ch);
curl_close($ch);

echo $result;

?>

Berikut adalah contoh respon SUKSES

{
    "success": true,
    "error_message": ""
}

Berikut adalah contoh respon GAGAL

{
    "success": false,
    "error_message": "Access to this credential is not enabled"
}

[GET] /bank/list

Digunakan untuk mendapatkan daftar rekening bank yang terdaftar di akun

Parameter Tipe Nilai
service_code String Filter berdasarkan kode layanan
account_number String Filter berdasarkan nomor rekening

Contoh script PHP dan response yang diberikan sistem

<?php

$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_URL             => "https://api.cekmutasi.co.id/v1/bank/list?service_code=bca",
    CURLOPT_HTTPHEADER      => ["Api-Key: (APIKEY-ANDA)", "Accept: application/json"], // tanpa tanda kurung
    CURLOPT_RETURNTRANSFER  => true,
    CURLOPT_HEADER          => false,
    CURLOPT_IPRESOLVE       => CURL_IPRESOLVE_V4,
));
$result = curl_exec($ch);
curl_close($ch);

echo $result;

?>

Berikut adalah contoh respon SUKSES

{
    "success": true,
    "error_message": "",
    "data": [
        {
            "id": 1234,
            "service_code": "bca",
            "service_name": "Bank BCA",
            "account_number": "1234567890",
            "account_name": "Nama Pemilik",
            "balance": 0,
            "package": "Basic",
            "ipn_url": "https://mywebsite.com/callback",
            "status": "ACTIVE"
        }
    ]
}

Berikut adalah contoh respon GAGAL

{
    "success": false,
    "error_message": "Access to this credential is not enabled"
}

[POST] /bank/search

Digunakan untuk melakukan pencarian data mutasi rekening Bank dengan filter sesuai parameter yang ditentukan. Semakin banyak filter yang digunakan, proses pencarian akan menjadi lebih spesifik dan lebih tepat

Parameter Tipe Nilai
date Array

from = Tanggal awal. Format Y-m-d H:i:s. Contoh : 2018-04-09 00:00:00

to = Tanggal akhir. Format Y-m-d H:i:s. Contoh : 2018-04-09 23:59:59

amount Decimal (2)

Desimal dengan 2 angka dibelakang koma. Contoh: 50000.00

type String

Jenis transaksi.

credit = Transaksi masuk

debit = Transaksi keluar

description String

Keterangan transaksi. Contoh: Invoice 1234

service_code String

Kode layanan. contoh :

bri = Bank BRI

bca = Bank BCA

bni = Bank BNI

mandiri = Bank Mandiri

btpn_jenius = BTPN Jenius

mandiri_online = Mandiri Online

account_number String

Nomor rekening. Contoh: 1234567890

Contoh script PHP dan response yang diberikan sistem

<?php

$data = array(
            "search"  => array(
                    "date"            => array(
                            "from"    => date("Y-m-d")." 00:00:00",
                            "to"      => date("Y-m-d")." 23:59:59"
                            ),
                    "service_code"    => "bri",
                    "account_number"  => "1234567890",
                    "amount"          => "50123.00"
            )
);

$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_URL             => "https://api.cekmutasi.co.id/v1/bank/search",
    CURLOPT_POST            => true,
    CURLOPT_POSTFIELDS      => http_build_query($data),
    CURLOPT_HTTPHEADER      => ["Api-Key: (APIKEY-ANDA)", "Accept: application/json"], // tanpa tanda kurung
    CURLOPT_RETURNTRANSFER  => true,
    CURLOPT_HEADER          => false,
    CURLOPT_IPRESOLVE		=> CURL_IPRESOLVE_V4,
));
$result = curl_exec($ch);
curl_close($ch);

echo $result;

?>

Script diatas melakukan pencarian data mutasi dengan filter tanggal hari ini pukul 00:00:00 sampai hari ini pukul 23:00:00 dari rekening Bank BRI nomor rekening 1234567890 dengan nominal 50123.00

Berikut adalah contoh respon SUKSES

{
    "success": true,
    "error_message": "",
    "response": [
        {
        	"id": 1,
            "service_code": "bri",
            "account_number": "1234567890",
            "unix_timestamp": 8454725434,
            "type": "credit",
            "amount": "50123.00",
            "description": "Berita transfer",
            "balance": "1400600.00"
        },
        {
        	"id": 2,
            "service_code": "bri",
            "account_number": "1234567890",
            "unix_timestamp": 8452437546,
            "type": "debit",
            "amount": "50123.00",
            "description": "Berita transfer",
            "balance": "130600.00"
        }
    ]
}

Berikut adalah contoh respon GAGAL

{
    "success": false,
    "error_message": "Access to this credential is not enabled",
    "response": []
}

[POST] /paypal/search

Digunakan untuk melakukan pencarian data mutasi rekening PayPal dengan filter sesuai parameter yang ditentukan. Semakin banyak filter yang digunakan, proses pencarian akan menjadi lebih spesifik dan lebih tepat

Parameter Tipe Nilai
date Array

from = Tanggal awal. Format Y-m-d H:i:s. Contoh : 2018-04-09 00:00:00

to = Tanggal akhir. Format Y-m-d H:i:s. Contoh : 2018-04-09 23:59:59

username String

Username rekening paypal. Contoh: mail_api1.example.com

amount Decimal (2)

Desimal dengan 2 angka dibelakang koma. Contoh: 10.50

email String

Email pengirim. Contoh: [email protected]

transactionid String

ID transaksi. Contoh : XGDGHD3474GGD6645

currency String

3 karakter kode Mata Uang. Contoh: USD

Contoh script PHP dan response yang diberikan sistem

<?php

$data = array(
            "search"  => array(
                    "date"            => array(
                            "from"    => date("Y-m-d")." 00:00:00",
                            "to"      => date("Y-m-d")." 23:59:59"
                            ),
                    "username"        => "mail_api1.example.com",
                    "amount"          => "10.50"
                    "currency"        => "USD"
            )
);

$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_URL             => "https://api.cekmutasi.co.id/v1/paypal/search",
    CURLOPT_POST            => true,
    CURLOPT_POSTFIELDS      => http_build_query($data),
    CURLOPT_HTTPHEADER      => ["Api-Key: (APIKEY-ANDA)", "Accept: application/json"], // tanpa tanda kurung
    CURLOPT_RETURNTRANSFER  => true,
    CURLOPT_HEADER          => false,
    CURLOPT_IPRESOLVE		=> CURL_IPRESOLVE_V4,
));
$result = curl_exec($ch);
curl_close($ch);

echo $result;

?>

Script diatas melakukan pencarian data mutasi dengan filter tanggal hari ini pukul 00:00:00 sampai hari ini pukul 23:00:00 dari rekening PayPal mail_api1.example.com dengan nominal 10.50 USD

Berikut adalah contoh respon SUKSES

{
    "success": true,
    "error_message": "",
    "response": [
        {
        	"id": 1,
            "username": "mail_api1.example.com",
            "unix_timestamp": 8454725434,
            "type": "payment",
            "email": "[email protected]",
            "name": "Nama Pengirim",
            "transactionid": "XBGDGDYRG34746DG",
            "status": "completed",
            "amount": "10.50",
            "fee": "0.43",
            "net": "10.07"
        },
        {
        	"id": 2,
            "username": "mail_api1.example.com",
            "unix_timestamp": 864825263484,
            "type": "purchase",
            "email": "[email protected]",
            "name": "Nama Penerima",
            "transactionid": "ZFHFH48756HSD",
            "status": "completed",
            "amount": "7.50",
            "fee": "0.00",
            "net": "7.50"
        }
    ]
}

Berikut adalah contoh respon GAGAL

{
    "success": false,
    "error_message": "Access to this credential is not enabled",
    "response": []
}


Plugin Siap Pakai

Berikut ini beberapa plugin siap pakai yang kami sediakan untuk menunjang kebutuhan integrasi. Lupakan coding sistem manual

Software Versi Rilis Requirements Download Dokumentasi
WHMCS 2.0.2
[versi lain]
13-02-2020 16:00 - WHMCS v7+ [ZIP] - 659/752 total Baca Dokumentasi
WooCommerce 2.2.4
[versi lain]
16-02-2021 20:18 - WooCommerce 3.1+
- PHP 5.6+
[ZIP] - 101/983 total Baca Dokumentasi