PHPackages                             coinify/magento2-payment - 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. coinify/magento2-payment

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

coinify/magento2-payment
========================

Coinify cryptocurrency payment gateway for Magento 2

v1.1.3(1mo ago)010↓90%MITPHPPHP &gt;=7.4.0CI passing

Since Jun 3Pushed 1mo agoCompare

[ Source](https://github.com/sasanikoli/coinify-magento-plugin)[ Packagist](https://packagist.org/packages/coinify/magento2-payment)[ RSS](/packages/coinify-magento2-payment/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (14)Versions (19)Used By (0)

Coinify Payment Gateway for Magento 2
=====================================

[](#coinify-payment-gateway-for-magento-2)

Accept cryptocurrency payments in your Magento 2 store via [Coinify](https://www.coinify.com/payment-solutions#merchant-form).

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

[](#requirements)

- **Magento 2.4.x** — not compatible with Magento 1.x or Magento 2.3.x and below
- **PHP 8.1 or higher** — required by Magento 2.4.x (PHP 7.4 is end-of-life and unsupported)
- **A Coinify merchant account** — sandbox or production; [sign up here](https://www.coinify.com/payment-solutions#merchant-form)

**For local development** (setting up Magento from scratch):

- **MySQL 8.0+** or MariaDB 10.6+
- **Elasticsearch 7.x** or **OpenSearch 1.x** — required by Magento's catalog search
- **Nginx or Apache**
- **Composer 2.x**
- **`repo.magento.com` credentials** — Magento's private Composer repository; generate a key pair at [commercedeveloper.adobe.com](https://commercedeveloper.adobe.com)

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

[](#installation)

```
composer require coinify/magento2-payment
php -d memory_limit=512M bin/magento module:enable Coinify_Payment
php -d memory_limit=512M bin/magento setup:upgrade
php -d memory_limit=512M bin/magento setup:di:compile
php -d memory_limit=512M bin/magento setup:static-content:deploy -f
php -d memory_limit=512M bin/magento cache:flush
```

> **Note:** The `-d memory_limit=512M` flag prevents `setup:di:compile` from failing on servers with a low default PHP memory limit. The `-f` flag on `setup:static-content:deploy` is required when Magento is running in production mode.

Configuration
-------------

[](#configuration)

Navigate to **Stores → Configuration → Payment Methods → Coinify**.

FieldDescriptionEnabledEnable/disable the payment methodPayment Method TitleLabel shown to customers at checkoutEnvironment`sandbox` for testing, `production` for live paymentsAPI KeyYour Coinify API keyWebhook SecretShared secret for webhook signature validation — **required**Auto-create Credit Memo on RefundAutomatically create an offline Credit Memo when Coinify confirms a refund> **Important:** The Webhook Secret must be set before accepting payments. Without it, all incoming webhooks will be rejected and order statuses will not update. A warning banner is displayed in the Magento admin until the secret is configured.

Webhook Setup
-------------

[](#webhook-setup)

1. Copy the **Webhook URL** shown in the Coinify configuration page (e.g. `https://your-store.com/coinify/webhook/notify`)
2. Paste it into your Coinify dashboard under **Webhook settings**
3. Copy the generated webhook secret from the Coinify dashboard back into the **Webhook Secret** field in Magento and save

Sandbox Testing
---------------

[](#sandbox-testing)

1. Set Environment to `sandbox` in configuration
2. Use your Coinify sandbox API key from [app.sandbox.coinify.com](https://app.sandbox.coinify.com)
3. Set the webhook URL and secret in the sandbox dashboard under **Settings → Webhooks**
4. Place a test order and complete payment in the Coinify sandbox window
5. Order status will update to **Processing** and an invoice will be created automatically once the webhook is received

Refunds
-------

[](#refunds)

Initiate refunds from the order view in Magento admin under the **Coinify Payments** section. Coinify will email the customer to collect their wallet address. Once the crypto transfer completes, Coinify sends a `payment-intent.refund.completed` webhook which updates the refund status and (if enabled) automatically creates a Credit Memo.

Development
-----------

[](#development)

To work on this module locally, you need a running Magento 2.4.x instance. The recommended approach is to install the module via a Composer path repository so edits are reflected immediately without copying files.

In your Magento root `composer.json`, add:

```
"repositories": [
    {
        "type": "path",
        "url": "../coinify-magento-plugin",
        "options": {"symlink": true}
    }
]
```

Then install:

```
composer require coinify/magento2-payment
php -d memory_limit=512M bin/magento setup:upgrade
php -d memory_limit=512M bin/magento setup:di:compile
php -d memory_limit=512M bin/magento setup:static-content:deploy -f en_US
php -d memory_limit=512M bin/magento cache:flush
```

After any PHP file changes, re-run `setup:di:compile` and `cache:flush`. For template-only changes, `cache:flush` is sufficient.

Testing
-------

[](#testing)

The plugin ships with a standalone unit test suite that runs without a Magento installation. Tests cover all security-critical paths and core business logic.

### Running tests locally

[](#running-tests-locally)

```
# First time only — install PHPUnit (uses a separate composer file so
# Magento packages are not required)
COMPOSER=composer-dev.json composer install

# Run the full suite
vendor-test/bin/phpunit

# Run with detailed output
vendor-test/bin/phpunit --testdox
```

### What is tested

[](#what-is-tested)

Test fileWhat it covers`Test/Unit/Model/ConfigTest``decryptValue()` logic for empty / plaintext / Magento-encrypted values; all config getters`Test/Unit/Model/Api/ClientTest`Sandbox vs production URL selection; `X-API-KEY` header presence/absence; GET vs POST dispatch`Test/Unit/Observer/CheckWebhookSecretTest`Admin warning shown when secret is missing; not shown when set or plugin inactive; AJAX requests skipped`Test/Unit/Controller/Webhook/NotifyTest`HTTP 400 when `webhook_secret` not configured; HTTP 400 on invalid HMAC signature; HTTP 400 on intent/order ID mismatch (IDOR guard); HTTP 200 for a valid webhook`Test/Unit/Controller/Checkout/RedirectTest`URL allowlist accepts valid production and sandbox domains; rejects evil subdomain spoofing and plain HTTP; redirects to cart when no order in session`Test/Unit/Model/Service/RefundProcessorTest`Refund record saved with state `initiated`; correct refund ID extracted from `merchantRefunds`; no record saved when API returns no refunds`Test/Unit/Model/Service/CreditMemoProcessorTest`Full refund path (includes shipping amount); partial refund path (uses `adjustment_positive`); early return when `canCreditmemo()` is false### CI

[](#ci)

Tests run automatically on every push and pull request to `main` via GitHub Actions ([`.github/workflows/ci.yml`](.github/workflows/ci.yml)), tested against PHP 8.2 and 8.3.

The CI workflow installs only PHPUnit (via `composer-dev.json`) — it does not require Magento or any Magento credentials.

License
-------

[](#license)

MIT

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance90

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

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

18

Last Release

49d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/582b4147c6e7af9670df7a58e3118415f7c929eb1adc363cf1100db7cfd98323?d=identicon)[sasanikoli](/maintainers/sasanikoli)

### Embed Badge

![Health badge](/badges/coinify-magento2-payment/health.svg)

```
[![Health](https://phpackages.com/badges/coinify-magento2-payment/health.svg)](https://phpackages.com/packages/coinify-magento2-payment)
```

###  Alternatives

[mollie/magento2

Mollie Payment Module for Magento 2

1131.9M16](/packages/mollie-magento2)[buckaroo/magento2

Buckaroo Magento 2 extension

32420.3k8](/packages/buckaroo-magento2)[amzn/amazon-pay-magento-2-module

Official Magento2 Plugin to integrate with Amazon Pay

108531.2k1](/packages/amzn-amazon-pay-magento-2-module)[run-as-root/magento2-prometheus-exporter

Magento2 Prometheus Exporter

68357.9k](/packages/run-as-root-magento2-prometheus-exporter)[vipps/module-payment

Vipps MobilePay Payment Module for Magento 2

1098.4k](/packages/vipps-module-payment)[zwernemann/module-withdrawal

Magento 2 EU Withdrawal Button Module - Adds a withdrawal/revocation button for orders in compliance with EU Directive (EU) 2023/2673

256.0k2](/packages/zwernemann-module-withdrawal)

PHPackages © 2026

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