# multisafepay/magento2-core

> MultiSafepay core module for Magento 2

`composer require multisafepay/magento2-core`

Canonical URL: https://packagento.com/multisafepay/magento2-core

## At a glance

- **Vendor**: multisafepay (https://packagento.com/multisafepay.md)
- **Latest version**: 3.19.0 — released 2026-05-18
- **Pricing**: Free
- **Package type**: Magento 2 module
- **Status**: active, accepting new buyers

## Installation

Packagento is licence-gated, so even free packages need a licence on a project before Composer can resolve them.

1. **Sign in or create an account** at https://packagento.com/customer/account/.

2. **Add the package to your account.** Open https://packagento.com/multisafepay/magento2-core and complete the free checkout. A licence is minted automatically.

3. **Create or pick a project, then activate the licence on it.**
   - Projects represent the Magento installs you deploy to. Manage them at https://packagento.com/projects/.
   - Activate the new licence on the project you'll deploy this package to. Activation is what generates the Composer credentials scoped to that project.

4. **Add the project credentials to your Magento codebase.**

   Grab the project's public + private key from https://packagento.com/projects/ (open the project, then its Credentials tab), and add them to `auth.json`:

   ```json
   {
     "http-basic": {
       "packagento.com": {
         "username": "ppk_live_...",
         "password": "psk_live_..."
       }
     }
   }
   ```

   Add the Packagento Composer repository to `composer.json`:

   ```json
   {
     "repositories": [
       { "type": "composer", "url": "https://packagento.com" }
     ]
   }
   ```

5. **Install and apply.**

   ```bash
   composer require multisafepay/magento2-core:*
   bin/magento setup:upgrade
   bin/magento setup:di:compile
   bin/magento cache:flush
   ```

## What it does

MultiSafepay core module for Magento 2

## README

<p align="center">
  <img src="https://www.multisafepay.com/fileadmin/template/img/multisafepay-logo.svg" width="400px" position="center">
</p>

## MultiSafepay plugin for Magento 2 (Core module)

ℹ️ This is the core module of our Magento 2 plugin.
For a complete installation of all our features, please check out our [meta package](https://github.com/MultiSafepay/magento2/).

### Installation

This module can be installed via composer:

```shell
composer require multisafepay/magento2-core
```

Next, enable the module:
```bash
bin/magento module:enable MultiSafepay_ConnectCore
```

Next, run the following commands:
```shell
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
```

**Please keep in mind that after installing this module, you will only have the MultiSafepay core functionalities which do not include the Magento backend, frontend and proper stock handling.**

For a quick installation of all the modules, we recommend using [the meta package](https://github.com/MultiSafepay/magento2) instead.

### Support
You can create issues on our repository. If you need any additional help or support, please contact <a href="mailto:integration@multisafepay.com">integration@multisafepay.com</a>

We are also available on our Magento Slack channel [#multisafepay-payments](https://magentocommeng.slack.com/messages/multisafepay-payments/). 
Feel free to start a conversation or provide suggestions as to how we can refine our Magento 2 plugin.

### A gift for your contribution
We look forward to receiving your input. Have you seen an opportunity to change things for better? We would like to invite you to create a pull request on GitHub.
Are you missing something and would like us to fix it? Suggest an improvement by sending us an [email](mailto:integration@multisafepay.com) or by creating an issue.

What will you get in return? A brand new designed MultiSafepay t-shirt which will make you part of the team!

### License
[Open Software License (OSL 3.0)](https://github.com/MultiSafepay/Magento2Msp/blob/master/LICENSE.md)

### Want to be part of the team?
Are you a developer interested in working at MultiSafepay? [View](https://www.multisafepay.com/careers/#jobopenings) our job openings and feel free to get in touch with us.

## Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

### [3.19.0] - 2026-05-18
#### Added
- PLGMAG2V2-906: Added a new controller that can be used to retrieve a MultiSafepay API Token

### [3.18.0] - 2026-04-29
#### Added
- PLGMAG2V2-893: Prevent duplicate completed webhooks from overwriting order totals
- DAVAMS-990: Added used card info to Apple Pay and Google Pay payment methods

#### Fixed
- PLGMAG2V2-900: Fixed PriceUtil tax calculations for sales display settings
- PLGMAG2V2-904: Fixed issue where gift cards are always using the fallback icon

#### Changed
- PLGMAG2V2-887: Changed instances where we were using getRealOrderId() to getIncrementId()
- PLGMAG2V2-891: Handle ApiException in GetNotification

### [3.17.0] - 2026-03-17
#### Added
- PLGMAG2V2-888: Implemented token-based redirect handling and removed the dependency on the checkout session when redirecting to the payment page.

### [3.16.0] - 2026-02-18
#### Changed
- PLGMAG2V2-886: When retrieving the order for GET notification requests, we now first check if the transaction Order ID matches the Magento Order ID
- PLGMAG2V2-884: Changed when to retrieve issuers and the api_token from the MultiSafepay API, e.g. it will not happen on the cart page anymore
- DAVAMS-954: Rebranded iDEAL - Wero and in3

#### Fixed
- PLGMAG2V2-885: Fixed an issue with E-invoicing Payment Component Direct transactions not being able to be placed

### [3.15.0] - 2026-01-21
#### Added
- PLGMAG2V2-881: Added a REST API endpoint to trigger the notification through the Magento 2 API

#### Changed
- PLGMAG2V2-861: MultiBanco now initialises in pending state

#### Removed
- PLGMAG2V2-810: Deprecated the Sofort payment method

### [3.14.0] - 2025-09-12
#### Changed
- PLGMAG2V2-872: Changed it so that payment links for bank transfer transactions are immediately added as an order comment, instead of on 'Initialized' status notification
- PLGMAG2V2-868: Updated the American Express fallback icon to the latest version

#### Removed
- DAVAMS-918: Deprecated Zinia payment method

### [3.13.1] - 2025-08-22
#### Fixed
- PLGMAG2V2-864: Fixed automatic gateway detection switch for generic giftcards

### [3.13.0] - 2025-07-29
#### Added
- PLGMAG2V2-852: Added support for Bancontact WIP in Magento Vault
- PLGMAG2V2-859: Added CODE_OF_CONDUCT.md

#### Fixed
- PLGMAG2V2-860: Fixed an issue where some orders do not have correct values after invoice creation with a specific Amasty Checkout Pro configuration
- PLGMAG2V2-862: Fixed CancelOrder process error when transaction_id param can not be found, thanks to @CanvasCompanyHylke

### [3.12.0] - 2025-07-09
#### Added
- PLGMAG2V2-850: Added customer company name to the order request
- PLGMAG2V2-856: Added logging for payment component requests

#### Fixed
- PLGMAG2V2-854: Fixed Fooman Surcharges not being picked up for BNPL refunds
- PLGMAG2V2-853: Fixed BNPL refund processing of bundle product items with non dynamic pricing

### [3.11.0] - 2025-05-20
#### Fixed
- PLGMAG2V2-846: Fix an issue with some orders going back to pending payment right after customer account creation after checkout

#### Removed
- DAVAMS-901: Removed the deprecated payment method 'Alipay'

### [3.10.1] - 2025-05-01
#### Fixed
- PLGMAG2V2-840: Fix Monolog issue in Magento 2.4.8, thanks to @jissereitsma
- PLGMAG2V2-841: Fix shopping cart refund issue due to version comparison bug
- PLGMAG2V2-842: Fix PHP 8.4 deprecations

#### Changed
- MAGWIRE-32: Move some generic gateway logic to own util

### [3.10.0] - 2025-04-02
#### Added
- PLGMAG2V2-831: Added invoice_url to invoice update request for E-invoicing
- PLGMAG2V2-832: Added setting for adding iDEAL payment page step

#### Fixed
- PLGMAG2V2-835: Fixed broken Einvoicing refund

_(Changelog truncated for .md surface. Full history on https://packagento.com/multisafepay/magento2-core.)_

## Recent Versions

| Version | Released |
|---|---|
| 3.19.0 | 2026-05-18 |
| 3.18.0 | 2026-04-30 |
| 3.17.0 | 2026-03-18 |
| 3.16.0 | 2026-02-18 |
| 3.15.0 | 2026-01-22 |
| 3.14.0 | 2025-09-15 |
| 3.13.1 | 2025-08-22 |
| 3.13.0 | 2025-07-29 |
| 3.12.0 | 2025-07-09 |
| 3.11.0 | 2025-05-20 |

Showing 10 of 73 versions. Full release history on https://packagento.com/multisafepay/magento2-core.

## Dependencies

### Require

| Package | Constraint |
|---|---|
| ext-curl | * |
| ext-json | * |
| ext-pcre | * |
| magento/framework | ^102.0\|^103.0 |
| magento/module-checkout | ^100.0 |
| magento/module-payment | ^100.0 |
| magento/module-quote | ^101.0 |
| magento/module-sales | ^102.0\|^103.0 |
| magento/module-store | ^101.0 |
| magento/module-vault | ^101.0 |
| multisafepay/php-sdk | ^5.21 |
| nyholm/psr7 | ^1.4 |
| php | >=7.2 |
| psr/http-client | ^1.0 |

### Require (dev)

| Package | Constraint |
|---|---|
| object-calisthenics/phpcs-calisthenics-rules | ^3.5 \|\| ^2.0 |
| php-http/mock-client | ^1.3 |

### Provide

| Package | Constraint |
|---|---|
| psr/http-client-implementation | 1.0 |

## Quality

Latest release (3.19.0) fails the Packagento QA pipeline. Verdicts below are per-cell (Magento line × PHP version) for the matrixed tools, and run-once for the static / security tiers.


### Compatibility

Each Magento line is installed on its supported PHP versions, then the module is built (DI compile + static-content deploy). Cells show passed / failed / untested; staircase gaps render as `–`.

| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | Pass | Pass | – | – |
| 2.4.8 | – | Pass | Pass | – |
| 2.4.9 | – | – | Pass | Pass |


### Code Quality

Advisory checks against the module's source. Never affect the Compatibility verdict — a phpcs finding can't make a module incompatible.

#### Static Analysis

Coding standards (phpcs), mess detection (phpmd), copy-pasted code (cpd), PHP cross-version compatibility, composer.json validity. Each runs once for the whole module.

| Tool | Status | Findings | Summary |
|---|---|---|---|
| PHPCS | Fail | 14 | 1 error, 13 warnings (ruleset: Magento2) |
| PHPMD | Warning | 62 | 62 rule violations (IfStatementAssignment:29, UndefinedVariable:24, TooManyPublicMethods:4, TooManyMethods:2, MissingImport:2) |
| Cpd | Warning | 1 | 1 duplicated chunk spanning 22 total lines (min-lines=5, min-tokens=70) |
| Composer validate | Info | 1 | valid; 1 advisory note (composer validate --strict) |

#### PHPStan

Type-checks the module against a real Magento install. Re-runs per Magento + PHP version because resolvable symbols differ between releases.

| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | 90 | 90 | – | – |
| 2.4.8 | – | 93 | 93 | – |
| 2.4.9 | – | – | 93 | 93 |


### Tests

Unit and integration suites run per Magento + PHP cell. Test failures speak to the module's behaviour, not its compatibility with a line, so they're reported here separately.

#### Unit Tests

| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | Error | not tested | – | – |
| 2.4.8 | – | Pass | Pass | – |
| 2.4.9 | – | – | not tested | Pass |

#### Integration Tests

| Magento | PHP 8.2 | PHP 8.3 | PHP 8.4 | PHP 8.5 |
|---|---|---|---|---|
| 2.4.7 | Error | Error | – | – |
| 2.4.8 | – | Error | Error | – |
| 2.4.9 | – | – | not tested | Error |


### Security

Dependency-advisory audit (composer audit) plus a source malware scan. A malware detection fails the version outright.

| Tool | Status | Findings | Summary |
|---|---|---|---|
| Composer audit | Pass | 0 |  |
| Malware scan | Pass | 0 |  |

## Licence and pricing

Free. A licence is still minted on checkout and bound to your project for Composer access — no payment step.

Refundable within 14 days of first purchase via https://packagento.com/account/refunds/.

## Install via Claude Code or any MCP client

The Packagento MCP server can run the licence + project + Composer steps above in one tool call:

```
purchase_and_install_packages(
  composer_names=["multisafepay/magento2-core"],
  project_id="proj_xxx"
)
```

This handles cart, checkout, licence minting, project activation, and writes auth.json credentials. Connect a client with `claude mcp add packagento https://mcp.packagento.com`. Full setup at https://packagento.com/docs/mcp-setup.

## Vendor

multisafepay is a Magento 2 vendor on Packagento. See https://packagento.com/multisafepay.md for their full catalogue.

