Flowix API Reference
Dokumentasi resmi REST API Flowix Technology untuk integrasi layanan PPOB, top up game, deposit otomatis, transaksi digital, dan payout. Disusun agar tim engineering Anda dapat migrasi lebih cepat, memahami alur request dengan jelas, dan mengurangi trial-and-error saat implementasi.
Base URL
REST Endpoint
https://flowix.web.id/api/v1
Payload
JSON Standard
application/json
Integration
Webhook Ready
Contoh request, response, dan callback disiapkan agar proses implementasi lebih mulus.
Coverage
Full Endpoint Set
Deposit, transaksi produk, payout, autentikasi, dan webhook dalam satu dokumentasi terpadu.
Migration Notes
Gunakan header api_key dan merchant_id di seluruh request untuk konsistensi dan keamanan integrasi.
Autentikasi
Keamanan API kami menggunakan kombinasi API Key (Rahasia) dan Merchant ID (Identitas Bisnis). Kedua parameter ini WAJIB disertakan dalam setiap request.
Anda dapat mengirimkan kredensial ini melalui 3 metode:
- Header (Rekomendasi - Paling Aman)
- Body (JSON Payload)
- Query Parameter (URL)
PENTING: IP Address Anda harus terdaftar di Whitelist (Dashboard API Settings).
curl -X GET "https://flowix.web.id/api/v1/profile" \
-H "Content-Type: application/json" \
-H "api_key: sk-112233-445566-778899" \
-H "merchant_id: MID-FLOWIX123"
Health
Request URL
https://flowix.web.id/api/v1/health
Example Response
Contoh payload respons yang diterima integrator setelah request diproses.
{
"success": true,
"code": 200,
"message": "Test successfully.",
"data": {
"ip_address": "103.155.xx.xx"
},
"meta": {
"timestamp": "2026-05-21 10:00:00",
"api_version": "1.0.0",
"method": "GET",
"ip": "103.155.xx.xx"
}
}
Profile
Request URL
https://flowix.web.id/api/v1/profile
Example Response
Contoh payload respons yang diterima integrator setelah request diproses.
{
"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://example.com/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"
}
}
Update Webhook
Request URL
https://flowix.web.id/api/v1/profile
Parameters
Field yang perlu disiapkan sebelum request dikirim.
| Field | Type | Required | Description |
|---|---|---|---|
| action | string | REQ | Aksi yang dilakukan. Value tetap: `update_webhook` |
| webhook_url | string | REQ | URL callback endpoint Anda. Harus diawali http:// atau https:// |
Example Response
Contoh payload respons yang diterima integrator setelah request diproses.
{
"success": true,
"code": 200,
"message": "Webhook URL successfully updated.",
"data": {
"new_webhook_url": "https://example.com/callback"
},
"meta": {
"timestamp": "2026-04-01 12:05:00",
"api_version": "1.0.0",
"method": "POST",
"ip": "103.155.xx.xx"
}
}
Deposit Methods
Request URL
https://flowix.web.id/api/v1/deposit
Example Response
Contoh payload respons yang diterima integrator setelah request diproses.
{
"success": true,
"code": 200,
"message": "Successfully retrieved payment channels.",
"data": [
{
"code": "QRIS",
"provider_method_code": "QRIS",
"original_code": "QRIS",
"name": "QRIS",
"type": "qris",
"fee_flat": 750,
"fee_percent": 0.7,
"min_amount": 1000,
"max_amount": 5000000,
"icon_url": "https://.../qris.png",
"group": "E-Wallet & QRIS",
"status": "available",
"availability_label": "Available",
"is_available": true,
"unavailable_reason": null,
"disabled": false,
"hidden": false
},
{
"code": "BRIVA",
"provider_method_code": "BRIVA",
"original_code": "BRIVA",
"name": "BRI Virtual Account",
"type": "va",
"fee_flat": 4250,
"fee_percent": 0,
"min_amount": 10000,
"max_amount": 10000000,
"icon_url": "https://.../bri.png",
"group": "Virtual Account",
"status": "unavailable",
"availability_label": "Unavailable",
"is_available": false,
"unavailable_reason": "disabled_by_admin",
"disabled": true,
"hidden": false
}
],
"meta": {
"timestamp": "2026-05-21 10:10:00",
"api_version": "1.0.0",
"method": "GET",
"ip": "103.155.xx.xx"
}
}
Create Deposit
Request URL
https://flowix.web.id/api/v1/deposit
Parameters
Field yang perlu disiapkan sebelum request dikirim.
| Field | Type | Required | Description |
|---|---|---|---|
| amount | int | REQ | Nominal saldo yang ingin diterima. Minimal mengikuti method min_amount. Nominal di bawah Rp 1.000 otomatis dipaksa fee_by_customer=true. |
| method_code | string | REQ | Kode pembayaran (Contoh: QRIS, BCNIVA, BRIVA). |
| fee_by_customer | boolean | OPT | Jika true, fee ditambahkan ke total tagihan sehingga saldo diterima utuh. Jika false, fee dipotong dari saldo diterima. Untuk nominal < Rp 1.000 sistem tetap memaksa true. |
Example Response
Contoh payload respons yang diterima integrator setelah request diproses.
{
"success": true,
"code": 201,
"message": "Deposit created successfully.",
"data": {
"reff_id": "DEP-260521-A1B2C3D4E5F6A7B8",
"pay_id": "T4933632109580REPHV",
"payment_gateway": "tripay",
"type": "qris",
"method_code": "QRIS",
"provider_method_code": "QRIS",
"method_name": "QRIS",
"amount_request": 100000,
"amount_total": 101458,
"fee": 1458,
"amount_received": 100000,
"fee_by_customer": true,
"forced_fee_by_customer": false,
"status": "pending",
"qr_image": "https://tripay.co.id/qr/T4933632109580REPHV",
"qr_string": "000201010212266...",
"pay_url": "https://tripay.co.id/checkout/T4933632109580REPHV",
"pay_code": null,
"expired_at": "2026-05-22 10:15:00",
"paid_at": null,
"date": "2026-05-21 10:15:00",
"process_duration_seconds": null,
"process_duration_text": null,
"instructions": [
{
"title": "Pembayaran via QRIS",
"steps": [
"Scan QR Code melalui aplikasi pembayaran Anda.",
"Pastikan nominal pembayaran sesuai total tagihan.",
"Selesaikan pembayaran sebelum expired_at."
]
}
]
},
"meta": {
"timestamp": "2026-05-21 10:15:00",
"api_version": "1.0.0",
"method": "POST",
"ip": "103.155.xx.xx"
}
}
Deposit Status
Request URL
https://flowix.web.id/api/v1/deposit/:reff_id
Example Response
Contoh payload respons yang diterima integrator setelah request diproses.
{
"success": true,
"code": 200,
"message": "Deposit status retrieved.",
"data": {
"reff_id": "DEP-260521-A1B2C3D4E5F6A7B8",
"pay_id": "T4933632109580REPHV",
"payment_gateway": "tripay",
"type": "qris",
"method_code": "QRIS",
"provider_method_code": "QRIS",
"method_name": "QRIS",
"amount_request": 100000,
"amount_total": 101458,
"fee": 1458,
"amount_received": 100000,
"fee_by_customer": true,
"status": "success",
"qr_image": "https://tripay.co.id/qr/T4933632109580REPHV",
"qr_string": "000201010212266...",
"pay_url": "https://tripay.co.id/checkout/T4933632109580REPHV",
"pay_code": null,
"expired_at": "2026-05-22 10:15:00",
"paid_at": "2026-05-21 10:20:00",
"date": "2026-05-21 10:15:00",
"process_duration_seconds": 300,
"process_duration_text": "5 menit"
},
"meta": {
"timestamp": "2026-05-21 10:20:05",
"api_version": "1.0.0",
"method": "GET",
"ip": "103.155.xx.xx"
}
}
Cancel Deposit
Request URL
https://flowix.web.id/api/v1/deposit/:reff_id/cancel
Example Response
Contoh payload respons yang diterima integrator setelah request diproses.
{
"success": true,
"code": 200,
"message": "Deposit canceled successfully.",
"data": {
"reff_id": "DEP-260521-A1B2C3D4E5F6A7B8",
"status": "canceled"
},
"meta": {
"timestamp": "2026-05-21 10:21:00",
"api_version": "1.0.0",
"method": "POST",
"ip": "103.155.xx.xx"
}
}
List Products
Request URL
https://flowix.web.id/api/v1/product
Parameters
Field yang perlu disiapkan sebelum request dikirim.
| Field | Type | Required | Description |
|---|---|---|---|
| category | string | OPT | Filter kategori. Value umum: `all`, `prepaid`, `sosmed`, atau `game` (Default: all). |
| type | string | OPT | Filter tipe produk khusus dataset Digiflazz. Default: `Semua`. |
Example Response
Contoh payload respons yang diterima integrator setelah request diproses.
{
"success": true,
"code": 200,
"message": "Product list retrieved.",
"data": [
{
"code": "ML5",
"name": "Mobile Legends 5 Diamonds",
"brand": "Mobile Legends",
"category": "game",
"status": "Aktif",
"raw_status": "active",
"price": 1500,
"supplier": "digiflazz",
"supplier_label": "Digiflazz",
"public_supplier_label": "Official Supplier",
"product_type_label": "Game",
"availability_label": "Aktif",
"is_available": true,
"stock": null,
"note": ""
},
{
"code": "TSEL10",
"name": "Telkomsel Pulsa 10.000",
"brand": "Telkomsel",
"category": "prepaid",
"status": "Gangguan",
"raw_status": "inactive",
"price": 10500,
"supplier": "vipayment",
"supplier_label": "VIPayment",
"public_supplier_label": "Official Supplier",
"product_type_label": "",
"availability_label": "Gangguan",
"is_available": false,
"stock": 0,
"note": "Produk sementara tidak tersedia"
}
],
"meta": {
"timestamp": "2026-05-21 10:30:00",
"api_version": "1.0.0",
"method": "GET",
"ip": "103.155.xx.xx"
}
}
Create Transaction
Request URL
https://flowix.web.id/api/v1/product
Parameters
Field yang perlu disiapkan sebelum request dikirim.
| Field | Type | Required | Description |
|---|---|---|---|
| service_code | string | REQ | Kode produk dari endpoint List Products. |
| target | string | REQ | Nomor tujuan / ID Pelanggan / Target URL. |
| zone | string | OPT | Zone ID (Khusus topup Game tertentu seperti Mobile Legends). |
| qty | int | OPT | Quantity (Khusus untuk layanan Sosmed). |
Example Response
Contoh payload respons yang diterima integrator setelah request diproses.
{
"success": true,
"code": 201,
"message": "Order received and is being processed.",
"data": {
"reff_id": "TRX-20260521103500-F5A9",
"status": "processing",
"sn": "",
"price": 1500,
"balance_left": 15498500
},
"meta": {
"timestamp": "2026-05-21 10:35:00",
"api_version": "1.0.0",
"method": "POST",
"ip": "103.155.xx.xx"
}
}
Transaction Status
Request URL
https://flowix.web.id/api/v1/product/:reff_id
Example Response
Contoh payload respons yang diterima integrator setelah request diproses.
{
"success": true,
"code": 200,
"message": "Transaction status retrieved.",
"data": {
"reff_id": "TRX-20260521103500-F5A9",
"service_code": "ML5",
"service_name": "Mobile Legends 5 Diamonds",
"target": "12345678 (1234)",
"selling_price": 1500,
"status": "success",
"sn": "136216325",
"note": "Transaction completed successfully.",
"createdAt": "2026-05-21T03:35:00.000Z",
"process_duration_seconds": 42,
"process_duration_text": "42 detik"
},
"meta": {
"timestamp": "2026-05-21 10:36:00",
"api_version": "1.0.0",
"method": "GET",
"ip": "103.155.xx.xx"
}
}
Check Game ID
Request URL
https://flowix.web.id/api/v1/game/check-id
Daftar Game Code yang Tersedia:
mobile-legends(MLBB) - Butuh target (User ID) & additional_target (Zone ID)mobile-legends-region(MLBB Region) - Butuh target & additional_target *Min. Saldo Rp 100.000free-fire(FF/MAX) - Butuh target (User ID)pubgm(PUBG Mobile) - Butuh target (User ID)valorant- Butuh target (User ID)genshin-impact- Butuh target (User ID) & additional_target (Server)honkai-star-rail- Butuh target (User ID) & additional_target (Server)pointblank- Butuh target (User ID)
*List game yang tersedia sewaktu-waktu dapat diupdate.
Parameters
Field yang perlu disiapkan sebelum request dikirim.
| Field | Type | Required | Description |
|---|---|---|---|
| code | string | REQ | Kode produk game dari list di atas. |
| target | string | REQ | ID atau Nomor target pelanggan (User ID). |
| additional_target | string | OPT | Zone ID / Server ID (khusus game tertentu seperti MLBB). |
Example Response
Contoh payload respons yang diterima integrator setelah request diproses.
{
"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"
}
}
Create Payout
Request URL
https://flowix.web.id/api/v1/payout
Parameters
Field yang perlu disiapkan sebelum request dikirim.
| Field | Type | Required | Description |
|---|---|---|---|
| amount | int | REQ | Nominal pencairan dana. |
| bank_code | string | REQ | Kode bank (contoh: BCA, BRI, DANA). |
| account_number | string | REQ | Nomor rekening tujuan. |
| account_name | string | OPT | Nama pemilik rekening untuk data referensi. |
Example Response
Contoh payload respons yang diterima integrator setelah request diproses.
{
"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"
}
}
Payout Status
Request URL
https://flowix.web.id/api/v1/payout/:reff_id
Example Response
Contoh payload respons yang diterima integrator setelah request diproses.
{
"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"
}
}
Webhook Integration (Callbacks)
Flowix akan mengirimkan request HTTP POST ke Webhook URL Anda setiap kali terjadi perubahan status pada deposit, transaksi produk, atau payout. Integrasi ini direkomendasikan agar sistem Anda menerima update secara real-time tanpa perlu melakukan polling terus-menerus.
Penting untuk Integrasi
Webhook dikirim ketika status data di sistem Flowix berubah. Pastikan endpoint Anda dapat menerima JSON, memverifikasi signature, memproses event berdasarkan event dan data.status, lalu membalas HTTP 200 OK secepat mungkin.
1. Alur Integrasi yang Direkomendasikan
- Siapkan endpoint publik Anda, misalnya
https://domainanda.com/webhook/flowix. - Simpan Webhook URL dan Webhook Secret pada pengaturan akun / API Settings.
- Terima request POST dengan body JSON dari Flowix.
- Verifikasi header
X-Flowix-Signaturemenggunakan HMAC-SHA256 dengan raw request body dan Webhook Secret Anda. - Baca nilai
eventuntuk menentukan jenis callback, misalnyadeposit.status,transaction.status, ataupayout.status. - Baca nilai
data.statusuntuk menentukan status akhir, misalnyasuccess,failed,expired, ataucanceled. - Setelah data berhasil diproses di sistem Anda, balas dengan
HTTP 200agar callback tidak dianggap gagal.
2. Webhook Headers
| Header Name | Description |
|---|---|
| Content-Type | Selalu bernilai application/json. |
| User-Agent | Identifier pengirim, contoh: Flowix-Webhook-System/1.0. |
| X-Flowix-Signature | Signature HMAC-SHA256 hex digest dari raw body menggunakan Webhook Secret Anda. |
| X-Flowix-Key | API Key milik akun Anda. Dapat digunakan sebagai verifikasi tambahan. |
| X-Flowix-Merchant | Merchant ID milik akun Anda. Dapat digunakan sebagai verifikasi tambahan. |
| X-Flowix-Event | Jenis event callback, misalnya deposit.status, transaction.status, atau payout.status. |
3. Struktur Umum Payload
{
"id": "evt_550e8400-e29b-41d4-a716-446655440000",
"event": "transaction.status",
"timestamp": 1776628205,
"data": {
"reff_id": "TRX-20260419153000-A1B2",
"status": "success"
}
}
Field Utama
id: ID event webhook unik.event: Jenis callback.timestamp: UNIX timestamp saat event dibuat.data: Detail payload sesuai tipe event.
Status yang Umum Digunakan
success: Proses berhasil.failed: Proses gagal.expired: Umum pada deposit yang melewati batas waktu pembayaran.canceled: Dibatalkan oleh sistem atau pengguna.
4. Contoh Payload Webhook Deposit
Event: deposit.status. Callback ini digunakan untuk sinkronisasi status deposit saldo.
Catatan Deposit
Pada status success, field amount merepresentasikan nominal saldo yang diterima. Field original_amount merepresentasikan total tagihan deposit sebelum atau saat diproses provider.
5. Contoh Payload Webhook Transaksi Produk
Event: transaction.status. Callback ini digunakan untuk update status transaksi produk seperti pulsa, data, game, e-wallet, dan layanan digital lainnya.
6. Contoh Payload Webhook Payout
Event: payout.status. Callback ini digunakan untuk sinkronisasi status penarikan dana.