PHPackages                             ifm24/bank-statements - 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. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. ifm24/bank-statements

ActiveLibrary[Parsing &amp; Serialization](/categories/parsing)

ifm24/bank-statements
=====================

The PHP library to parse bank account statements

7.0.0(8mo ago)36.1k↓50%4[2 PRs](https://github.com/ifm24/bank-statements/pulls)MITPHPPHP ^8.3

Since Apr 2Pushed 8mo ago1 watchersCompare

[ Source](https://github.com/ifm24/bank-statements)[ Packagist](https://packagist.org/packages/ifm24/bank-statements)[ RSS](/packages/ifm24-bank-statements/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (2)Dependencies (6)Versions (14)Used By (0)

Bank Statements
===============

[](#bank-statements)

Forked from [jakubzapletal/bank-statements](https://github.com/jakubzapletal/bank-statements).

This is a PHP library to parse bank account statements. The purpose of this library is to simplify bank statements processing and usage in your application in more standardized way. The parser result is an instance of: `JakubZapletal\Component\BankStatement\Statement\StatementInterface` containing detail information about a statement and an array of `JakubZapletal\Component\BankStatement\Statement\Transaction\TransactionInterface` with further information about transactions.

### Supported formats/bank list

[](#supported-formatsbank-list)

- ABO (`*.gpc`) \[[doc](doc/abo.md)\]
- Česká spořitelna (CZ): `JakubZapletal\Component\BankStatement\Parser\ABO\CeskaSporitelnaCZParser`
- ČSOB (CZ): `JakubZapletal\Component\BankStatement\Parser\ABOParser`
- Fio banka (CZ): `JakubZapletal\Component\BankStatement\Parser\ABOParser`
- GE Money Bank (CZ): `JakubZapletal\Component\BankStatement\Parser\ABOParser`
- Komerční banka (CZ), *alias KM format*: `JakubZapletal\Component\BankStatement\Parser\ABOParser`
- Raiffeisenbank (CZ): `JakubZapletal\Component\BankStatement\Parser\ABOParser`
- XML
- ČSOB (CZ) \[[doc](doc/xml/csob_cz.md)\]: `JakubZapletal\Component\BankStatement\Parser\XML\CSOBCZParser`
- CSV

Installation
------------

[](#installation)

Note that Bank Statements is [PSR-4](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader.md) compliant:

### Composer

[](#composer)

If you don't have Composer [install](http://getcomposer.org/doc/00-intro.md#installation) it:

```
$ curl -s https://getcomposer.org/installer | php
```

Add `ifm24/bank-statements` to `composer.json`:

```
$ composer require "ifm24/bank-statements"
```

Usage
-----

[](#usage)

Parsing of each format is provided by a class implementing:

```
JakubZapletal\Component\BankStatement\Parser\ParserInterface
```

Thanks to the interface we can rely on two main public methods: `parseFile` and `parseContent`.

- `parseFile` expects as an argument a **path to file** and then processes the parsing
- `parseContent` expects as an argument a **string of content** and then processes the parsing

Both methods return a class implementing:

```
JakubZapletal\Component\BankStatement\Statement\StatementInterface
```

The statement class includes transaction items, which are classes implementing:

```
JakubZapletal\Component\BankStatement\Statement\Transaction\TransactionInterface
```

This behaviour ensures the **same approach to the parsing and results for all parsers**.

All abstract classes and standard classes are **easily extendable**, allowing implement parsing process of any data.

The basic statement class:

```
JakubZapletal\Component\BankStatement\Statement\Statement
```

implements `Countable` and `Iterator`, so we can call function `count()` on it's instances or traverse them using `foreach()`. Keep in mind that transactions of the statements are used. If you need more functionality in the statement class, I recommend extend this class.

### Examples

[](#examples)

The parsing:

```
use JakubZapletal\Component\BankStatement\Parser\ABOParser;

$parser = new ABOParser();

// by path to file
$path = '/path/to/file';
$statement = $parser->parseFile($path);

// by content
$content = 'string of data';
$statement = $parser->parseContent($content);
```

Manipulation with the statement:

```
echo count($statement); // echo count of transaction items

foreach ($statement as $transaction) {
    // do something with each transaction
}

echo $statement->getAccountNumber(); // echo an account number of the statement
```

Contributing
------------

[](#contributing)

Contributions are welcome! Please see the [Contribution Guidelines](contributing.md).

###  Health Score

51

—

FairBetter than 96% of packages

Maintenance59

Moderate activity, may be stable

Popularity28

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity85

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 67.1% 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

Every ~429 days

Recently: every ~226 days

Total

9

Last Release

262d ago

Major Versions

1.0.0 → 2.0.02021-09-30

2.0.0 → 4.0.02023-03-08

4.1.1 → 7.0.02025-08-29

PHP version history (5 changes)1.0.0PHP &gt;=5.3.0

2.0.0PHP ^7.1 || ^8.0

3PHP ^8.0

4.0.0PHP ^8.1

7.0.0PHP ^8.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/ac6d98091d07a41ebf65cf8496d73e14297ada4031f998d68a2ab30e6ef8a883?d=identicon)[enumag](/maintainers/enumag)

![](https://avatars.githubusercontent.com/u/8931645?v=4)[Richard Winkler Bejr](/maintainers/arosis)[@arosis](https://github.com/arosis)

---

Top Contributors

[![jakubzapletal](https://avatars.githubusercontent.com/u/983464?v=4)](https://github.com/jakubzapletal "jakubzapletal (51 commits)")[![enumag](https://avatars.githubusercontent.com/u/539462?v=4)](https://github.com/enumag "enumag (11 commits)")[![nedvajz](https://avatars.githubusercontent.com/u/1135477?v=4)](https://github.com/nedvajz "nedvajz (5 commits)")[![arosis](https://avatars.githubusercontent.com/u/8931645?v=4)](https://github.com/arosis "arosis (4 commits)")[![MartinMystikJonas](https://avatars.githubusercontent.com/u/2094752?v=4)](https://github.com/MartinMystikJonas "MartinMystikJonas (3 commits)")[![rebendajirijr](https://avatars.githubusercontent.com/u/3431185?v=4)](https://github.com/rebendajirijr "rebendajirijr (1 commits)")[![tomasbedrich](https://avatars.githubusercontent.com/u/4974343?v=4)](https://github.com/tomasbedrich "tomasbedrich (1 commits)")

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/ifm24-bank-statements/health.svg)

```
[![Health](https://phpackages.com/badges/ifm24-bank-statements/health.svg)](https://phpackages.com/packages/ifm24-bank-statements)
```

###  Alternatives

[spekulatius/phpscraper

PHPScraper, built with simplicity in mind. See tests/ for more examples.

583143.5k3](/packages/spekulatius-phpscraper)[scotteh/php-dom-wrapper

Simple DOM wrapper to select nodes using either CSS or XPath expressions and manipulate results quickly and easily.

1471.9M10](/packages/scotteh-php-dom-wrapper)

PHPackages © 2026

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