PHPackages                             jakubzapletal/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. jakubzapletal/bank-statements

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

jakubzapletal/bank-statements
=============================

The PHP library to parse bank account statements

1.0.0(10y ago)314.3k18[2 issues](https://github.com/jakubzapletal/bank-statements/issues)[3 PRs](https://github.com/jakubzapletal/bank-statements/pulls)MITPHPPHP &gt;=5.3.0

Since Apr 2Pushed 3y ago7 watchersCompare

[ Source](https://github.com/jakubzapletal/bank-statements)[ Packagist](https://packagist.org/packages/jakubzapletal/bank-statements)[ RSS](/packages/jakubzapletal-bank-statements/feed)WikiDiscussions master Synced yesterday

READMEChangelog (1)Dependencies (5)Versions (2)Used By (0)

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

[](#bank-statements)

[![Build Status](https://camo.githubusercontent.com/45ff376104f3e83f7f87e578c34bfb29f2bec25bc44e1a17b888e69a0d58d3f2/68747470733a2f2f7472617669732d63692e6f72672f6a616b75627a61706c6574616c2f62616e6b2d73746174656d656e74732e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/jakubzapletal/bank-statements)[![Coverage Status](https://camo.githubusercontent.com/b449ba6374a07ca78349dd920e47113afd8126096f62cd8d4fbfe7c15414f02b/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6a616b75627a61706c6574616c2f62616e6b2d73746174656d656e74732f62616467652e706e673f6272616e63683d6d6173746572)](https://coveralls.io/r/jakubzapletal/bank-statements?branch=master)[![SensioLabsInsight](https://camo.githubusercontent.com/186525751e9321751dd61a78eb0becac1d2a29df00e87a5885c35dd0da156b7d/68747470733a2f2f696e73696768742e73656e73696f6c6162732e636f6d2f70726f6a656374732f37666561653364392d663239662d343163322d393834332d3231386632656163356462392f6d696e692e706e67)](https://insight.sensiolabs.com/projects/7feae3d9-f29f-41c2-9843-218f2eac5db9)

[![Latest Stable Version](https://camo.githubusercontent.com/1ef740e0d0aea1b3f750b73be6a55009f383768c27dfedf2293686e704a07a02/68747470733a2f2f706f7365722e707567782e6f72672f6a616b75627a61706c6574616c2f62616e6b2d73746174656d656e74732f762f737461626c652e706e67)](https://packagist.org/packages/jakubzapletal/bank-statements)[![Total Downloads](https://camo.githubusercontent.com/7f656f43f7b89144dd02c84fdc2bd6fe96d2a9c0fe012553b92e178303d5962a/68747470733a2f2f706f7365722e707567782e6f72672f6a616b75627a61706c6574616c2f62616e6b2d73746174656d656e74732f646f776e6c6f6164732e706e67)](https://packagist.org/packages/jakubzapletal/bank-statements)[![Latest Unstable Version](https://camo.githubusercontent.com/bed436de9e841333b024e6cf11eacc4d1e2e993ed0964a66a220f956be2c430a/68747470733a2f2f706f7365722e707567782e6f72672f6a616b75627a61706c6574616c2f62616e6b2d73746174656d656e74732f762f756e737461626c652e706e67)](https://packagist.org/packages/jakubzapletal/bank-statements)[![License](https://camo.githubusercontent.com/1654fc1d4c363232cd11ccbbb0a454a661d5f609c5451f2605c60ef07df84cae/68747470733a2f2f706f7365722e707567782e6f72672f6a616b75627a61706c6574616c2f62616e6b2d73746174656d656e74732f6c6963656e73652e706e67)](https://packagist.org/packages/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 `jakubzapletal/bank-statements` to `composer.json`:

```
$ composer require "jakubzapletal/bank-statements:1.0.*@dev"
```

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

35

—

LowBetter than 79% of packages

Maintenance19

Infrequent updates — may be unmaintained

Popularity33

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

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

3692d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/41afbfa7a0e3d193482f8dcb08258202ece1cff6445327ce49722a1fd1e72d3f?d=identicon)[jakubzapletal](/maintainers/jakubzapletal)

---

Top Contributors

[![jakubzapletal](https://avatars.githubusercontent.com/u/983464?v=4)](https://github.com/jakubzapletal "jakubzapletal (51 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/jakubzapletal-bank-statements/health.svg)

```
[![Health](https://phpackages.com/badges/jakubzapletal-bank-statements/health.svg)](https://phpackages.com/packages/jakubzapletal-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)
