PHPackages                             digitick/sepa-xml - 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. digitick/sepa-xml

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

digitick/sepa-xml
=================

Creates Single Euro Payments Area (SEPA) XML files for the Direct Debit and Credit Transfer operations.

3.1.0(2mo ago)2876.5M↓63.1%110[1 PRs](https://github.com/php-sepa-xml/php-sepa-xml/pulls)8LGPL-3.0-or-laterPHPPHP &gt;=7.2CI passing

Since Jul 12Pushed 1w ago21 watchersCompare

[ Source](https://github.com/php-sepa-xml/php-sepa-xml)[ Packagist](https://packagist.org/packages/digitick/sepa-xml)[ RSS](/packages/digitick-sepa-xml/feed)WikiDiscussions master Synced 2d ago

READMEChangelog (10)Dependencies (11)Versions (41)Used By (8)

php-sepa-xml
============

[](#php-sepa-xml)

[![Latest Stable Version](https://camo.githubusercontent.com/e5bd143af4628e6b00c797dbb2302bc8488b6eb7eb15a05adb669a2b415c3592/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f7068702d736570612d786d6c2f7068702d736570612d786d6c3f6c6162656c3d737461626c65)](https://github.com/php-sepa-xml/php-sepa-xml/releases/latest)[![Tests Status](https://github.com/php-sepa-xml/php-sepa-xml/actions/workflows/phpunit.yml/badge.svg)](https://github.com/php-sepa-xml/php-sepa-xml/actions/workflows/phpunit.yml)[![Static Analisys Status](https://github.com/php-sepa-xml/php-sepa-xml/actions/workflows/phpstan.yml/badge.svg)](https://github.com/php-sepa-xml/php-sepa-xml/actions/workflows/phpstan.yml/badge.svg)

SEPA / ISO20022 file generator for PHP.

Creates XML files for the Single Euro Payments Area (SEPA) Credit Transfer and Direct Debit Payments Initiation messages. These SEPA XML messages are a subset of the "ISO20022 Universal financial industry message scheme".

License: GNU Lesser General Public License v3.0

The versions of the [ISO20022 standard](https://www.iso20022.org/) supported are:

- For Credit Transfers:
    - pain.001.001.03
    - pain.001.001.04
    - pain.001.001.05
    - pain.001.001.06
    - pain.001.001.07
    - pain.001.001.08
    - pain.001.001.09 (The minimum version recommended)
    - pain.001.001.11
    - pain.001.001.12
    - Credit Transfer [Variants](https://www.iso20022.org/catalogue-messages/additional-content-messages/variants):
        - pain.001.002.03 (STPCreditTransferInitiationV03)
        - pain.001.003.03 (EUSTPCreditTransferInitiationV03)
- For Direct Debits:
    - pain.008.001.02
    - pain.008.001.03
    - pain.008.001.04
    - pain.008.001.05
    - pain.008.001.06
    - pain.008.001.07
    - pain.008.001.08 (The minimum version recommended)
    - pain.008.001.10
    - pain.008.001.11
    - Direct Debit [Variants](https://www.iso20022.org/catalogue-messages/additional-content-messages/variants):
        - pain.008.002.02
        - pain.008.003.02

We do not claim 100% support of those formats but the files produced by this library are validated against the official XSDs and they pass the validation. I you're missing a field or two please submit a PR. The library accepts a custom ISO20022 format so in theory you can use any of the versions in between the ones on the officially supported list.

Institutions that should accept these formats:

- Any bank that is part of the SEPA network and works with the ISO20022 standard

Institutions that are confirmed to accept these formats:

- Deutsche Kreditwirtschaft
- Fédération bancaire française
- ING (tested on direct credit, use *pain.001.001.03*)
- Commerzbank (tested on Credit Transfer, use *pain.001.001.03*)
- Spain: CaixaBank
- Spain: SantanderBank
- Netherlands: direct-debit (pain.008.001.02) at RABO-bank (thanks @rodekker)
- Austria: Raiffeisenbank direct-debit (pain.008.001.08) 2025-10-29
- Austria: Volksbank direct-debit (pain.008.001.08) 2025-10-29

Always verify generated files with your bank before using in production! If you encounter an institution that does accept this library's generated files please notify us to add it to the list or send a PR!

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

[](#installation)

### Composer

[](#composer)

This library is available in [packagist.org as digitick/sepa-xml](https://packagist.org/packages/digitick/sepa-xml), you can add it to your project via Composer:

```
composer require digitick/sepa-xml

```

Please note that the library still carries it's original name (namely `digitick/sepa-xml`) as we don't want to confuse people. The latest versions are developed by the [php-sepa-xml community](https://github.com/php-sepa-xml) and the packagist alias (`digitick/sepa-xml`) points here. In the near future we may switch to `php-sepa-xml/php-sepa-xml` as that is already the official package name.

Documentation
-------------

[](#documentation)

Check out our docs at:

- [handling Direct Debits](doc/direct_debit.md)
- [handling Credit Transfers](doc/credit_transfer.md)
- [handling string sanitization](doc/string_sanitization.md)

### ISO20022 Message Names

[](#iso20022-message-names)

ISO20022 messages follow a specific naming convention which can be denoted to the following pattern: `MessageType.MessageSubType.MessageVariant.MessageVersion`

For e.g. pain.001.001.12 should be decoded as:

- MessageType: 'PAIN' - Payments Initiation
- MessageSubType: '001' - CustomerCreditTransferInitiation
- MessageVariant: '001'
- MessageVersion: '12'

Development
-----------

[](#development)

Want to contribute? Please check out our [Dev docs](doc/dev_setup.md)

Any Questions?
--------------

[](#any-questions)

Feel free to open an issue. We will try to reply to the best of our knowledge.

External Resources
------------------

[](#external-resources)

- [Official ISO20022 Website](https://www.iso20022.org/)
- [ISO20022 Message Catalog](https://www.iso20022.org/full_catalogue.page)
- [ISO 20022 in XMLdation's wiki](https://wiki.xmldation.com/General_Information/ISO_20022)
- [InstdAmt vs. EqvtAmt](https://wiki.xmldation.com/General_Information/ISO_20022/Difference_between_InstdAmt_and_EqvtAmt)
- [CreditorIdentifier explanation](http://www.sepaforcorporates.com/sepa-direct-debits/sepa-creditor-identifier/)
- [SEPA Externded Character Set reference](http://www.sepahungary.hu/uploads/files/EPC217-08%20Best%20Practices%20-SEPA%20Requirements%20for%20Character%20Set.pdf)
- [ECB SEPA gateway page](http://www.ecb.europa.eu/paym/retpaym/html/index.en.html)
- [SEPA for Corporates Blog](http://www.sepaforcorporates.com/)

###  Health Score

71

—

ExcellentBetter than 100% of packages

Maintenance93

Actively maintained with recent releases

Popularity65

Solid adoption and visibility

Community45

Growing community involvement

Maturity70

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

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 ~151 days

Recently: every ~64 days

Total

32

Last Release

60d ago

Major Versions

0.10.1 → 1.0.02014-12-15

1.6.2 → 2.0-rc12020-06-19

2.3.2 → 3.0.02025-11-11

PHP version history (2 changes)0.9.1PHP &gt;=5.3.2

2.0-rc1PHP &gt;=7.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/4a0c15298bde9fac0fb1224859b69b1be1d17f747fc03d2b435e2028ea14f0d3?d=identicon)[monofone](/maintainers/monofone)

![](https://avatars.githubusercontent.com/u/396685?v=4)[Benjamin Paap](/maintainers/BenjaminPaap)[@BenjaminPaap](https://github.com/BenjaminPaap)

![](https://www.gravatar.com/avatar/7aca1429033f54a4fb64668cabe7e9ed94f2ea5cb5f3b18613202e0813de575c?d=identicon)[BorislavSabev](/maintainers/BorislavSabev)

![](https://avatars.githubusercontent.com/u/842206?v=4)[Digitick](/maintainers/digitick)[@digitick](https://github.com/digitick)

---

Top Contributors

[![BorislavSabev](https://avatars.githubusercontent.com/u/1708306?v=4)](https://github.com/BorislavSabev "BorislavSabev (137 commits)")[![ianare](https://avatars.githubusercontent.com/u/697242?v=4)](https://github.com/ianare "ianare (61 commits)")[![monofone](https://avatars.githubusercontent.com/u/373163?v=4)](https://github.com/monofone "monofone (54 commits)")[![BenjaminPaap](https://avatars.githubusercontent.com/u/396685?v=4)](https://github.com/BenjaminPaap "BenjaminPaap (21 commits)")[![MTijn](https://avatars.githubusercontent.com/u/3725681?v=4)](https://github.com/MTijn "MTijn (14 commits)")[![VincentLanglet](https://avatars.githubusercontent.com/u/9052536?v=4)](https://github.com/VincentLanglet "VincentLanglet (13 commits)")[![eusonlito](https://avatars.githubusercontent.com/u/644551?v=4)](https://github.com/eusonlito "eusonlito (9 commits)")[![Mauro1442](https://avatars.githubusercontent.com/u/95709453?v=4)](https://github.com/Mauro1442 "Mauro1442 (8 commits)")[![allphat](https://avatars.githubusercontent.com/u/1798897?v=4)](https://github.com/allphat "allphat (7 commits)")[![stollr](https://avatars.githubusercontent.com/u/1118790?v=4)](https://github.com/stollr "stollr (7 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (4 commits)")[![ch3ric](https://avatars.githubusercontent.com/u/858068?v=4)](https://github.com/ch3ric "ch3ric (4 commits)")[![xabbuh](https://avatars.githubusercontent.com/u/1957048?v=4)](https://github.com/xabbuh "xabbuh (3 commits)")[![beinbm](https://avatars.githubusercontent.com/u/995872?v=4)](https://github.com/beinbm "beinbm (3 commits)")[![denis-sokolov](https://avatars.githubusercontent.com/u/113721?v=4)](https://github.com/denis-sokolov "denis-sokolov (3 commits)")[![mabjavaid](https://avatars.githubusercontent.com/u/62252347?v=4)](https://github.com/mabjavaid "mabjavaid (3 commits)")[![markusramsak](https://avatars.githubusercontent.com/u/6324059?v=4)](https://github.com/markusramsak "markusramsak (3 commits)")[![persteinhorst](https://avatars.githubusercontent.com/u/6418121?v=4)](https://github.com/persteinhorst "persteinhorst (3 commits)")[![vaites](https://avatars.githubusercontent.com/u/478660?v=4)](https://github.com/vaites "vaites (3 commits)")[![jjk-jacky](https://avatars.githubusercontent.com/u/1540519?v=4)](https://github.com/jjk-jacky "jjk-jacky (2 commits)")

---

Tags

xmlsepaBanking

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Rector

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/digitick-sepa-xml/health.svg)

```
[![Health](https://phpackages.com/badges/digitick-sepa-xml/health.svg)](https://phpackages.com/packages/digitick-sepa-xml)
```

###  Alternatives

[abcaeffchen/sephpa

Generates SEPA files for credit transfers (pain.001.001.03, pain.001.002.03, pain.001.003.03, pain.001.001.09) and direct debit (pain.008.001.02, pain.008.002.02, pain.008.003.02, pain.008.001.08)

711.8M](/packages/abcaeffchen-sephpa)[dmitrirussu/php-sepa-xml-generator

Creates an XML file for a Single Euro Payments Area (SEPA) Direct Debit Payment.

5547.2k](/packages/dmitrirussu-php-sepa-xml-generator)[perryfaro/sepa

Creates an XML file for a Single Euro Payments Area (SEPA) Credit Transfer.

1150.3k](/packages/perryfaro-sepa)

PHPackages © 2026

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