================================================================================================= FLOWIX API INTEGRATION (v1) ================================================================================================= Base URL : https://flowix.web.id/api/v1 Content-Type : application/json IP Whitelist : Wajib terdaftar di Dashboard API Settings ================================================================================================= ------------------------------------------------------------------------------------------------- [0] GLOBAL AUTHENTICATION HEADERS (WAJIB UNTUK SEMUA REQUEST) ------------------------------------------------------------------------------------------------- | Header Key | Value | Keterangan | |-----------------|---------------------------------------------|-------------------------------| | api_key | sk-261a4c7c-dbdcfdc60cc0-9594e1b5f137 | API Key / Rahasia | | merchant_id | MID-DAN8385 | Identitas Bisnis | | Content-Type | application/json | Format payload | ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- [1] HEALTH CHECK ------------------------------------------------------------------------------------------------- | Endpoint | GET /health | Deskripsi | Memvalidasi konfigurasi autentikasi API Key, Merchant ID, dan IP Whitelist. | Params/Body| (Tidak ada) | Response | { "success": true, "code": 200, "message": "Test successfully.", "data": { "ip_address": "127.0.0.1" }, "meta": { "ip_client": "127.0.0.1", "execution_time_ms": 12, "server_time": "2026-04-01 12:00:00", "api_version": "1.0.0" } } ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- [2] GET PROFILE ------------------------------------------------------------------------------------------------- | Endpoint | GET /profile | Deskripsi | Mengambil informasi detail akun, sisa saldo, limit, dan tier. | Params/Body| (Tidak ada) | Response | { "success": true, "code": 200, "message": "Successfully retrieved user profile.", "data": { "merchant_id": "MID-INOVIXA999", "username": "Dani Joest", "email": "hello@inovixa.web.id", "phone": "6285122977536", "account": { "tier": "Enterprise", "status": "active", "kyc_status": "verified", "is_verified": true, "is_2fa_enabled": true }, "financials": { "balance": 15500000, "balance_limit": 1000000000000 }, "integration": { "webhook_url": "https://inovixa.web.id/callback", "ip_whitelist": ["103.155.xx.xx"] }, "joined_at": "2025-11-04 09:30:00" }, "meta": { "timestamp": "2026-04-01 12:01:00", "api_version": "1.0.0", "method": "GET", "ip": "103.155.xx.xx" } } ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- [3] UPDATE WEBHOOK ------------------------------------------------------------------------------------------------- | Endpoint | POST /profile | Deskripsi | Memperbarui konfigurasi Webhook URL. | Params/Body| | - action | (String) [REQ] Value tetap: `update_webhook` | - webhook | (String) [REQ] Harus diawali http:// atau https:// (contoh: https://inovixa.web.id/callback) | Response | { "success": true, "code": 200, "message": "Webhook URL successfully updated.", "data": { "new_webhook_url": "https://inovixa.web.id/callback" }, "meta": { "timestamp": "2026-04-01 12:05:00", "api_version": "1.0.0", "method": "POST", "ip": "103.155.xx.xx" } } ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- [4] DEPOSIT METHODS ------------------------------------------------------------------------------------------------- | Endpoint | GET /deposit | Deskripsi | Mengambil daftar metode pembayaran deposit yang aktif (VA, QRIS, dll). | Params/Body| (Tidak ada) | Response | { "success": true, "code": 200, "message": "Successfully retrieved payment channels.", "data": [ { "code": "QRIS", "name": "QRIS by ShopeePay", "type": "ewallet", "fee_flat": 750, "fee_percent": 0.7, "min_amount": 1000, "max_amount": 5000000 }, { "code": "BCAVA", "name": "BCA Virtual Account", "type": "va", "fee_flat": 5500, "fee_percent": 0, "min_amount": 10000, "max_amount": 10000000 } ], "meta": { "timestamp": "2026-04-01 12:10:00", "api_version": "1.0.0", "method": "GET", "ip": "103.155.xx.xx" } } ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- [5] CREATE DEPOSIT ------------------------------------------------------------------------------------------------- | Endpoint | POST /deposit | Deskripsi | Membuat tiket deposit saldo. Membalas dengan link checkout/QR string/nomor VA. | Params/Body| | - amount | (Int) [REQ] Nominal deposit (Min. 1000) | - method_co| (String) [REQ] Kode pembayaran (Contoh: QRIS, BCNIVA) | - fee_by_cu| (Boolean) [OPT] Jika `true`, fee ditambahkan ke tagihan customer | Response | { "success": true, "code": 201, "message": "Deposit created successfully.", "data": { "reff_id": "DEP-260401-A1B2C3", "pay_id": "T4933632109580REPHV", "amount_total": 101450, "amount_received": 100000, "method": "QRIS by ShopeePay", "pay_url": "https://tripay.co.id/checkout/T4933632109580REPHV", "pay_code": null, "qr_string": "00020101021226740025ID.CO.BANKNEOCOMMERCE...", "qr_image": "https://tripay.co.id/qr/T4933632109580REPHV", "instructions": [ { "title": "Pembayaran via QRIS (ShopeePay)", "steps": ["Scan QR Code", "Selesaikan pembayaran"] } ], "expired_at": "2026-04-02 12:15:00" }, "meta": { "timestamp": "2026-04-01 12:15:00", "api_version": "1.0.0", "method": "POST", "ip": "103.155.xx.xx" } } ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- [6] DEPOSIT STATUS ------------------------------------------------------------------------------------------------- | Endpoint | GET /deposit/:reff_id | Deskripsi | Mengecek status tiket deposit secara real-time. | Params/Body| (Parameter URL `:reff_id` diisi dengan reff_id dari respons Create Deposit) | Response | { "success": true, "code": 200, "message": "Deposit status retrieved.", "data": { "reff_id": "DEP-260401-A1B2C3", "pay_id": "T4933632109580REPHV", "method": "QRIS", "amount": 101450, "status": "success", "date": "2026-04-01 12:20:00" }, "meta": { "timestamp": "2026-04-01 12:20:05", "api_version": "1.0.0", "method": "GET", "ip": "103.155.xx.xx" } } ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- [7] LIST PRODUCTS ------------------------------------------------------------------------------------------------- | Endpoint | GET /product | Deskripsi | Mendapatkan daftar layanan aktif PPOB beserta harga final. | Params/Body| | - category | (String) [OPT] Filter: `prepaid`, `sosmed`, atau `game`. Default: `prepaid` | | Dikirim via Query Param (Contoh: /product?category=game) | Response | { "success": true, "code": 200, "message": "Product list retrieved.", "data": [ { "code": "ML5", "name": "[Mobile Legends] 5 Diamonds", "brand": "Mobile Legends", "status": "Aktif", "price": 1500 }, { "code": "TSEL10", "name": "[Telkomsel] Pulsa 10.000", "brand": "Telkomsel", "status": "Aktif", "price": 10500 } ], "meta": { "timestamp": "2026-04-01 12:30:00", "api_version": "1.0.0", "method": "GET", "ip": "103.155.xx.xx" } } ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- [8] CREATE TRANSACTION ------------------------------------------------------------------------------------------------- | Endpoint | POST /product | Deskripsi | Melakukan pembelian produk PPOB. Saldo otomatis terpotong. | Params/Body| | - service_c| (String) [REQ] Kode produk (Contoh: ML5) | - target | (String) [REQ] Nomor tujuan / ID Pelanggan / Target URL | - zone | (String) [OPT] Zone ID (Khusus topup game seperti MLBB) | - qty | (Int) [OPT] Quantity (Khusus layanan Sosmed) | Response | { "success": true, "code": 201, "message": "Order processed successfully.", "data": { "reff_id": "TRX-20260401123500-F5A9", "status": "processing", "sn": "", "price": 1500, "balance_left": 15498500 }, "meta": { "timestamp": "2026-04-01 12:35:00", "api_version": "1.0.0", "method": "POST", "ip": "103.155.xx.xx" } } ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- [9] TRANSACTION STATUS ------------------------------------------------------------------------------------------------- | Endpoint | GET /product/:reff_id | Deskripsi | Mengecek status riwayat pembelian/transaksi PPOB. | Params/Body| (Parameter URL `:reff_id` diisi dengan reff_id dari Create Transaction) | Response | { "success": true, "code": 200, "message": "Transaction status retrieved.", "data": { "reff_id": "TRX-20260401123500-F5A9", "service_code": "ML5", "service_name": "[Mobile Legends] 5 Diamonds", "target": "12345678 (1234)", "selling_price": 1500, "status": "success", "sn": "136216325", "note": "Transaksi Berhasil", "createdAt": "2026-04-01T05:35:00.000Z" }, "meta": { "timestamp": "2026-04-01 12:36:00", "api_version": "1.0.0", "method": "GET", "ip": "103.155.xx.xx" } } ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- [10] CHECK GAME ID ------------------------------------------------------------------------------------------------- | Endpoint | POST /game/check-id | Deskripsi | Cek validitas User ID / Zone ID Game sebelum top up. | Params/Body| | - code | (String) [REQ] Kode game (mobile-legends, free-fire, pubgm, valorant, dll) | - target | (String) [REQ] ID target pelanggan (User ID) | - additiona| (String) [OPT] Zone ID / Server ID (khusus MLBB, Genshin, Honkai) | Response | { "success": true, "code": 200, "message": "Success", "data": { "player_name": "DaniJoest", "request_details": { "code": "mobile-legends", "target": "12345678", "additional_target": "1234" } }, "meta": { "timestamp": "2026-04-07 15:30:00", "api_version": "1.0.0", "method": "POST", "ip": "103.155.xx.xx" } } ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- [11] CREATE PAYOUT ------------------------------------------------------------------------------------------------- | Endpoint | POST /payout | Deskripsi | Mengirim permintaan penarikan dana ke rekening Bank / E-Wallet. | Params/Body| | - amount | (Int) [REQ] Nominal pencairan dana | - bank_code| (String) [REQ] Kode bank (BCA, BRI, DANA, dll) | - account_n| (String) [REQ] Nomor rekening tujuan | - account_n| (String) [OPT] Nama pemilik rekening tujuan | Response | { "success": true, "code": 201, "message": "Payout request submitted for review.", "data": { "reff_id": "WD-1709423500-CDE", "amount": 50000, "fee": 5000, "total_deducted": 55000, "status": "pending", "balance_left": 15443500 }, "meta": { "timestamp": "2026-04-01 12:40:00", "api_version": "1.0.0", "method": "POST", "ip": "103.155.xx.xx" } } ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- [12] PAYOUT STATUS ------------------------------------------------------------------------------------------------- | Endpoint | GET /payout/:reff_id | Deskripsi | Mengecek status penarikan dana. | Params/Body| (Parameter URL `:reff_id` diisi dengan reff_id dari Create Payout) | Response | { "success": true, "code": 200, "message": "Payout status retrieved.", "data": { "reff_id": "WD-1709423500-CDE", "bank_code": "BCA", "account_number": "85122977536", "amount": 50000, "fee": 5000, "status": "success", "note": "Penarikan disetujui dan telah ditransfer ke rekening tujuan.", "sn": "MAN-1709428500", "createdAt": "2026-04-01T05:40:00.000Z" }, "meta": { "timestamp": "2026-04-01 12:45:00", "api_version": "1.0.0", "method": "GET", "ip": "103.155.xx.xx" } } ------------------------------------------------------------------------------------------------- ================================================================================================= [13] WEBHOOK CALLBACK HANDLER (EVENTS) ================================================================================================= Deskripsi : Flowix akan mengirimkan HTTP POST otomatis ke Webhook URL Anda saat ada perubahan status (Sukses/Gagal). Timeout : 8 Detik (Jika server Anda lambat/mati, Flowix akan mencoba ulang hingga 3x) Validasi : WAJIB memvalidasi HMAC-SHA256 Signature untuk keamanan. ================================================================================================= ------------------------------------------------------------------------------------------------- [A] WEBHOOK HEADERS DARI FLOWIX ------------------------------------------------------------------------------------------------- | Header Name | Keterangan | |----------------------|------------------------------------------------------------------------| | Content-Type | application/json | | User-Agent | Flowix-Webhook-System/1.0 | | X-Flowix-Signature | HMAC-SHA256 Hex Digest (Payload JSON + Webhook Secret Anda) | | X-Flowix-Key | API Key Anda (Untuk verifikasi identitas) | | X-Flowix-Merchant | Merchant ID Anda | | X-Flowix-Event | Tipe Event (transaction.status, deposit.status, payout.status) | ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- [B] EVENT: transaction.status (PEMBELIAN PPOB / GAME / SOSMED) ------------------------------------------------------------------------------------------------- [+] CONTOH PAYLOAD: SUKSES (SUCCESS) { "id": "evt_d39a3e9c-1234-4abc-8def-1234567890ab", "event": "transaction.status", "timestamp": 1698223000, "data": { "reff_id": "TRX-20260401123500-F5A9", "product": "ML5", "target": "12345678 (1234)", "status": "success", "sn": "136216325", "note": "Transaksi Berhasil" } } [-] CONTOH PAYLOAD: GAGAL & DI-REFUND (FAILED) { "id": "evt_e40b4f0d-2345-5bcd-9ef0-2345678901bc", "event": "transaction.status", "timestamp": 1698223050, "data": { "reff_id": "TRX-20260401123500-F5A9", "product": "ML5", "target": "12345678 (1234)", "status": "failed", "sn": "GAGAL", "note": "Nomor tujuan salah atau provider sedang gangguan. Dana dikembalikan." } } ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- [C] EVENT: deposit.status (TOPUP SALDO) ------------------------------------------------------------------------------------------------- [+] CONTOH PAYLOAD: SUKSES MASUK (SUCCESS) { "id": "evt_8b3a4f9c-1234-4abc-8def-abcdef123456", "event": "deposit.status", "timestamp": 1698224000, "data": { "reff_id": "DEP-260401-A1B2C3", "status": "success", "amount": 100000, "original_amount": 101450, "provider_ref": "T4933632109580REPHV" } } [-] CONTOH PAYLOAD: EXPIRED / BATAL (FAILED) { "id": "evt_9c4b5g0d-5678-5bcd-9ef0-bcdef2345678", "event": "deposit.status", "timestamp": 1698224100, "data": { "reff_id": "DEP-260401-A1B2C3", "status": "failed", "amount": 101450, "message": "Payment failed, expired, or canceled" } } ------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------- [D] EVENT: payout.status (PENARIKAN DANA / WITHDRAWAL) ------------------------------------------------------------------------------------------------- [+] CONTOH PAYLOAD: TRANSFER SUKSES (SUCCESS) { "id": "evt_5f2c1a8b-9012-4abc-8def-cdef34567890", "event": "payout.status", "timestamp": 1698225000, "data": { "reff_id": "WD-1709423500-CDE", "status": "success", "amount": 50000, "sn": "MAN-1709428500", "note": "Penarikan disetujui dan telah ditransfer ke rekening tujuan." } } [-] CONTOH PAYLOAD: DITOLAK & DI-REFUND (FAILED) { "id": "evt_6g3d2b9c-3456-5bcd-9ef0-def456789012", "event": "payout.status", "timestamp": 1698225100, "data": { "reff_id": "WD-1709423500-CDE", "status": "failed", "amount": 50000, "note": "Rekening tujuan tidak valid atau diblokir. Refunded to balance." } } -------------------------------------------------------------------------------------------------