PHPackages                             fyyyn1210/kursbi - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. fyyyn1210/kursbi

ActiveLibrary[Database &amp; ORM](/categories/database)

fyyyn1210/kursbi
================

Laravel package sederhana untuk mengambil data kurs mata uang Bank Indonesia secara dinamis dengan fitur filter tanggal, jumlah konversi, dan limit hasil.

1.0.0(9mo ago)00MITPHPPHP &gt;=7.4

Since Aug 1Pushed 9mo agoCompare

[ Source](https://github.com/fyyyn1210/kursbi)[ Packagist](https://packagist.org/packages/fyyyn1210/kursbi)[ Docs](https://github.com/fyyyn1210/kursbi)[ RSS](/packages/fyyyn1210-kursbi/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (2)Versions (2)Used By (0)

KursBI
======

[](#kursbi)

[![Latest Version](https://camo.githubusercontent.com/b8404b358d21478aec4e7bf48ed828ffe5a442de9cb46d9a705f209e579c84f8/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f667979796e313231302f6b75727362692e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/fyyyn1210/kursbi)[![Total Downloads](https://camo.githubusercontent.com/a26664fa248b4ccd72cfc42ba20f9f4407b014ad07d319351308904991583d9f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f667979796e313231302f6b75727362692e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/fyyyn1210/kursbi)[![License](https://camo.githubusercontent.com/7491f3d0dbd464b9ceabc8adcb111ab260277b8b3b7caf11bd2660906cde3965/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f667979796e313231302f6b75727362692e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/fyyyn1210/kursbi)

**Paket PHP untuk mengambil data kurs mata uang dari Bank Indonesia (BI) untuk PHP &amp; Laravel.**

📋 Deskripsi
-----------

[](#-deskripsi)

KursBI adalah library PHP yang memudahkan pengambilan data kurs mata uang dari API resmi Bank Indonesia. Paket ini mendukung:

- ✅ Pengambilan kurs untuk satu atau beberapa mata uang sekaligus
- ✅ Penentuan rentang tanggal data kurs
- ✅ Pembatasan jumlah data hasil (limit)
- ✅ Konversi jumlah nominal berdasarkan kurs beli dan jual
- ✅ Caching data agar efisien dan mengurangi request berulang
- ✅ User-Agent dinamis untuk request yang lebih natural
- ✅ Support untuk Laravel Cache

🚀 Instalasi
-----------

[](#-instalasi)

Install via Composer:

```
composer require fyyyn1210/kursbi
```

💡 Penggunaan
------------

[](#-penggunaan)

### Import Class

[](#import-class)

```
use Fyyyn1210\KursBI;
```

### Inisialisasi

[](#inisialisasi)

```
$kursBI = new KursBI();
```

📖 Contoh Penggunaan
-------------------

[](#-contoh-penggunaan)

### 1. Mendapatkan Kurs USD Hari Ini

[](#1-mendapatkan-kurs-usd-hari-ini)

```
use Fyyyn1210\KursBI;

$kursBI = new KursBI();
$result = $kursBI->getKurs('USD');

print_r($result);
```

**Return Value:**

```
Array
(
    [success] => 1
    [mata_uang_count] => 1
    [data] => Array
        (
            [0] => Array
                (
                    [mata_uang] => USD
                    [periode] => Array
                        (
                            [start] => 2025-08-02
                            [end] => 2025-08-02
                        )
                    [jumlah_input] =>
                    [jumlah_data] => 1
                    [rata_rata] => Array
                        (
                            [beli] => 15485.50
                            [jual] => 15561.50
                        )
                    [total_konversi] =>
                    [data] => Array
                        (
                            [0] => Array
                                (
                                    [tanggal] => 2025-08-02
                                    [nilai] => 1
                                    [beli] => 15485.50
                                    [jual] => 15561.50
                                )
                        )
                )
        )
)
```

### 2. Mendapatkan Kurs Beberapa Mata Uang

[](#2-mendapatkan-kurs-beberapa-mata-uang)

```
$result = $kursBI->getKurs('USD,EUR,JPY');

print_r($result);
```

**Return Value:**

```
Array
(
    [success] => 1
    [mata_uang_count] => 3
    [data] => Array
        (
            [0] => Array
                (
                    [mata_uang] => USD
                    [periode] => Array
                        (
                            [start] => 2025-08-02
                            [end] => 2025-08-02
                        )
                    [jumlah_input] =>
                    [jumlah_data] => 1
                    [rata_rata] => Array
                        (
                            [beli] => 15485.50
                            [jual] => 15561.50
                        )
                    [total_konversi] =>
                    [data] => Array
                        (
                            [0] => Array
                                (
                                    [tanggal] => 2025-08-02
                                    [nilai] => 1
                                    [beli] => 15485.50
                                    [jual] => 15561.50
                                )
                        )
                )
            [1] => Array
                (
                    [mata_uang] => EUR
                    [periode] => Array
                        (
                            [start] => 2025-08-02
                            [end] => 2025-08-02
                        )
                    [jumlah_input] =>
                    [jumlah_data] => 1
                    [rata_rata] => Array
                        (
                            [beli] => 16850.25
                            [jual] => 16927.75
                        )
                    [total_konversi] =>
                    [data] => Array
                        (
                            [0] => Array
                                (
                                    [tanggal] => 2025-08-02
                                    [nilai] => 1
                                    [beli] => 16850.25
                                    [jual] => 16927.75
                                )
                        )
                )
            [2] => Array
                (
                    [mata_uang] => JPY
                    [periode] => Array
                        (
                            [start] => 2025-08-02
                            [end] => 2025-08-02
                        )
                    [jumlah_input] =>
                    [jumlah_data] => 1
                    [rata_rata] => Array
                        (
                            [beli] => 103.45
                            [jual] => 103.89
                        )
                    [total_konversi] =>
                    [data] => Array
                        (
                            [0] => Array
                                (
                                    [tanggal] => 2025-08-02
                                    [nilai] => 100
                                    [beli] => 103.45
                                    [jual] => 103.89
                                )
                        )
                )
        )
)
```

### 3. Mendapatkan Kurs dengan Rentang Tanggal

[](#3-mendapatkan-kurs-dengan-rentang-tanggal)

```
$result = $kursBI->getKurs(
    'USD',
    '2025-08-01',
    '2025-08-02'
);

print_r($result);
```

**Return Value:**

```
Array
(
    [success] => 1
    [mata_uang_count] => 1
    [data] => Array
        (
            [0] => Array
                (
                    [mata_uang] => USD
                    [periode] => Array
                        (
                            [start] => 2025-08-01
                            [end] => 2025-08-02
                        )
                    [jumlah_input] =>
                    [jumlah_data] => 2
                    [rata_rata] => Array
                        (
                            [beli] => 15480.25
                            [jual] => 15556.25
                        )
                    [total_konversi] =>
                    [data] => Array
                        (
                            [0] => Array
                                (
                                    [tanggal] => 2025-08-01
                                    [nilai] => 1
                                    [beli] => 15475.00
                                    [jual] => 15551.00
                                )
                            [1] => Array
                                (
                                    [tanggal] => 2025-08-02
                                    [nilai] => 1
                                    [beli] => 15485.50
                                    [jual] => 15561.50
                                )
                        )
                )
        )
)
```

### 4. Mendapatkan Kurs dengan Limit Data

[](#4-mendapatkan-kurs-dengan-limit-data)

```
$result = $kursBI->getKurs(
    'USD',
    '2025-07-28',
    '2025-08-02',
    2  // limit hanya 2 data
);

print_r($result);
```

**Return Value:**

```
Array
(
    [success] => 1
    [mata_uang_count] => 1
    [data] => Array
        (
            [0] => Array
                (
                    [mata_uang] => USD
                    [periode] => Array
                        (
                            [start] => 2025-07-28
                            [end] => 2025-08-02
                        )
                    [jumlah_input] =>
                    [jumlah_data] => 2
                    [rata_rata] => Array
                        (
                            [beli] => 15478.25
                            [jual] => 15554.25
                        )
                    [total_konversi] =>
                    [data] => Array
                        (
                            [0] => Array
                                (
                                    [tanggal] => 2025-07-28
                                    [nilai] => 1
                                    [beli] => 15471.00
                                    [jual] => 15547.00
                                )
                            [1] => Array
                                (
                                    [tanggal] => 2025-07-29
                                    [nilai] => 1
                                    [beli] => 15485.50
                                    [jual] => 15561.50
                                )
                        )
                )
        )
)
```

### 5. Konversi Mata Uang dengan Jumlah Tertentu

[](#5-konversi-mata-uang-dengan-jumlah-tertentu)

```
$result = $kursBI->getKurs(
    'USD',
    null,  // tanggal hari ini
    null,  // tanggal hari ini
    null,  // tanpa limit
    1000   // konversi $1000
);

print_r($result);
```

**Return Value:**

```
Array
(
    [success] => 1
    [mata_uang_count] => 1
    [data] => Array
        (
            [0] => Array
                (
                    [mata_uang] => USD
                    [periode] => Array
                        (
                            [start] => 2025-08-02
                            [end] => 2025-08-02
                        )
                    [jumlah_input] => 1000
                    [jumlah_data] => 1
                    [rata_rata] => Array
                        (
                            [beli] => 15485.50
                            [jual] => 15561.50
                        )
                    [total_konversi] => Array
                        (
                            [beli] => 15485500
                            [jual] => 15561500
                        )
                    [data] => Array
                        (
                            [0] => Array
                                (
                                    [tanggal] => 2025-08-02
                                    [nilai] => 1
                                    [beli] => 15485.50
                                    [jual] => 15561.50
                                    [konversi_beli] => 15485500
                                    [konversi_jual] => 15561500
                                )
                        )
                )
        )
)
```

### 6. Penggunaan Kompleks - Multiple Currency dengan Konversi

[](#6-penggunaan-kompleks---multiple-currency-dengan-konversi)

```
$result = $kursBI->getKurs(
    'USD,EUR,SGD',
    '2025-08-01',
    '2025-08-02',
    1,     // limit 1 data per mata uang
    500    // konversi 500 unit mata uang
);

print_r($result);
```

📚 API Reference
---------------

[](#-api-reference)

### Method `getKurs()`

[](#method-getkurs)

```
public function getKurs(
    string $mataUang = 'USD',
    string $startDate = null,
    string $endDate = null,
    int $limit = null,
    float $jumlah = null
): array
```

#### Parameters

[](#parameters)

ParameterTypeDefaultDeskripsi`$mataUang``string``'USD'`Kode mata uang (bisa multiple, dipisah koma). Contoh: `'USD'` atau `'USD,EUR,JPY'``$startDate``string|null``null`Tanggal mulai (format: Y-m-d). Jika null, akan menggunakan tanggal hari ini`$endDate``string|null``null`Tanggal akhir (format: Y-m-d). Jika null, akan menggunakan tanggal hari ini`$limit``int|null``null`Batas jumlah data yang dikembalikan per mata uang`$jumlah``float|null``null`Jumlah nominal untuk konversi mata uang#### Return Value

[](#return-value)

Method ini mengembalikan array dengan struktur:

```
[
    'success' => bool,           // Status keberhasilan request
    'mata_uang_count' => int,    // Jumlah mata uang yang diminta
    'data' => [                  // Array data kurs per mata uang
        [
            'mata_uang' => string,     // Kode mata uang
            'periode' => [
                'start' => string,     // Tanggal mulai
                'end' => string        // Tanggal akhir
            ],
            'jumlah_input' => float|null,    // Jumlah input untuk konversi
            'jumlah_data' => int,            // Jumlah data kurs
            'rata_rata' => [
                'beli' => float,       // Rata-rata kurs beli
                'jual' => float        // Rata-rata kurs jual
            ],
            'total_konversi' => [      // Hanya ada jika $jumlah tidak null
                'beli' => float,       // Total konversi kurs beli
                'jual' => float        // Total konversi kurs jual
            ] | null,
            'data' => [                // Array detail kurs per tanggal
                [
                    'tanggal' => string,       // Tanggal kurs
                    'nilai' => float,          // Nilai nominal
                    'beli' => float,           // Kurs beli
                    'jual' => float,           // Kurs jual
                    'konversi_beli' => float,  // Hasil konversi beli (jika ada)
                    'konversi_jual' => float   // Hasil konversi jual (jika ada)
                ]
            ]
        ]
    ]
]
```

⚙️ Fitur
--------

[](#️-fitur)

### Caching

[](#caching)

Library ini menggunakan Laravel Cache untuk menyimpan hasil request selama 6 jam. Cache key menggunakan format: `kursbi_{kode_mata_uang}_{start_date}_{end_date}`.

### User-Agent Dinamis

[](#user-agent-dinamis)

Setiap request menggunakan User-Agent yang digenerate secara random dari kombinasi OS dan browser populer untuk menghindari blocking.

### Error Handling

[](#error-handling)

Jika terjadi error saat mengambil data dari BI, method akan mengembalikan array kosong dan error akan di-report menggunakan fungsi `report()` Laravel.

🎯 Mata Uang yang Didukung
-------------------------

[](#-mata-uang-yang-didukung)

Library ini mendukung semua mata uang yang tersedia di API Bank Indonesia, termasuk namun tidak terbatas pada:

- USD (US Dollar)
- EUR (Euro)
- JPY (Japanese Yen)
- GBP (British Pound)
- SGD (Singapore Dollar)
- AUD (Australian Dollar)
- CHF (Swiss Franc)
- CAD (Canadian Dollar)
- HKD (Hong Kong Dollar)
- CNY (Chinese Yuan)
- Dan mata uang lainnya yang didukung BI

📋 Requirements
--------------

[](#-requirements)

- PHP &gt;= 7.4
- Laravel &gt;= 8.0
- GuzzleHttp/Guzzle
- Laravel Cache

🤝 Contributing
--------------

[](#-contributing)

Kontribusi selalu diterima! Silakan buat pull request atau buka issue untuk bug report dan feature request.

📄 License
---------

[](#-license)

Library ini menggunakan lisensi MIT. Lihat file [LICENSE](LICENSE) untuk detail lengkap.

🐛 Bug Reports
-------------

[](#-bug-reports)

Jika Anda menemukan bug, silakan buat issue di [GitHub Issues](https://github.com/fyyyn1210/kursbi/issues) dengan informasi:

1. Versi PHP yang digunakan
2. Versi Laravel yang digunakan
3. Code snippet yang menyebabkan error
4. Pesan error yang muncul

📞 Support
---------

[](#-support)

Jika Anda butuh bantuan atau memiliki pertanyaan, silakan:

- Buka issue di GitHub
- Email: \[\]

🎉 Credits
---------

[](#-credits)

- Data kurs dari [Bank Indonesia](https://www.bi.go.id)
- Terima kasih kepada semua kontributor

---

⭐ **Jangan lupa berikan star jika library ini membantu Anda!**

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance57

Moderate activity, may be stable

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

281d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/3d9c6c00350bffe8eab7ae1070e7aeb10e056f4d1e8ef59f9f80c8117efa16a3?d=identicon)[fyyyn](/maintainers/fyyyn)

---

Top Contributors

[![fyyyn1210](https://avatars.githubusercontent.com/u/106463487?v=4)](https://github.com/fyyyn1210 "fyyyn1210 (8 commits)")

---

Tags

laravelcurrencycurrency-converterBIexchange rateindonesiabank-indonesiakurs

### Embed Badge

![Health badge](/badges/fyyyn1210-kursbi/health.svg)

```
[![Health](https://phpackages.com/badges/fyyyn1210-kursbi/health.svg)](https://phpackages.com/packages/fyyyn1210-kursbi)
```

###  Alternatives

[highsolutions/eloquent-sequence

A Laravel package for easy creation and management sequence support for Eloquent models with elastic configuration.

121130.3k](/packages/highsolutions-eloquent-sequence)[matriphe/laraciproid

Indonesia city and province data migration and seeder for Laravel.

232.5k](/packages/matriphe-laraciproid)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
