PHPackages                             sezzle/sezzlepay - 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. sezzle/sezzlepay

ActiveMagento2-module[Payment Processing](/categories/payments)

sezzle/sezzlepay
================

Sezzle extension for Magento 2

7.0.26(4mo ago)965.8k↓37.3%5[4 issues](https://github.com/sezzle/sezzle-magento2/issues)Apache-2.0PHP

Since Jan 16Pushed 3mo ago6 watchersCompare

[ Source](https://github.com/sezzle/sezzle-magento2)[ Packagist](https://packagist.org/packages/sezzle/sezzlepay)[ Docs](https://github.com/sezzle/sezzle-magento-2/)[ RSS](/packages/sezzle-sezzlepay/feed)WikiDiscussions production Synced 1mo ago

READMEChangelog (10)DependenciesVersions (132)Used By (0)

Magento 2 Local setup
=====================

[](#magento-2-local-setup)

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

Prerequisites
-------------

[](#prerequisites)

### Docker

[](#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

[](#mamp)

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

### PHP

[](#php)

1. `open ~/.zshrc`
2. 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
3. `source ~/.zshrc`

### Enable mod\_rewrite for Apache

[](#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`
2. `open .`
3. Secondary-click on `httpd.conf` and select `Open With` &gt; `TextEdit.app`
4. Search the document for `#LoadModule rewrite_module modules/mod_rewrite.so` and remove the `#` at the beginning of the line

### Composer

[](#composer)

`brew install composer`

### OpenSearch

[](#opensearch-)

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

```

Initial setup
-------------

[](#initial-setup)

### Install Magento to MAMP

[](#install-magento-to-mamp)

In Terminal, run the following:

```
cd /Applications/MAMP/htdocs
mkdir magento && cd magento && mkdir 248 && cd 248
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition=2.4.8 .

```

### Configure MAMP

[](#configure-mamp)

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

### Create Database

[](#create-database)

*Ensure other MySQL instances are not running.*

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

### Configure Magento

[](#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

[](#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 , 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

[](#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:*

For older Magento versions:

```
cd vendor && mkdir sezzle && cd sezzle && git clone ssh://git@gitlab.sezzle.com:10022/Frontend/magento2AppFrontends.git sezzlepay
cd ../..

```

*At this point, if you run the [Compile](#compile) command cluster below, you should be able to see Sezzle as an option on [127.0.0.1:8888/admin](http://127.0.0.1:8888/admin/admin/system_config/edit/key/460ee844e615c1955534bea89954c0b3fbb24487d8c9e5835699e9920f8a3421/section/payment/), but you will not be able to add API keys*

### Compile

[](#compile)

In Terminal (from magento/248), run the following:

```
php -d memory_limit=-1 bin/magento module:enable Sezzle_Sezzlepay
php -d memory_limit=-1 bin/magento setup:upgrade
php -d memory_limit=-1 bin/magento setup:di:compile
php -d memory_limit=-1 bin/magento setup:static-content:deploy -f
php -d memory_limit=-1 bin/magento indexer:reindex
php -d memory_limit=-1 bin/magento cache:clean

```

*At this point, you should be able to see sample products on the storefront*

### Sezzle Configuration

[](#sezzle-configuration)

1. Navigate to `127.0.0.1:8888/admin`
2. Log in with Username `admin` and Password `admin123`
3. Go to `Stores` &gt; `Configuration` &gt; `Sales` &gt; `Payment Methods` &gt; `Additional Payment Solutions`
4. Next to `Sezzle`, click `Configure`
5. Click `I've already setup Sezzle, I want to edit my settings`
6. Change `Enabled` to `Yes`
7. Enter `Public Key` and `Private Key`
    - Can use any valid sandbox Sezzle API key pair for testing (recommended: [Sezzle Shopify Test Store](https://sandbox.admin.sezzle.com/merchants/75097))
    - The API keys validation only confirms that a merchant was found with the provided public and private keys. It does not validate the shop url is correct, hence how merchants re-use API keys across multiple stores.
    - This creates a nightmare for accounting, because the orders are recorded under the one account without distinction of site origin.
    - It also affects widgets, since the API Keys are used to generate the UUID in the widget snippet. Not only do we not know that widgets are installed on the other stores, but config management also gets messy.
8. Click `Save config`

### Populating the store

[](#populating-the-store)

*This section is in case of error generated [Sample Data](#sample-data)*

#### Creating a product

[](#creating-a-product)

1. Go to `Catalog` &gt; `Products`
2. Click `Add Product`
3. Required Fields:
    - `Enable Product`: `Yes`
    - `Product Name`: (any)
    - `Price`: (any)
    - `Quantity`: (any)
    - `Category`: `Default Category`
    - `Visibility`: `Catalog, Search`
4. Click `Save`

#### Adding Products to Home Page Template

[](#adding-products-to-home-page-template)

1. Go to `Content` &gt; `Pages`
2. On the line for `Home Page`, click `Select` &gt; `Edit`
3. Expand `Content` then click `Edit with Page Builder` (a red line will appear where it will be inserted)
4. Under `Layout`, drag `Row` to the working area (under the existing snippet)
5. Under `Add Content`, drag `Products` to inside the `Row`
6. Hover over `Products`, then click `Settings` (gear icon)
7. Select `Category` as `Default Category`, then click `Save`
8. Click `Save as Template`, name the template, then click `Save`
9. Click `Apply template`, then on the template you just saved, click `Apply`
10. Click `OK`
11. Click the `Minimize Window` icon (diagonal arrows, pointing inward)
12. Click `Save`

Local Testing
=============

[](#local-testing)

1. Open Docker Desktop and start `opensearch` container
2. Open MAMP, update `Document root`, then click `Start`
    - Click `Preferences`.
    - In the `Server` tab under `Document Root`, click `Choose` and navigate to `Applications › MAMP › htdocs › magento › 248 > pub`. Click `Choose` to save, then click `OK`
3. Open DBeaver and ensure `mamp localhost:8889` database is connected
4. Navigate to `127.0.0.1:8888/admin`
5. All development work will be completed inside `/Applications/MAMP/htdocs/magento/248/vendor/sezzle/sezzlepay` as you would normally in `~/go/src/sezzle/magento2AppFrontends`
    - Gitlab project magento2AppFrontends will mirror push to Github magento2 project for merchant use.
    - Use `php -d memory_limit=-1 bin/magento setup:upgrade` if any changes to Database
    - Use `php -d memory_limit=-1 bin/magento setup:di:compile` if making changes to dependencies
    - Use `php -d memory_limit=-1 bin/magento setup:static-content:deploy -f` if making changes to html, css, or js files

Releasing Updates to Merchants
------------------------------

[](#releasing-updates-to-merchants)

### Code Changes

[](#code-changes)

1. Update CHANGELOG.md
2. Update `version` number in `composer.json`
3. Delete previous version zip file
4. `open ..`
5. Select all *contents* of magento2AppFrontends and compress, renaming the zip file `sezzle_sezzlepay-{version}.zip`
6. Merge to production

### Magento Submission

[](#magento-submission)

1. Log in to  using `Magento Partner Account` entry in 1Password
2. Click `Extensions`
3. Click `Extension Name`: `Sezzle` where Platform is `M2`
4. Click `Submit a New Version`
5. Enter `Adobe Commerce Version Number` per the same version reflected in `composer.json`
6. Unless a feature must be released at a specific date, select `Requested Launch Date`: `On Approval`
7. Click `Continue`
8. Click `Attach Package`. Navigate to and select the zipped project folder, then click `Open`
9. Select `Adobe Commerce Version Compatibility`: (all)
10. Copy entry from `CHANGELOG.md` to the `Release Notes` field
11. Click `Submit`

### Github Release Tag

[](#github-release-tag)

*Gitlab magento2AppFrontends project will automatically mirror to Github sezzle-magento2 project. Once that has occurred, the following steps must be completed manually. If this step is not completed, merchants will not be able to install the latest version via Composer*

1. Go to
2. Click `Draft a new release`
3. Click `Choose a tag`, then enter the new version, following the existing format, then click `Creat a new tag... on publish`
4. Enter `Release Title`: `Version {version}`
5. In `Decribe this release`, copy + paste the CHANGELOG.md entry
    - No need to add attachments, the zip file will be added automatically.
6. Ensure `Set as the latest release` is checked, then click `Publish release`

External Resources
==================

[](#external-resources)

Allowlisting Merchants
======================

[](#allowlisting-merchants)

Under `In-Context Settings`, merchants will see instructions to `Make sure you are approved by Sezzle for the InContext Checkout Solution to work.` If they wish to select Checkout Mode: `iframe`, they should contact us to perform the following:

In `sezzle-checkout/deploy/values`, update `CONTENT_SECURITY_POLICY` under both `default` and `card` for each applicable environment by appending the merchant's URL(s) to the `value` within the `frame-ancestors` section of the string.

Merchant team has been added to CODEOWNERS for this type of change. If checkout team review is needed, post the MR in the `#code-review-checkout` Slack channel for approval.

*If they select Checkout Mode: `popup`, this is not necessary.*

###  Health Score

55

—

FairBetter than 98% of packages

Maintenance68

Regular maintenance activity

Popularity37

Limited adoption so far

Community20

Small or concentrated contributor base

Maturity78

Established project with proven stability

 Bus Factor1

Top contributor holds 72.6% 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 ~28 days

Recently: every ~6 days

Total

90

Last Release

140d ago

Major Versions

2.2.0 → 3.0.02019-08-11

3.1.7 → 4.0.02020-06-29

3.1.7.1 → 5.0.02020-09-09

5.5.10 → 6.0.02022-03-09

6.0.6 → 7.0.02022-08-18

### Community

Maintainers

![](https://www.gravatar.com/avatar/d9cafb41cc519fea1343f35c6f623361fec85da920ceb45bbd85539a541df74d?d=identicon)[sezzledev](/maintainers/sezzledev)

---

Top Contributors

[![arijit-sezzle](https://avatars.githubusercontent.com/u/47456038?v=4)](https://github.com/arijit-sezzle "arijit-sezzle (522 commits)")[![aholdahl](https://avatars.githubusercontent.com/u/21373123?v=4)](https://github.com/aholdahl "aholdahl (110 commits)")[![sitikanthasezzle](https://avatars.githubusercontent.com/u/82581892?v=4)](https://github.com/sitikanthasezzle "sitikanthasezzle (29 commits)")[![jtmu21](https://avatars.githubusercontent.com/u/77164788?v=4)](https://github.com/jtmu21 "jtmu21 (18 commits)")[![arijit-codilar](https://avatars.githubusercontent.com/u/46256180?v=4)](https://github.com/arijit-codilar "arijit-codilar (18 commits)")[![carlodekker](https://avatars.githubusercontent.com/u/93987011?v=4)](https://github.com/carlodekker "carlodekker (15 commits)")[![arijit-de](https://avatars.githubusercontent.com/u/46475317?v=4)](https://github.com/arijit-de "arijit-de (3 commits)")[![luizcavalcantisezzle](https://avatars.githubusercontent.com/u/223927717?v=4)](https://github.com/luizcavalcantisezzle "luizcavalcantisezzle (3 commits)")[![rishimukherjee](https://avatars.githubusercontent.com/u/1550303?v=4)](https://github.com/rishimukherjee "rishimukherjee (1 commits)")

---

Tags

pluginmagentoextensionpaymentgatewaymagento 2sezzle

### Embed Badge

![Health badge](/badges/sezzle-sezzlepay/health.svg)

```
[![Health](https://phpackages.com/badges/sezzle-sezzlepay/health.svg)](https://phpackages.com/packages/sezzle-sezzlepay)
```

PHPackages © 2026

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