# sezzle/sezzlepay

> Sezzle extension for Magento 2

`composer require sezzle/sezzlepay`

Canonical URL: https://packagento.com/sezzle/sezzlepay

## At a glance

- **Vendor**: sezzle (https://packagento.com/sezzle.md)
- **Latest version**: 7.0.27 — released 2026-06-26
- **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/sezzle/sezzlepay 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 sezzle/sezzlepay:*
   bin/magento setup:upgrade
   bin/magento setup:di:compile
   bin/magento cache:flush
   ```

## What it does

Sezzle extension for Magento 2

## README

*The following documentation is written for Sezzle internal developers only. Merchant developers should refer to README.md for instructions.*

### Prerequisites

#### Docker

All Sezzle developers should already have completed [Docker](https://gitlab.sezzle.com/sezzle/sezzle-compose) setup for Sezzle-Compose (although Sezzle-Compose will not be used for Magento setup).


#### MAMP

1. [Download MAMP](https://www.mamp.info/en/downloads/)
1. Unzip the downloaded file, then drag & drop to the `Applications` folder

#### PHP

1. `open ~/.zshrc`
1. Add the following, and save: `export PATH=/Applications/MAMP/Library/bin:/Applications/MAMP/bin/php/php8.3.14/bin:$PATH`
    - Note: php version should correspond to the one selected in MAMP in the later step
1. `source ~/.zshrc`

#### Enable mod_rewrite for Apache

*This section will resolve the issue where stylesheets aren't loading for test environment*

1. `cd /Applications/MAMP/conf/apache`
1. `open .`
1. Secondary-click on `httpd.conf` and select `Open With` > `TextEdit.app`
1. Search the document for `#LoadModule rewrite_module modules/mod_rewrite.so` and remove the `#` at the beginning of the line

#### Composer

`brew install composer`

#### OpenSearch <!-- or Elasticsearch -->

In Terminal, run the following:
```
docker run -d --name opensearch \
  -p 9201:9200 -p 9601:9600 \
  -e "discovery.type=single-node" \
  -e "DISABLE_SECURITY_PLUGIN=true" \
  opensearchproject/opensearch:2.7.0
```

<!-- 
This will appear in the Magento config in a future step:
--search-engine=opensearch \
--opensearch-host=localhost \
--opensearch-port=9201 \
--opensearch-index-prefix=magento2 \
--opensearch-timeout=15 \
 -->

<!-- Elasticsearch was the original product recommended by Magento. Either product will work, but now OpenSearch is recommended by Magento/Adobe:
```
docker run -d --name elasticsearch \
  -p 9200:9200 -p 9601:9600 \
  -e "discovery.type=single-node" \
  docker.elastic.co/elasticsearch/elasticsearch:7.17.28
```
When using this method, update the Magento configuration below accordingly.

--search-engine=elasticsearch7 \
--elasticsearch-host=127.0.0.1 \
--elasticsearch-port=9200 \
 -->

### Initial setup

<!-- ### Docker Version

```bash
docker exec -it sezzle_magento2 process install
docker exec -it sezzle_magento2 process install-sampledata
docker exec -it sezzle_magento2 process upgrade
docker exec -it sezzle_magento2 process compile
docker exec -it sezzle_magento2 process deploy
docker exec -it sezzle_magento2 process developer
docker exec -it sezzle_magento2 process clear
docker-compose down --rmi local -v --remove-orphans
docker-compose up -d --build
```

Open `localhost:8085`  
-->
#### Install Magento to MAMP

In Terminal, run the following:
```
cd /Applications/MAMP/htdocs
mkdir magento && cd magento && mkdir 249 && cd 249
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=2.4.9 .
```

#### Configure MAMP

1. Open MAMP app
1. Select `Web server`: `Apache` and `PHP version`: `8.4.1`
1. Click Preferences
1. In the `Ports` tab, set `Apache Port` and `Nginx Port` to `8888` and `MySQL Port` to `8889`
1. In the `Server` tab, select `Use MySQL server`: `8.0.40`
1. For `Document Root`, click `Choose` and navigate to `Applications › MAMP › htdocs › magento › 249 > pub`. Click `Choose` to save.
1. Click `OK`
1. Click `Start`

#### Create Database

*Ensure other MySQL instances are not running.*

1. Open DBeaver or equivalent
1. Click `New Database connection`
1. Select `MySQL`, then click `Next`
1. `Port` should be `8889`
1. `Username` and `Password` should each be `root`
1. Click `Finish`
1. Secondary-click on the newly created connection and select `Rename`
1. Enter `mamp` then click `OK`
1. Click the connection to expand, then Secondary-click on `Databases` and select `Create New Database`
1. Enter `Database name`: `magento` then click `OK`

#### Configure Magento

In Terminal, run the following:
```
php -d memory_limit=-1 bin/magento setup:install \
--base-url=http://127.0.0.1:8888 \
--db-host=127.0.0.1:8889 \
--db-name=magento \
--db-user=root \
--db-password=root \
--admin-firstname=admin \
--admin-lastname=admin \
--admin-email=admin@admin.com \
--admin-user=admin \
--admin-password=admin123 \
--language=en_US \
--currency=USD \
--timezone=America/Chicago \
--use-rewrites=1 \
--search-engine=opensearch \
--opensearch-host=localhost \
--opensearch-port=9201 \
--opensearch-index-prefix=magento2 \
--opensearch-timeout=15 \
--backend-frontname=admin
```
 - Should result in `[SUCCESS]: Magento installation complete.`

*At this point, you should be able to open 127.0.0.1:8888 and 127.0.0.1:8888/admin but not log in*

In Terminal, run the following:
```
php -d memory_limit=-1 bin/magento module:disable Magento_TwoFactorAuth Magento_AdminAdobeImsTwoFactorAuth
```

*At this point, you should be able to open 127.0.0.1:8888/admin and log in, but Sezzle will not be available in Payment Methods*

#### Sample Data

In Terminal, run the following: `php -d memory_limit=-1 bin/magento sampledata:deploy`
 - When prompted for credentials, use `Magento 2 Keys` in 1Password (Platform Integrations Team vault)
 - Alternatively, [generate new keys](https://www.youtube.com/live/HpwsbgqSR2g). (credentials are `Magento Partner Account` in 1Password Dev vault - 2FA sent to magento@sezzle.com, submit an ITSD request to obtain access)
When prompted to store credentials, say `Y`
 - Should result in `Sample data modules have been added via composer.`

#### Install Sezzle Extension

In Terminal, run the following:
```
cd app && mkdir code && cd code && mkdir sezzle && cd sezzle && git clone ssh://git@gitlab.sezzle.com:10022/Frontend/magento2AppFrontends.git sezzlepay
cd ../../..
```

*Note: Getting `Unknown module(s)` error during `module:enable`? Try this instead:*

_(README truncated for .md surface. Full README on https://packagento.com/sezzle/sezzlepay.)_

## Changelog

<div align="center">
    <a href="https://sezzle.com">
        <img src="https://media.sezzle.com/branding/2.0/Sezzle_Logo_FullColor.svg" width="300px" alt="Sezzle" />
    </a>
</div>

## Sezzle Magento 2 Extension Changelog

### Version 7.0.27

_Thurs 26 Jun 2026_

#### Supported Editions & Versions

Tested and verified in clean installations of Magento 2:

- Magento Open Source Edition (CE) version 2.4 and later.
- Magento Commerce On Prem Edition (EE) version 2.4 and later.
- Magento Commerce Cloud Edition (ECE) version 2.4 and later.

#### Highlights

- Fix "Unique constraint violation found" error on order completion that could leave shoppers authorized at Sezzle with no Magento order created
- Add idempotency guard so returning from Sezzle more than once (refresh, double redirect, concurrent request) no longer resubmits the order
- Recover from reserved-order-id collisions by reusing the existing order or regenerating the reserved ID and retrying
- Release stranded Sezzle authorizations when a Magento order cannot be created
- Apply the same protections to the GraphQL `placeSezzleOrder` mutation

### Version 7.0.26

_Thurs 29 Dec 2025_

#### Supported Editions & Versions

Tested and verified in clean installations of Magento 2:

- Magento Open Source Edition (CE) version 2.4 and later.
- Magento Commerce On Prem Edition (EE) version 2.4 and later.
- Magento Commerce Cloud Edition (ECE) version 2.4 and later.

#### Highlights

- Update styling of payment method logo at Checkout
- Add French translation support for final checkout button

### Version 7.0.25

_Thurs 16 Dec 2025_

#### Supported Editions & Versions

Tested and verified in clean installations of Magento 2:

- Magento Open Source Edition (CE) version 2.4 and later.
- Magento Commerce On Prem Edition (EE) version 2.4 and later.
- Magento Commerce Cloud Edition (ECE) version 2.4 and later.

#### Highlights

- Implement log rotation to prevent infinite growth of sezzlepay.log file
- Update Cron schedule and tooltip to every 6 hours
- Fix cron associated with Send Logs to Sezzle config option, so logs send once for all stores and only when feature is enabled
- Disable Customer Tokenization config option, default to false going forward but keep Customer management features
- Fix PHP 8.4 compatibility bug in View Settlement Reports

### Version 7.0.24

_Fri 5 Dec 2025_

#### Supported Editions & Versions

Tested and verified in clean installations of Magento 2:

- Magento Open Source Edition (CE) version 2.4 and later.
- Magento Commerce On Prem Edition (EE) version 2.4 and later.
- Magento Commerce Cloud Edition (ECE) version 2.4 and later.

#### Highlights

- Update Cancel and Void actions to move Magento order to Canceled if Sezzle order auth is already expired or released

### Version 7.0.23

_Fri 19 Sep 2025_
_Re-Released: Wed 3 Dec 2025_

#### Supported Editions & Versions

Tested and verified in clean installations of Magento 2:

- Magento Open Source Edition (CE) version 2.4 and later.
- Magento Commerce On Prem Edition (EE) version 2.4 and later.
- Magento Commerce Cloud Edition (ECE) version 2.4 and later.

#### Highlights

- Replaced Payment Method logo with standard Sezzle logo

### Version 7.0.22

_Mon 7 Apr 2025_

#### Supported Editions & Versions

Tested and verified in clean installations of Magento 2:

- Magento Open Source Edition (CE) version 2.4 and later.
- Magento Commerce On Prem Edition (EE) version 2.4 and later.
- Magento Commerce Cloud Edition (ECE) version 2.4 and later.

#### Highlights

- Activated "Cancel" order action (alternative to "Void" action)

### Version 7.0.20

_Tue 17 Dec 2024_

#### Supported Editions & Versions

Tested and verified in clean installations of Magento 2:

- Magento Open Source Edition (CE) version 2.3 and later.
- Magento Commerce On Prem Edition (EE) version 2.3 and later.
- Magento Commerce Cloud Edition (ECE) version 2.3 and later.

#### Highlights

_(Changelog truncated for .md surface. Full history on https://packagento.com/sezzle/sezzlepay.)_

## Recent Versions

| Version | Released |
|---|---|
| 7.0.27 | 2026-06-26 |
| 7.0.26 | 2025-12-30 |
| 7.0.25 | 2025-12-16 |
| 7.0.24 | 2025-12-05 |
| 7.0.23 | 2025-12-04 |
| 7.0.22 | 2025-12-01 |
| 7.0.20 | 2024-12-18 |
| 7.0.19 | 2024-11-21 |
| 7.0.18 | 2024-09-05 |
| 7.0.17 | 2024-08-12 |

Showing 10 of 93 versions. Full release history on https://packagento.com/sezzle/sezzlepay.

## Quality

Latest release (7.0.27) 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 | Warning | 483 | 483 warnings (ruleset: Magento2) — 289 auto-fixable with phpcbf |
| PHPMD | Warning | 32 | 32 rule violations (IfStatementAssignment:19, UnusedFormalParameter:3, ExcessiveParameterList:3, UnusedPrivateMethod:2, CyclomaticComplexity:2) |
| Cpd | Pass | 0 |  |
| 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 | 143 | 143 | – | – |
| 2.4.8 | – | 144 | 144 | – |
| 2.4.9 | – | – | 144 | 144 |


### 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 | N/A | N/A | – | – |
| 2.4.8 | – | N/A | N/A | – |
| 2.4.9 | – | – | N/A | N/A |

#### Integration Tests

| 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

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=["sezzle/sezzlepay"],
  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

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

