| Endpoint | Method | Digunakan Oleh | Fungsi / Tujuan | Tabel yang Terlibat | Status Data / Catatan |
|---|---|---|---|---|---|
/v1/commissions/distribute | POST | Sistem (auto trigger) | Distribusi komisi setelah order completed & paid | commission_distribution_log, order_commission_history, user_commission_balance | Status komisi: success, update saldo display-only |
/v1/earnings | GET | Vendor, Kurir | Menampilkan pendapatan (angka saja) | user_commission_balance | Hanya display, uang tetap di rekening marketplace |
/v1/bank-accounts | POST | Vendor, Kurir | Menambahkan rekening untuk penarikan | bank_accounts | Bisa set default_bank=true |
/v1/bank-accounts | GET | Vendor, Kurir | Melihat daftar rekening yang terdaftar | bank_accounts | - |
/v1/payout | POST | Vendor, Kurir | Request withdraw berdasarkan saldo yang tersedia | payout, payout_request_history, user_commission_balance | Status payout: pending → processing → completed / failed |
/v1/payout | GET | Admin, Vendor, Kurir | Melihat daftar payout request | payout, payout_request_history | Bisa filter berdasarkan status & user_id |
/v1/payout/{id} | GET | Admin, Vendor, Kurir | Melihat detail payout tertentu | payout, payout_request_history | - |
/v1/webhook/payout | POST | Provider (Xendit) | Callback status payout dari payment provider | payout, payout_request_history, user_commission_balance | Update status, jika failed → saldo dikembalikan |
/v1/commission-settings | GET | Admin | Melihat aturan persentase pembagian komisi | commission_setting | - |
/v1/commission-settings | POST | Admin | Menambah atau mengubah aturan pembagian komisi | commission_setting | - |
/v1/orders/{id}/commission | GET | Admin | Melihat detail pembagian komisi untuk order tertentu | commission_distribution_log, order_commission_history | - |
delivery_status: created, verified, assigned, delivery_in_progress, completed, failed, cancelledcommission_status)pending → komisi belum dibagikansuccess → komisi sudah dibagikan ke saldo displaycancelled → pembagian dibatalkanpayout_status)pending → request dibuat, belum diproses providerprocessing → sedang diproses providercompleted → berhasil dicairkanfailed → gagal dicairkan, saldo dikembalikanuser_commission_balance adalah display-only, uang fisik tetap di rekening marketplace./v1/commissions/distribute) hanya dijalankan sekali per order setelah order selesai./v1/payout) hanya bisa dilakukan jika available_balance mencukupi./v1/webhook/payout) wajib diamankan dengan secret key dari provider.curl --location --request POST 'https://v1.dev.bukalombok.com/v1/webhook/payout' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
"event": "payout.succeeded",
"business_id": "5785e6334d7b410667d355c4",
"created": "2025-08-13T15:00:00Z",
"data": {
"id": "disb-571f3644d2b4edf0745e9703",
"amount": 10000,
"channel_code": "ID_BCA",
"currency": "IDR",
"reference_id": "myref-1482928194",
"status": "SUCCEEDED",
"created": "2025-08-13T14:55:00Z",
"updated": "2025-08-13T15:00:00Z",
"estimated_arrival_time": "2025-08-14T10:00:00Z",
"failure_code": null,
"business_id": "5785e6334d7b410667d355c4",
"channel_properties": {
"account_holder_name": "Michael Chen",
"account_number": "000000000099",
"account_type": "Savings"
},
"receipt_notification": {
"email_to": ["user@example.com"],
"email_cc": [],
"email_bcc": []
},
"metadata": {
"my_custom_id": "merchant-123",
"my_custom_order_id": "order-123"
}
}
}'{
"meta": {
"success": true,
"status": 0,
"message": "string"
},
"data": {}
}