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. [Payment Processing](/categories/payments)
4. /
5. knusperleicht/eps-bank-transfer

ActiveLibrary[Payment Processing](/categories/payments)

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

PSA e-payment standard (EPS) implementation for PHP

v1.3.2(2mo ago)260Apache-2.0PHPPHP &gt;=7.3.0CI failing

Since Aug 22Pushed 2mo 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 3w ago

READMEChangelogDependencies (24)Versions (10)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/798509b4df525f56802b56f8096862487f08023e3d7561c68656f8dab10d0d6e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4170616368652d2d322e302d626c75652e737667)](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)

Apache-2.0 – see LICENSE.

Credits
-------

[](#credits)

- Project initially started by @hakito:

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance86

Actively maintained with recent releases

Popularity13

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity37

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

Recently: every ~57 days

Total

8

Last Release

67d 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 (75 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

[tempest/framework

The PHP framework that gets out of your way.

2.2k31.1k12](/packages/tempest-framework)[cakephp/cakephp

The CakePHP framework

8.8k19.1M1.7k](/packages/cakephp-cakephp)[guzzlehttp/psr7

PSR-7 message implementation that also provides common utility methods

7.9k1.1B3.8k](/packages/guzzlehttp-psr7)[telnyx/telnyx-php

Official Telnyx PHP SDK — APIs for Voice, SMS, MMS, WhatsApp, Fax, SIP Trunking, Wireless IoT, Call Control, and more. Build global communications on Telnyx's private carrier-grade network.

35729.6k2](/packages/telnyx-telnyx-php)[typo3/cms

TYPO3 CMS is a free open source Content Management Framework initially created by Kasper Skaarhoj and licensed under GNU/GPL.

1.2k1.9M122](/packages/typo3-cms)[mollie/mollie-api-php

Mollie API client library for PHP. Mollie is a European Payment Service provider and offers international payment methods such as Mastercard, VISA, American Express and PayPal, and local payment methods such as iDEAL, Bancontact, SOFORT Banking, SEPA direct debit, Belfius Direct Net, KBC Payment Button and various gift cards such as Podiumcadeaukaart and fashioncheque.

60315.4M74](/packages/mollie-mollie-api-php)

PHPackages © 2026

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