PHPackages                             12goyuriyr/symfony-mono-acquiring-bundle - 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. 12goyuriyr/symfony-mono-acquiring-bundle

ActiveSymfony-bundle[Payment Processing](/categories/payments)

12goyuriyr/symfony-mono-acquiring-bundle
========================================

Symfony bundle for Monobank Acquiring API integration (invoices, payments, currency rates)

v1.0.1(1mo ago)00MITPHPPHP &gt;=8.1CI passing

Since Mar 21Pushed 1mo agoCompare

[ Source](https://github.com/12goYuriyR/symfony-mono-acquiring-bundle)[ Packagist](https://packagist.org/packages/12goyuriyr/symfony-mono-acquiring-bundle)[ RSS](/packages/12goyuriyr-symfony-mono-acquiring-bundle/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (8)Versions (4)Used By (0)

Monobank Acquiring Bundle for Symfony
=====================================

[](#monobank-acquiring-bundle-for-symfony)

[![CI](https://github.com/12goYuriyR/symfony-mono-acquiring-bundle/actions/workflows/ci.yml/badge.svg)](https://github.com/12goYuriyR/symfony-mono-acquiring-bundle/actions)[![Latest Stable Version](https://camo.githubusercontent.com/1084539fcb68184ef7d561a42857538de5387d894b1a8910a86c4c77e473a824/68747470733a2f2f706f7365722e707567782e6f72672f3132676f7975726979722f73796d666f6e792d6d6f6e6f2d616371756972696e672d62756e646c652f76)](https://packagist.org/packages/12goyuriyr/symfony-mono-acquiring-bundle)[![License](https://camo.githubusercontent.com/2f1d5a6bf4ca39170b5635bd1ad52b36bbe63fcfd0a7ea54974a26b6db9ffceb/68747470733a2f2f706f7365722e707567782e6f72672f3132676f7975726979722f73796d666f6e792d6d6f6e6f2d616371756972696e672d62756e646c652f6c6963656e7365)](https://packagist.org/packages/12goyuriyr/symfony-mono-acquiring-bundle)

Symfony bundle providing a typed HTTP client for [Monobank Acquiring API](https://api.monobank.ua/docs/acquiring.html).

Features
--------

[](#features)

- Create payment invoices
- Check invoice status
- Fetch currency exchange rates
- Typed DTOs instead of raw arrays
- Auto-configured via Symfony DI

Requirements
------------

[](#requirements)

- PHP 8.1+
- Symfony 6.4 / 7.x / 8.x

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

[](#installation)

### Step 1: Install the package

[](#step-1-install-the-package)

```
composer require 12goyuriyr/symfony-mono-acquiring-bundle
```

Symfony Flex will automatically register the bundle in `config/bundles.php`. If it didn't, add it manually:

```
return [
    // ...
    MonobankAcquiring\MonobankAcquiringBundle::class => ['all' => true],
];
```

### Step 2: Configure

[](#step-2-configure)

Add your Monobank merchant token to `.env`:

```
MONO_API_TOKEN=your_token_here
```

Create the bundle configuration file:

```
# config/packages/monobank_acquiring.yaml
monobank_acquiring:
    api_token: '%env(MONO_API_TOKEN)%'
    # api_url: 'https://api.monobank.ua'  # optional, this is the default
```

That's it. `MonoAcquiringClientInterface` is now available for dependency injection.

Usage
-----

[](#usage)

Inject `MonoAcquiringClientInterface` into your service:

```
use MonobankAcquiring\Client\MonoAcquiringClientInterface;

class PaymentService
{
    public function __construct(
        private readonly MonoAcquiringClientInterface $monoClient,
    ) {}

    public function createPayment(): string
    {
        $invoice = $this->monoClient->createInvoice([
            'amount' => 10000,       // amount in kopiykas (100.00 UAH)
            'ccy' => 980,            // ISO 4217 currency code (UAH)
            'merchantPaymInfo' => [
                'reference' => 'Order #123',
                'destination' => 'Payment for order #123',
            ],
            'redirectUrl' => 'https://example.com/payment/callback',
            'webHookUrl' => 'https://example.com/payment/webhook',
            'validity' => 3600,
        ]);

        // Redirect user to $invoice->getPageUrl()
        return $invoice->getInvoiceId();
    }

    public function checkStatus(string $invoiceId): bool
    {
        $status = $this->monoClient->getInvoiceStatus($invoiceId);

        return $status->isSuccess();
    }
}
```

### Available methods

[](#available-methods)

#### `createInvoice(array $payload): InvoiceResponse`

[](#createinvoicearray-payload-invoiceresponse)

Creates a payment invoice. Returns `InvoiceResponse` with `getInvoiceId()` and `getPageUrl()`.

See [Monobank API docs](https://api.monobank.ua/docs/acquiring.html#/paths/~1api~1merchant~1invoice~1create/post) for payload options.

#### `getInvoiceStatus(string $invoiceId): InvoiceStatus`

[](#getinvoicestatusstring-invoiceid-invoicestatus)

Returns `InvoiceStatus` with:

- `getStatus()` — raw status string
- `isCreated()`, `isProcessing()`, `isSuccess()`, `isFailure()`, `isExpired()`, `isReversed()` — status checks
- `getAmount()`, `getFinalAmount()`, `getCcy()` — payment amounts
- `getFee()` — gateway fee
- `getPaymentInfo()` — raw payment info array

#### `getRates(): Rate[]`

[](#getrates-rate)

Returns an array of `Rate` objects with:

- `getCurrencyCodeA()`, `getCurrencyCodeB()` — ISO 4217 codes
- `getDate()` — Unix timestamp
- `getRateSell()`, `getRateBuy()`, `getRateCross()` — exchange rates

### Error handling

[](#error-handling)

All API errors throw `MonoApiException`:

```
use MonobankAcquiring\Exception\MonoApiException;

try {
    $invoice = $monoClient->createInvoice($payload);
} catch (MonoApiException $e) {
    $e->getMessage();        // error description
    $e->getHttpStatusCode(); // HTTP status code
    $e->getResponseBody();   // raw response array
}
```

License
-------

[](#license)

MIT

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance90

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 66.7% 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 ~0 days

Total

2

Last Release

53d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/bfc2fd4505fddbfd1a48e63e3dbcf745e8ba7f0ff7c0e3fbfcfb4b6bdd672045?d=identicon)[Yuriy\_R](/maintainers/Yuriy_R)

---

Top Contributors

[![Yuriy-travelier](https://avatars.githubusercontent.com/u/220446453?v=4)](https://github.com/Yuriy-travelier "Yuriy-travelier (10 commits)")[![12goYuriyR](https://avatars.githubusercontent.com/u/63777829?v=4)](https://github.com/12goYuriyR "12goYuriyR (5 commits)")

---

Tags

symfonypaymentacquiringmonobankukraine

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/12goyuriyr-symfony-mono-acquiring-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/12goyuriyr-symfony-mono-acquiring-bundle/health.svg)](https://phpackages.com/packages/12goyuriyr-symfony-mono-acquiring-bundle)
```

###  Alternatives

[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[pentatrion/vite-bundle

Vite integration for your Symfony app

2725.3M13](/packages/pentatrion-vite-bundle)[paymentsuite/paymentsuite

PaymentSuite is an easy implementation for lot of Payment Methods for Symfony projects

2615.5k2](/packages/paymentsuite-paymentsuite)

PHPackages © 2026

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