PHPackages                             knusperleicht/eps-bank-transfer - 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. knusperleicht/eps-bank-transfer

ActiveLibrary

knusperleicht/eps-bank-transfer
===============================

PSA e-payment standard (EPS) implementation for PHP

v1.3.1(5mo ago)227GPL-2.0-or-laterPHPPHP &gt;=7.3.0CI passing

Since Aug 22Pushed 5mo agoCompare

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

READMEChangelogDependencies (12)Versions (9)Used By (0)

EPS Bank Transfer (knusperleicht/eps-bank-transfer)
===================================================

[](#eps-bank-transfer-knusperleichteps-bank-transfer)

[![Tests](https://github.com/knusperleicht/eps-bank-transfer/actions/workflows/tests.yml/badge.svg)](https://github.com/knusperleicht/eps-bank-transfer/actions/workflows/tests.yml)[![Latest Stable Version](https://camo.githubusercontent.com/6ba4b4b725e975f097d582bb904febafb41fe26e802fc24f929d10490639d843/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6b6e75737065726c65696368742f6570732d62616e6b2d7472616e736665722e737667)](https://packagist.org/packages/knusperleicht/eps-bank-transfer)[![Total Downloads](https://camo.githubusercontent.com/bc6a82cf52b1914a62c11085e3cf0435fe6a1b4d9878825a10d0ea89193dfcac/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6b6e75737065726c65696368742f6570732d62616e6b2d7472616e736665722e737667)](https://packagist.org/packages/knusperleicht/eps-bank-transfer)[![License](https://camo.githubusercontent.com/26f8b6541ea045cc1dbc2267208158b5a7ebbf5cf437c4b486d80fee9386f77e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d47504c2d2d322e302d2d6f722d2d6c617465722d626c75652e737667)](LICENSE)[![PHP Version Support](https://camo.githubusercontent.com/da2840aa516bf6433681f4fc1489b791640f2db9bc1e9b92bfa86f145523cd4b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f6b6e75737065726c65696368742f6570732d62616e6b2d7472616e736665722e737667)](https://packagist.org/packages/knusperleicht/eps-bank-transfer)

A PHP library for integrating the Austrian EPS bank transfer (PSA, specification v2.6, with preparation for v2.7). It helps you start EPS payments, handle the confirmation (callback/return), and trigger refunds (full or partial). Note on origins: This project was initially based on hakito/php-stuzza-eps-banktransfer. The codebase was rewritten but has the same core functionality. Credit to the original authors for the concept and initial implementation.

Links:

- Original code:
- Specification/Info:

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

[](#installation)

Install via Composer:

```
composer require knusperleicht/eps-bank-transfer
```

What is this library for?
-------------------------

[](#what-is-this-library-for)

- Start an EPS payment: Create a payment request and redirect customers to the bank list/bank.
- Receive confirmation (return/callback): Verify the transaction status and update your order.
- Refund: Trigger a full or partial refund.

The library wraps the required requests/responses generated from the official XSD schemas and provides PSR-compatible HTTP communication.

Quick start
-----------

[](#quick-start)

Check the examples in the `samples/` folder:

- `samples/eps_start.php` – Start a payment (fetch bank list, initialize payment)
- `samples/eps_confirm.php` – Process the confirmation callback
- `samples/eps_refund.php` – Trigger a refund

### Basic configuration (Test/Live)

[](#basic-configuration-testlive)

The `SoCommunicator` provides endpoint URLs as constants: `TEST_MODE_URL` for test environments and `LIVE_MODE_URL` for production usage. Choose the appropriate URL for your environment.

Example:

```
use Knusperleicht\EpsBankTransfer\Api\SoCommunicator;
use GuzzleHttp\Client;
use Http\Discovery\Psr17FactoryDiscovery;

$isTestMode = true;
$url = $isTestMode ? SoCommunicator::TEST_MODE_URL : SoCommunicator::LIVE_MODE_URL;

$requestFactory = Psr17FactoryDiscovery::findRequestFactory();
$streamFactory = Psr17FactoryDiscovery::findStreamFactory();
$soCommunicator = new SoCommunicator(
    new Client(['verify' => true]),
    $requestFactory,
    $streamFactory,
    $url
);
```

Typical flow
------------

[](#typical-flow)

1. Get bank list (optional): Show available banks to the user.
2. Start payment: Create the start request with amount, currency, order ID, and return URLs.
3. User is redirected to the bank/e-banking.
4. Process callback/return: Validate status, amount, order ID; update your order status.
5. Optional: Perform a refund.

The examples under `samples/` demonstrate this end-to-end flow.

Security and limitations
------------------------

[](#security-and-limitations)

- XML signatures/certificates: Not supported at the moment. Make sure your confirmation URL is hard to guess (e.g., unique tokens per transaction).
- TLS/verification: Keep certificate verification enabled (`['verify' => true]`).
- Idempotency: Implement idempotent handling for callbacks and refunds.

Generated classes from XSD (background &amp; generation)
--------------------------------------------------------

[](#generated-classes-from-xsd-background--generation)

Requests/responses are generated from the official XSD schemas. This ensures type safety and compatibility with the EPS standard. If schemas change or you need adjustments, you can regenerate the PHP classes:

```
vendor/bin/xsd2php convert xsd2php.yaml resources/schemas/*.xsd
```

- `xsd2php.yaml` contains the mapping configuration.
- Schemas live under `resources/schemas`.
- Generated classes are placed under `src/Internal/Generated/...` namespaces and used by the serializer.

Tests
-----

[](#tests)

PHPUnit is configured. Run:

```
vendor/bin/phpunit
```

License
-------

[](#license)

GPL-2.0-or-later – see LICENSE.

Credits
-------

[](#credits)

- Project initially started by @hakito:

###  Health Score

33

—

LowBetter than 75% of packages

Maintenance70

Regular maintenance activity

Popularity10

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

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

Recently: every ~21 days

Total

7

Last Release

168d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/96c4b7760573a04130d78256bc4115f5638b5a4996396f4840cc223ccb343786?d=identicon)[knusperleicht](/maintainers/knusperleicht)

---

Top Contributors

[![hakito](https://avatars.githubusercontent.com/u/320853?v=4)](https://github.com/hakito "hakito (109 commits)")[![n4uti](https://avatars.githubusercontent.com/u/3443197?v=4)](https://github.com/n4uti "n4uti (73 commits)")[![ThomasLandauer](https://avatars.githubusercontent.com/u/1054469?v=4)](https://github.com/ThomasLandauer "ThomasLandauer (43 commits)")[![bountin](https://avatars.githubusercontent.com/u/208063?v=4)](https://github.com/bountin "bountin (6 commits)")[![nucle](https://avatars.githubusercontent.com/u/2041897?v=4)](https://github.com/nucle "nucle (2 commits)")[![stefan-kamsker](https://avatars.githubusercontent.com/u/34944934?v=4)](https://github.com/stefan-kamsker "stefan-kamsker (2 commits)")

---

Tags

epseps-transfereps-transfer-phppaymentsepsbank transferstuzza

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/knusperleicht-eps-bank-transfer/health.svg)

```
[![Health](https://phpackages.com/badges/knusperleicht-eps-bank-transfer/health.svg)](https://phpackages.com/packages/knusperleicht-eps-bank-transfer)
```

###  Alternatives

[cakephp/cakephp

The CakePHP framework

8.8k18.5M1.6k](/packages/cakephp-cakephp)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[opensearch-project/opensearch-php

PHP Client for OpenSearch

15024.3M65](/packages/opensearch-project-opensearch-php)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[tempest/framework

The PHP framework that gets out of your way.

2.1k23.1k9](/packages/tempest-framework)[neos/flow

Flow Application Framework

862.0M451](/packages/neos-flow)

PHPackages © 2026

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