almapay / alma-monthlypayments-magento2

almapay/alma-monthlypayments-magento2

Integrates Alma Monthly Payments into Magento 2

magento2-module Compatibility: 2.4.7-2.4.9 Code Quality: Fail Tests: Pass Security: Pass MIT

Alma Monthly Payments for Magento 2

This plugin adds a new payment method to Magento 2, which allows you to offer monthly payments to your customer using Alma.

Description

Alma is a service to provide merchants with an easy and safe monthly payments solution.
Let your customers pay for their purchases at their own pace! You'll receive the funds instantly, and your customer will pay later over a few monthly instalments.

This plugin integrates Alma into Magento 2 by adding a new payment method that you can activate to offer monthly payments to your customers.

Requirements

Compatibility

  • Adobe Commerce (Magento) versions 2.3.5 to 2.4.7: Fully compatible with the latest version of our module.
  • Adobe Commerce (Magento) versions 2.2.8 to 2.3.5: Compatible with module version 2.8.2.
  • Adobe Commerce (Magento) versions lower than 2.2.8: Partially compatible with module version 2.8.2.
  • PHP: Compatible with versions 7.1 to 8.1

Installation

Account Setup (Required)

Before configuring the module, you need to create your merchant account on dashboard.getalma.eu.

  1. Go to registration page and create an account.
  2. Retrieve your API key from the dashboard.
  3. Use these credentials in the module configuration.

Method: Composer Installation (Recommended)

  1. Run the following command in your Magento root directory:

    $ composer require almapay/alma-monthlypayments-magento2
    
  2. Enable the module:

    $ bin/magento module:enable Alma_MonthlyPayments
    
  3. Run setup upgrade and compile:

    $ bin/magento setup:upgrade
    $ bin/magento setup:di:compile
    $ bin/magento setup:static-content:deploy
    $ bin/magento cache:flush
    

Configuring the plugin

After installing the plugin, go to Stores > Configuration > Sales > Payment Methods.
Find "Alma Monthly Payments" in the payment methods list to start configuring it.

Fill in the API keys for your account, which you can find on your dashboard's security page.

You also have access to different settings to control what the plugin should display on the Cart, Mini-cart and Checkout pages.
We advise you to stay in "Test" mode until you're happy with your configuration and are ready to accept payments from your customers.

Once everything is properly set up, go ahead and switch to "Live" mode!

Support

If you encounter any issues or have questions, feel free to contact us at [email protected].

Changelog

v5.8.1 - 2025-10-01

