HAYBI · H2H API
Host-to-Host API
Integrasi server-to-server dengan kredensial per-agen. Setiap agen punya api_key sendiri — cocok untuk sistem multi-akun dan reseller dengan server mandiri.
Base URL: haybi.id/api/h2h Format: JSON Auth: MD5 Signature Maintenance: 23:45 – 00:15 WIB
🔒 Kebijakan Keamanan Jalur Transaksi

HAYBI mendukung transaksi fleksibel tanpa wajib IP Whitelist (keamanan dilindungi penuh oleh enkripsi MD5 Signature). Namun, bagi Anda yang memiliki IP Statis, kami sangat merekomendasikan untuk menggunakan Jalur IP (Sangat Aman). Silakan hubungi Customer Service kami untuk mendaftarkan IP statis Anda agar sistem kami hanya memproses transaksi yang berasal dari server Anda.

Autentikasi
Signature MD5
Setiap request wajib menyertakan username, ref_id, dan sign. Signature dihitung dari kombinasi ketiga nilai ini — termasuk untuk endpoint non-transaksi seperti cek saldo dan daftar produk.
🔑 Kredensial
username Kode agen Anda (contoh: AGN1ASAA)
api_key Diberikan admin saat aktivasi akun
ref_id ID unik per request (Anda yang tentukan)
Formula Signature
sign = md5(username + api_key + ref_id)
⚠️ ref_id harus unik per transaksi. Untuk endpoint cek saldo, cek harga, dan daftar produk, ref_id boleh diisi bebas (misal timestamp) karena tidak disimpan sebagai ID transaksi.

Referensi
Format Response
Semua endpoint mengembalikan JSON dengan struktur yang konsisten.
sukses pending error
ℹ️ Response endpoint Transaksi selalu pending saat pertama kali dikirim — walau proses sebenarnya cepat. Hasil final (sukses/gagal) dikirim via callback atau bisa dicek lewat endpoint Cek Status.

Endpoint
Cek Saldo
Ambil informasi saldo deposit akun agen Anda saat ini.
POST /api/h2h/cek-saldo
NamaTipeKeterangan
username* string Kode agen Anda
ref_id* string Bebas, unik — hanya dipakai untuk hitung signature
sign* string MD5(username + api_key + ref_id)
{
  "username": "AGN1ASAA",
  "ref_id": "HAYBI-00192",
  "sign": "8ab9bfd397d91d182bf9d8d..." // md5(username+api_key+ref_id)
}

Endpoint
Cek Harga
Cek harga dan ketersediaan satu produk berdasarkan kode produk.
POST /api/h2h/cek-harga
NamaTipeKeterangan
username* string Kode agen Anda
ref_id* string Bebas, unik
produk* string Kode produk (contoh: TS5, CEKDANA)
sign* string MD5(username + api_key + ref_id)
{
  "username": "AGN1ASAA",
  "ref_id": "HAYBI-00193",
  "produk": "TS5",
  "sign": "8ab9bfd397d91d182bf9d8d..." // md5(username+api_key+ref_id)
}

Endpoint
Daftar Produk
Ambil seluruh produk aktif beserta harga. Bisa difilter berdasarkan kategori dan operator.
POST /api/h2h/produk
NamaTipeKeterangan
username* string Kode agen Anda
ref_id* string Bebas, unik
sign* string MD5(username + api_key + ref_id)
kategoriopsional string Filter kategori: Pulsa, Data, PLN, E-Money, Game
operatoropsional string Filter operator: TELKOMSEL, DANA, dll
{
  "username": "AGN1ASAA",
  "ref_id": "HAYBI-00194",
  "kategori": "E-Money", // opsional
  "operator": "DANA", // opsional
  "sign": "8ab9bfd397d91d182bf9d8d..." // md5(username+api_key+ref_id)
}

Endpoint
Transaksi
Kirim order transaksi. Response awal selalu pending — hasil akhir via callback atau polling cek status.
POST /api/h2h/transaksi
⚠️ ref_id transaksi tidak boleh duplikat. Jika ref_id yang sama dikirim ulang, sistem akan menolak dengan rc 05. Pastikan setiap transaksi punya ref_id yang benar-benar unik.
NamaTipeKeterangan
username* string Kode agen Anda
ref_id* string ID transaksi unik dari sistem Anda — dipakai juga untuk hitung signature
produk* string Kode produk (contoh: TS5, DANAD)
no_tujuan* string Nomor tujuan (HP, ID game, nomor rekening, dll)
sign* string MD5(username + api_key + ref_id)
{
  "username": "AGN1ASAA",
  "ref_id": "TRX99182310", // refid transaksi — dipakai juga utk hitung sign
  "produk": "TS5",
  "no_tujuan": "081234567890",
  "sign": "8ab9bfd397d91d182bf9d8d..." // md5(username+api_key+ref_id)
}

Endpoint
Cek Status
Cek status transaksi yang sebelumnya dikirim. Gunakan ini untuk polling manual jika tidak menggunakan callback.
POST /api/h2h/cek-status
NamaTipeKeterangan
username* string Kode agen Anda
ref_id* string ref_id transaksi yang ingin dicek
sign* string MD5(username + api_key + ref_id)
{
  "username": "AGN1ASAA",
  "ref_id": "TRX99182310", // refid transaksi yg mau dicek — dipakai juga utk hitung sign
  "sign": "8ab9bfd397d91d182bf9d8d..." // md5(username+api_key+ref_id)
}

