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(10mo ago)37.1k↑12.2%4[2 PRs](https://github.com/ifm24/bank-statements/pulls)MITPHPPHP ^8.3CI passing

Since Apr 2Pushed 10mo 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 2d 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

50

—

FairBetter than 95% of packages

Maintenance54

Moderate activity, may be stable

Popularity29

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

308d 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

[craftcms/cms

Craft CMS

3.6k3.6M3.1k](/packages/craftcms-cms)[spatie/crawler

Crawl all internal links found on a website

2.8k18.5M67](/packages/spatie-crawler)[drupal/drupal-extension

Drupal extension for Behat

22215.7M173](/packages/drupal-drupal-extension)[drupal/core-dev

require-dev dependencies from drupal/drupal; use in addition to drupal/core-recommended to run tests from drupal/core.

2022.6M343](/packages/drupal-core-dev)[voku/simple_html_dom

Simple HTML DOM package.

9199.0M85](/packages/voku-simple-html-dom)[blackfire/player

A powerful web crawler and web scraper with Blackfire support

49617.1k](/packages/blackfire-player)

PHPackages © 2026

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