Changes

  • Backport main to develop (#280)

🐛 Bug Fixes

  • fix: install on version 2.4.8 (#283)

Contributors

@Benjamin-Freoua-Alma, @alma-renovate-bot[bot], @remi-zuffinetti, alma-renovate-bot[bot] and github-actions[bot]

v5.8.0 - 2025-09-30

Changes

🚀 New Features

  • feat: add payment method list to cms Features (#278)

Contributors

@Francois-Gomis, @alma-renovate-bot[bot], @remi-zuffinetti, alma-renovate-bot[bot] and github-actions[bot]

v5.7.1 - 2025-07-31

🐛 Bug Fixes

  • Coding standard lint and escape (#271)

Contributors

@Francois-Gomis and github-actions[bot]

v5.7.0 - 2025-07-30

Changes

🚀 New Features

  • fix PHP 8.4 Implicitly marking parameter as nullable is deprecated (#267)

🐛 Bug Fixes

  • fix: Error previous order without shipping method (#264)
  • fix: add website scope in gateway config (#266)

Contributors

@Benjamin-Freoua-Alma, @Francois-Gomis, @alma-renovate-bot[bot], @gdraynz, @joyet-simon,
@remi-zuffinetti, alma-renovate-bot[bot]
and github-actions[bot]

v5.6.0 - 2025-04-24

Changes

🚀 New Features

  • Feature: set in page setting to 1 by default (#246)
  • Feature: upgrade widget to v4 (#245)

🐛 Bug Fixes

  • Fix: remove insurance db (#252)
  • Fix: first save fee plans config (#244)

Contributors

@Benjamin-Freoua-Alma, @Francois-Gomis, @alma-renovate-bot[bot], @joyet-simon, @remi-zuffinetti,
@webaaz, alma-renovate-bot[bot]
and github-actions[bot]

v5.5.0 - 2025-03-24

🚀 New Features

  • Use the new endpoint for order status (#231)

🐛 Bug Fixes

  • Fix CSP whitelist for Stripe, Adyen and checkout.com (#233)

Changes

  • Remove insurance codebase (#236)

Contributors

@Benjamin-Freoua-Alma, @Francois-Gomis, @alma-renovate-bot[bot],
@webaaz, alma-renovate-bot[bot]
and github-actions[bot]

v5.4.0 - 2025-01-30

🚀 New Features

  • Implement merchant business event (#223)

Contributors

@Francois-Gomis, @alma-renovate-bot[bot], @carine-bonnafous,
@joyet-simon, alma-renovate-bot[bot]
and github-actions[bot]

v5.3.0 - 2024-12-12

🚀 New Features

  • Fix gather cms data (#212)
  • Implement Send Url and Gather Data collection (#211)
  • Change wording for in page configuration (#209)
  • Multi shipping insurance compatibility (#208)
  • Integrate credit for in page (#202)
  • Fix bug cart payment payload creation (#200)

🐛 Bug Fixes

  • Fix compatibility with parent::__construct form Fieldset 2.3.7 (#207)

Contributors

@Francois-Gomis, @alma-renovate-bot, @alma-renovate-bot[bot], @gdraynz, @github-actions, @joyet-simon and
@remi-zuffinetti

v5.2.0 - 2024-09-12

Changes

  • Remove insurance products from active carts when insurance is disabled (#197)
  • Add signature verification on ipn (#191)
  • Insurance reset widget on qty change (#195)
  • Warn user that module is in test mode (#187)

🐛 Bug Fixes

  • Fix getNameUnsanitizedHtml name override (#193)
  • Fix Order confirmation email was sent, but the field email_sent remains NULL (#194)
  • Fix stack product in quote if insurance product not exist (#188)

Contributors

@FranceBe, @Francois-Gomis, @defenseoftheancients, @github-actions and [email protected]

v5.1.0 - 2024-08-08

Changes

  • Shipment info analysis (#182)

Contributors

@Francois-Gomis

v5.0.2 - 2024-07-30

Changes

  • Fix add insurance pop up click event listener only for eligible products (#179)

Contributors

@Francois-Gomis, @carine-bonnafous and @github-actions

v5.0.1 - 2024-07-09

  • Change array_search to in_array for adobe commerce php_cs

v5.0.0 - 2024-07-08

  • Beta Alma Insurance
  • Gather cart data from pnx and deferred payments

v4.3.0

  • feat : data analysis for improved customer experience

v4.2.0

  • feat : Deferred Payments with In page checkout

v4.1.1

  • fix : Remove duplicate font src in csp whitelist
  • fix : Replace grand_total by base_grand_total for In Page

v4.1.0

  • feat: Remove Alma feature flag for In Page
  • fix : payment method selection bug on checkout

v4.0.0

  • feat: Allow in page payment for Pay Now and pay in installments

v3.4.0

  • feat: Pay now by credit card with Alma
  • feat: Add data for Alma Risk - 10 past purchases
  • fix: Fix return SEPA issue
  • fix: Fix php 8.2 compatibility issues

v3.3.0

  • feat: Add quote items in Alma payment payload for credit.

v3.2.0

  • fix: Add unit of time in Payment expiration time comment.
  • feat: change payment upon trigger visibility

v3.1.3

  • fix: StoreResolver GraphQl compatibility
  • fix: product page TTC price when "Update with qty" is false
  • feat: No refresh widget when "Update with qty" is false
  • feat: redirection to payment page after cancel order

v3.1.2

  • fix: sql error for product without category
  • fix: remove backend path in return url
  • fix: readme composer vendor name
  • fix: init empty message

v3.1.1

  • fix: cart eligibility translations
  • fix: SecureHtmlRenderer does not exist
  • fix: Parse error: syntax error unexpected 'Config'

v3.1.0

  • New Alma logo !
  • fix: fatal error on disabled
  • feature: Share of Checkout
  • refactor: allowed plans

v3.0.0

  • feature: change vendor name to almapay
  • fix: get product error on product page when cache is enabled
  • feature: update alma widget to 2.12.3

v2.9.0

  • fix : multi store management
  • feature : use only test or prod api Key
  • feature : change payment methode configuration in back office

v2.8.2

  • Wait for share of checkout legal

v2.8.1

  • Fix Alma is not defined in back office
  • Change widget version 2.11.1

v2.8.0

  • Add B2B compatibility
  • Add cancel order by ipn ( need configuration in alma dashboard )
  • i18n add share of checkout translations

v2.7.0

  • Add share of checkout
  • Add online invoice refund

v2.6.2

  • Fix virtual cart compatibility

v2.6.1

  • Fix CDN version 2.8.0

v2.6.0

  • Add rejected payment url in config back office.
  • Add failure_return_url in payment payload.
  • Add failre return controler page.
  • Add languages : de_AT,en_GB,EN_IE,fr_BE,fr_LU,nl_BE

v2.5.0

  • Change badge price for configurable product
  • Cancel pending order with Alma payment page return button
  • Fix isFullyConfigured missing function in config

v2.4.0

  • Fix shipping cost in checkout page
  • Fix badge price for front without cents
  • Refactor helpers

v2.3.2

  • Fix eligibility initialisation for : isEligible() must be of the type boolean

v2.3.1

  • Fix alma-php-client requirement
  • I18n

v2.3.0

  • Feature add payment uppon trigger
  • Fix tax grand total in p>4
  • Fix white space in translatation "Your cart total : "
  • Feature add module version on enable comment
  • Feature add collect logs in back office
  • Feature add control for min and max value for each plan

v2.2.1

  • Catch eligibility exception
  • Remove quote init in constructor
  • Change quoteHelper return type

v2.2.0

  • Add quote selector for eligibility and remove checkout session.
  • Fix get alma payment Url
  • Remove customer data in eligibility
  • Use custom class for back-office display
  • Fixes total cart round credit cost
  • Add Alma in back-office menu
  • Split payment methods

v2.1.3

  • Fixes compatibility issues

v2.1.2

  • Fixes cart min and max alma eligibility
  • Add graphQL eligibility function

v2.1.1

  • Fixes product page secure render for 2.3.5

v2.1.0

  • Add i18n badge V2
  • Fixes fee plans and installments on checkout page

v2.0.0

  • Add i18n with eligibility V2
  • Fixes init quote with hasquote methode in session plugin
  • Fixes circular dependency injection in gateway/config and Log

v1.4.1

  • Incremental compatibility Fix on invalid payment into Session for Magento 2.4.2-p1 and later

v1.4.0

  • Add Alma Paylater feature
  • Add Alma Pnx payment plan from 5x to 12x

v1.3.1

  • Add Alma 10x payment plan feature

v1.3.0

  • Adds an Alma badge with eligibility/payment plans information on product pages
  • Standardization of code

v1.2.1

  • Fixes module's registration dir path, which in some situations prevented the payment plans admin config form to
    display correctly

v1.2.0

  • Improves admin configuration UI
  • Updates Alma logo
  • Fixes bug preventing Alma from being activated after saving its configuration for the first time
  • Fixes Alma disappearing from payment methods when sort order is higher than number of methods
  • Displays fullscreen loader while redirecting to Alma's payment page from checkout
  • Adds support for multiple payment plans, each configurable with specific purchase amount bounds
  • Adds Web API endpoint to check eligibility for the activated payment plans

v1.1.2

  • Makes sure there is a CheckoutSession with an active quote when using the REST API

v1.1.1

  • Removes api_root override that should not have been committed

v1.1.0

  • Adds Web API endpoints to get an Alma URL for an order paid with Alma, and to validate such a payment
    upon customer return. See etc/webapi.xml for endpoints URLs and Model/Api/Payment.php for
    implementation.

  • Adds 3 API Configuration fields to override return_url, ipn_callback_url and customer_cancel_url
    in created payments.

v1.0.7

  • Order status fix

v1.0.6

  • Order status fix

v1.0.5

  • Fixes a bug with order status management on Magento 2.3.2
  • Adds some data collection for risk/fraud prevention

v1.0.4

  • Fixes obfuscated API keys values being retried as Alma API credentials

v1.0.3

  • Fixes incorrect version requirements in Composer manifest

v1.0.2

  • Fixes class not found Throwable on some PHP versions

v1.0.1

Let's start following semver.

  • Switches logo image to SVG
  • Adds User-Agent string containing the module's version, Magento version, PHP client and PHP versions, to all requests
    going to Alma's API.

v1.0.0

This version evolved for a while without any version bump 🤷‍♂️
Features in the latest push to this release:

  • Module can be configured in Test and Live mode
  • A message displays below the cart and in the minicart to indicate whether the purchase is eligible to monthly
    installments
  • The module adds a payment method to the checkout, which redirects the user to Alma's payment page.
    If everything goes right (i.e. Customer doesn't cancel, pays the right amount, ... ), the order is validated upon
    customer return.
Versions
Version Stability QA Status Compatibility Released
5.8.1 stable Fail Magento 2.4.7-2.4.9 Details 2025-10-01 09:13:41
5.8.0 stable Not tested Not yet tested Details 2025-09-30 14:11:46
5.7.1 stable Not tested Not yet tested Details 2025-07-31 13:15:49
5.7.0 stable Not tested Not yet tested Details 2025-07-30 08:19:40
5.6.0 stable Not tested Not yet tested Details 2025-04-24 12:35:57
5.5.0 stable Not tested Not yet tested Details 2025-03-24 14:14:38
5.4.0 stable Not tested Not yet tested Details 2025-02-03 09:31:09
5.3.0 stable Not tested Not yet tested Details 2024-12-12 14:35:10
5.2.0 stable Not tested Not yet tested Details 2024-09-12 13:05:33
5.1.0 stable Not tested Not yet tested Details 2024-08-08 13:52:57
5.0.2 stable Not tested Not yet tested Details 2024-07-30 13:06:28
5.0.1 stable Not tested Not yet tested Details 2024-07-09 10:26:35
5.0.0 stable Not tested Not yet tested Details 2024-07-08 14:01:29
4.3.0 stable Not tested Not yet tested Details 2024-05-23 13:12:33
4.2.0 stable Not tested Not yet tested Details 2024-03-25 14:10:12
4.1.1 stable Not tested Not yet tested Details 2023-12-20 14:28:53
4.1.0 stable Not tested Not yet tested Details 2023-09-18 13:47:09
4.0.0 stable Not tested Not yet tested Details 2023-07-31 07:39:00
3.4.0 stable Not tested Not yet tested Details 2023-06-26 14:57:09
3.3.0 stable Not tested Not yet tested Details 2023-06-05 15:52:15
3.2.0 stable Not tested Not yet tested Details 2023-02-13 22:09:33
3.1.3 stable Not tested Not yet tested Details 2023-01-10 20:31:53
3.1.2 stable Not tested Not yet tested Details 2022-12-12 12:09:43
3.1.1 stable Not tested Not yet tested Details 2022-11-18 13:34:54
3.1.0 stable Not tested Not yet tested Details 2022-11-10 08:19:36
3.0.0 stable Not tested Not yet tested Details 2022-10-04 13:09:17
2.9.0 stable Not tested Not yet tested Details 2022-09-13 12:14:29
2.8.2 stable Not tested Not yet tested Details 2022-07-25 08:21:50
2.8.1 stable Not tested Not yet tested Details 2022-07-19 09:44:47
2.8.0 stable Not tested Not yet tested Details 2022-06-29 08:44:14
2.7.0 stable Not tested Not yet tested Details 2022-06-21 15:07:23
2.6.2 stable Not tested Not yet tested Details 2022-06-09 14:06:46
2.6.1 stable Not tested Not yet tested Details 2022-06-07 14:27:27
2.6.0 stable Not tested Not yet tested Details 2022-05-23 09:28:58
2.5.0 stable Not tested Not yet tested Details 2022-04-19 07:34:24
2.4.0 stable Not tested Not yet tested Details 2022-04-12 13:49:39
2.3.2 stable Not tested Not yet tested Details 2022-03-30 11:43:15
2.3.1 stable Not tested Not yet tested Details 2022-03-22 13:07:01
2.3.0 stable Not tested Not yet tested Details 2022-03-22 13:00:14
2.2.1 stable Not tested Not yet tested Details 2022-03-21 16:52:31
2.2.0 stable Not tested Not yet tested Details 2022-03-07 09:57:46
2.1.3 stable Not tested Not yet tested Details 2022-02-16 10:45:22
2.1.2 stable Not tested Not yet tested Details 2022-02-14 08:29:47
2.1.1 stable Not tested Not yet tested Details 2022-02-07 12:10:14
2.1.0 stable Not tested Not yet tested Details 2022-01-31 13:28:20
2.0.0 stable Not tested Not yet tested Details 2022-01-20 16:13:56
1.4.1 stable Not tested Not yet tested Details 2021-10-26 08:42:52
1.4.0 stable Not tested Not yet tested Details 2021-10-08 09:21:44
1.3.1 stable Not tested Not yet tested Details 2021-09-09 11:27:37
1.3.0 stable Not tested Not yet tested Details 2021-06-17 14:38:35
1.2.1 stable Not tested Not yet tested Details 2021-04-28 22:24:08
1.2.0 stable Not tested Not yet tested Details 2021-04-16 01:05:37
1.1.2 stable Not tested Not yet tested Details 2020-05-07 17:59:38
1.1.1 stable Not tested Not yet tested Details 2020-04-16 12:54:20
1.1.0 stable Not tested Not yet tested Details 2020-03-15 01:07:46
1.0.7 stable Not tested Not yet tested Details 2019-09-17 09:58:47
1.0.6 stable Not tested Not yet tested Details 2019-09-16 20:05:33
1.0.5 stable Not tested Not yet tested Details 2019-09-16 09:38:30
1.0.4 stable Not tested Not yet tested Details 2019-05-16 12:39:15
1.0.3 stable Not tested Not yet tested Details 2019-05-14 16:01:27
1.0.2 stable Not tested Not yet tested Details 2019-04-17 14:25:25
1.0.1 stable Not tested Not yet tested Details 2019-03-02 12:59:36
1.0.0 stable Not tested Not yet tested Details 2019-03-02 12:45:31

Requires 2

Package Constraint
php >=7.1
alma/alma-php-client ^2.6

Requires-dev 1

Package Constraint
mockery/mockery ^1.3

Compatibility

Each Magento release line is installed on its supported PHP versions, then the module is built (DI compilation + static-content deploy) and its unit and integration suites are run. The matrix shows the lines and PHP versions the module is confirmed to install and run on. Code-quality results further down (phpstan, phpcs, …) are reported separately and never affect compatibility.

Compatibility matrix (Magento × PHP)
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. Static analysis runs once across the whole module; PHPStan re-runs per Magento + PHP version because resolvable symbols differ between releases. These NEVER affect the Compatibility badge — 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.

Static analysis results
Tool Status Findings Summary
PHPCS Warning 1041 1041 warnings (ruleset: Magento2) — 69 auto-fixable with phpcbf
PHPMD Fail 49 49 rule violations (UndefinedVariable:17, UnusedFormalParameter:7, MissingImport:6, TooManyPublicMethods:5, UnusedPrivateMethod:3)
Cpd Warning 4 4 duplicated chunks spanning 91 total lines (min-lines=5, min-tokens=70)
Composer validate Info 1 valid; 1 advisory note (composer validate --strict)

PHPStan

Type-checks the module's PHP against a real Magento install at the configured gate level. Re-runs per Magento and PHP version because resolvable symbols differ between releases. Cell → details modal.

PHPStan results by Magento and PHP version
Magento PHP 8.2 PHP 8.3 PHP 8.4 PHP 8.5
2.4.7 107 107
2.4.8 108 108
2.4.9 107 107

Tests

Unit and integration suites, run for each applicable Magento and PHP version. A test failure speaks to the module's behaviour, not its compatibility with a Magento line, so it is reported here separately and never reddens the compatibility matrix.

Unit tests

Unit tests results by Magento and PHP version
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

Integration tests

Integration tests results by Magento and PHP version
Magento PHP 8.2 PHP 8.3 PHP 8.4 PHP 8.5
2.4.7 N/A N/A
2.4.8 N/A N/A
2.4.9 N/A N/A

Security

Security checks run directly against the module: an audit of its declared dependencies for known vulnerabilities (composer audit) and a scan of its source for malware and web-shell signatures. Each runs once. A malware detection fails the version outright.

Security results
Tool Status Findings Summary
Composer audit Pass 0
Malware scan Pass 0
License
MIT
Make it pay

Turn an existing module into recurring revenue.

If you already maintain a Magento 2 module on GitHub or GitLab, listing it on Packagento takes about five minutes. We mirror your tags, handle distribution signing, and route paid licenses through Stripe Connect, so you can keep shipping the way you already do.