Referensi
Kode RC
Setiap response menyertakan field rc yang menunjukkan hasil spesifik dari request.
00
Sukses
01
Pending — transaksi sedang diproses
02
Gagal — lihat field pesan untuk detail
05
ref_id sudah pernah digunakan
06
Saldo tidak cukup
10
Username tidak ditemukan atau tidak aktif
11
Signature tidak valid
14
Produk tidak ditemukan atau tidak aktif
41
Nomor tujuan masih ada transaksi pending
90
Maintenance window (23:45–00:15 WIB)
99
Internal server error

Referensi
Callback
Jika Anda mendaftarkan callback_url ke admin HAYBI, sistem akan mengirim POST request otomatis ke URL tersebut saat status transaksi berubah menjadi sukses atau gagal — tanpa perlu polling manual.
ℹ️ Payload callback identik dengan response endpoint Cek Status. Daftarkan URL callback Anda ke admin untuk aktivasi fitur ini.
Referensi
Contoh Script PHP
Script PHP siap pakai untuk mengintegrasikan API HAYBI ke sistem Anda. Cukup salin, isi kredensial, dan panggil fungsinya.
Script ini sudah diverifikasi dan digunakan oleh agen aktif HAYBI. Tidak perlu library tambahan — hanya butuh PHP dengan ekstensi curl.
  1. Isi $username dengan Kode Agen Anda dan $api_key dari dashboard admin.
  2. Panggil fungsi sesuai kebutuhan: haybi_transaksi(), haybi_cek_saldo(), atau haybi_cek_status().
  3. Cek nilai rc pada response — 00 = Sukses, 01 = Pending, selain itu = Error.
PHP · haybi_curl()
function haybi_curl($url, $data)
{
    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => $data, // Array langsung (form-data)
        CURLOPT_TIMEOUT        => 30,
    ]);

    $response = curl_exec($ch);
    curl_close($ch);

    return json_decode($response, true) ?? [];
}
PHP · haybi_transaksi()
function haybi_transaksi($kode_produk, $no_tujuan, $ref_id)
{
    $username = 'KODE_AGEN_ANDA';
    $api_key  = 'API_KEY_ANDA';
    $sign     = md5($username . $api_key . $ref_id);

    return haybi_curl('https://haybi.id/api/h2h/transaksi', [
        'username'  => $username,
        'ref_id'    => $ref_id,
        'sign'      => $sign,
        'produk'    => $kode_produk,
        'no_tujuan' => $no_tujuan,
    ]);
}

// --- Cara Penggunaan ---
$ref_id = 'TRX-' . time();
$result = haybi_transaksi('TS10', '08123456xxxx', $ref_id);

if (($result['rc'] ?? '') === '00') {
    echo 'Sukses! SN: ' . ($result['sn'] ?? '-');
} elseif (($result['rc'] ?? '') === '01') {
    echo 'Pending, silakan cek berkala menggunakan ref_id: ' . $ref_id;
} else {
    echo 'Gagal: ' . ($result['pesan'] ?? 'Error tidak diketahui');
}
PHP · haybi_cek_saldo()
function haybi_cek_saldo()
{
    $username = 'KODE_AGEN_ANDA';
    $api_key  = 'API_KEY_ANDA';
    $ref_id   = 'CEK-' . time();
    $sign     = md5($username . $api_key . $ref_id);

    return haybi_curl('https://haybi.id/api/h2h/cek-saldo', [
        'username' => $username,
        'ref_id'   => $ref_id,
        'sign'     => $sign,
    ]);
}

// --- Cara Penggunaan ---
$saldo = haybi_cek_saldo();
echo 'Saldo Anda: ' . ($saldo['saldo_fmt'] ?? 'Rp 0');
PHP · haybi_cek_status()
function haybi_cek_status($ref_id)
{
    $username = 'KODE_AGEN_ANDA';
    $api_key  = 'API_KEY_ANDA';
    $sign     = md5($username . $api_key . $ref_id);

    return haybi_curl('https://haybi.id/api/h2h/cek-status', [
        'username' => $username,
        'ref_id'   => $ref_id,
        'sign'     => $sign,
    ]);
}

// --- Cara Penggunaan ---
$ref_id = 'TRX-001';
$status = haybi_cek_status($ref_id);

if (($status['rc'] ?? '') === '00') {
    echo 'Sukses! SN: ' . ($status['sn'] ?? '-');
} elseif (($status['rc'] ?? '') === '01') {
    echo 'Transaksi Masih Pending';
} else {
    echo 'Gagal: ' . ($status['pesan'] ?? 'Error');
}
ℹ️ Simpan kode ini di endpoint publik Anda dan daftarkan ke Admin. Sistem akan otomatis mengirimkan POST request ke URL tersebut saat status transaksi terupdate.
PHP · callback.php
// callback.php
$payload = json_decode(file_get_contents('php://input'), true) ?: $_POST;

$ref_id = $payload['ref_id'] ?? '';
$rc     = $payload['rc']     ?? '';
$sn     = $payload['sn']     ?? '';

if ($rc === '00') {
    // TODO: Update status transaksi menjadi SOKSES di database Anda
} else {
    // TODO: Update status transaksi menjadi GAGAL & pengembalian saldo
}

http_response_code(200);
echo 'OK';
© 2026 HAYBI · H2H API v1.0