# Client IP Whitelist

> **Mandatory — Client IP Whitelist**
>
> Setiap klien **wajib mengonfigurasi IP Whitelist** sebelum menggunakan Brick API di lingkungan Production. Brick hanya akan menerima permintaan API dari alamat IP yang telah didaftarkan dan diizinkan. Pastikan seluruh server yang mengirim permintaan ke Brick menggunakan **static public IP**.

## Mengapa IP Whitelist Penting?

IP Whitelist adalah mekanisme keamanan yang membatasi akses API hanya dari alamat IP yang telah disetujui. Dengan mekanisme ini, permintaan dari alamat IP di luar daftar yang diizinkan akan ditolak, meskipun pihak tersebut mencoba mengakses endpoint Brick API.

Penerapan IP Whitelist penting karena Brick API memproses aktivitas finansial, termasuk penerimaan pembayaran dan pengiriman dana. Pembatasan sumber permintaan membantu:

- **Mencegah akses tidak sah:** Hanya infrastruktur klien yang telah terdaftar yang dapat mengirim permintaan API.
- **Mengurangi risiko penyalahgunaan API:** Permintaan dari jaringan atau server yang tidak dikenal dapat diblokir sebelum diproses lebih lanjut.
- **Melindungi transaksi finansial:** Menambahkan lapisan pengamanan untuk mengurangi risiko permintaan transaksi dari sumber yang tidak diizinkan.
- **Mendukung kontrol dan audit keamanan:** Memudahkan pengelolaan serta peninjauan alamat IP yang memiliki izin akses.

IP Whitelist merupakan **lapisan keamanan tambahan**, bukan pengganti API authentication, perlindungan credential, maupun kontrol keamanan lainnya.

## Kriteria IP Whitelist

| Kriteria | Ketentuan |
| --- | --- |
| Kewajiban | **Mandatory** untuk akses Brick API di Production |
| Jenis IP | **Static public IP only** |
| Jumlah maksimal | **10 alamat IP** per konfigurasi whitelist |
| Dynamic IP | Tidak didukung |
| Private/local IP | Tidak dapat digunakan sebagai sumber IP publik permintaan API |
| Cakupan | Permintaan masuk ke Brick API, termasuk Send Money dan Receive Money |
| Environment | Konfigurasi Sandbox dan Production dikelola secara terpisah |
| Sub-account | Konfigurasi dikelola secara terpisah untuk masing-masing sub-account |

> **Important:** Daftarkan **public outbound IP** yang benar-benar digunakan server Anda ketika mengirim permintaan ke Brick. Apabila menggunakan NAT Gateway, proxy, atau infrastruktur cloud, gunakan static public egress IP yang terlihat oleh Brick, bukan private IP server.

## Cara Mengonfigurasi IP Whitelist

1. Login ke **Brick Dashboard**.
2. Buka halaman [**Configuration**](https://app.onebrick.io/configuration) di Brick Dashboard.
3. Pilih tab **Callback URL**, tempat pengaturan IP Whitelist tersedia.
4. Temukan pengaturan **IP Whitelist / Incoming Request Validation**.
5. Tambahkan alamat **static public IP** yang digunakan server Anda untuk mengakses Brick API, maksimal **10 IP**.
6. Simpan konfigurasi, lalu pastikan IP Whitelist telah aktif.
7. Lakukan pengujian API dari IP yang sudah terdaftar untuk memastikan permintaan dapat diproses.

![Halaman Configuration dengan tab Callback URL dipilih](/assets/configuration/configuration-callback-url.png)

![Pengaturan Client IP Whitelist di Brick Dashboard](/assets/configuration/client-ip-whitelist.png)

> **Note:** Periksa environment dan sub-account yang sedang dipilih sebelum menyimpan konfigurasi. Daftar IP pada Sandbox tidak otomatis berlaku untuk Production, begitu pula sebaliknya.

## Bagaimana Validasi IP Bekerja?

Setiap permintaan API diperiksa berdasarkan alamat IP sumbernya.

| Kondisi | Hasil |
| --- | --- |
| IP sumber terdaftar dalam whitelist | Permintaan diterima untuk melanjutkan proses autentikasi dan validasi API lainnya. |
| IP sumber tidak terdaftar | Permintaan ditolak dengan HTTP `401` dan kode error `ip_not_whitelisted`. |

### Contoh Respons IP Tidak Terdaftar

```json
{
  "status": 401,
  "error": {
    "code": "ip_not_whitelisted",
    "message": "Request is not coming from whitelisted IP",
    "reason": "Source IP is not whitelisted in Brick servers"
  },
  "data": null
}
```

Jika menerima error `ip_not_whitelisted`, verifikasi alamat **public outbound IP** yang digunakan oleh server dan pastikan IP tersebut sudah ditambahkan ke whitelist pada environment serta sub-account yang sesuai.

## Sebelum Menggunakan Production

- Pastikan seluruh aplikasi atau server yang akan mengakses Brick API menggunakan static public IP.
- Daftarkan seluruh IP outbound yang diperlukan tanpa melebihi batas 10 IP.
- Pastikan konfigurasi tersimpan pada environment **Production** dan sub-account yang benar.
- Uji koneksi API dari IP yang terdaftar sebelum menjalankan transaksi Production.
- Jika IP outbound berubah, perbarui whitelist terlebih dahulu agar integrasi tidak terganggu.

Untuk informasi tambahan, lihat [Configuration Overview](/id/getting-started/configuration/overview).
