Are there open-source crypto payment plugins for e-commerce platforms?
Key takeaways
- 29 official integrations, all public under github.com/payzum-dev: 10 e-commerce carts, 4 headless commerce frameworks, 4 hosting-billing systems, 3 WordPress donation, membership and download plugins, 6 more for forms, courses, ERP, accounting, ticketing and .NET, and 2 payment libraries.
- Every repository carries an OSI-approved license — 23 MIT, 5 GPL (the four WordPress plugins and Akaunting) and 1 OSL 3.0 (Magento) — so you can read, fork and patch the code that runs your checkout.
- Why it matters: the payment plugin is the code that decides an order is paid. With the source open, your developer can check how the webhook signature is verified and confirm there is no wallet address in the code: the funds go to the wallet you set in your own dashboard.
- Install paths as of 29 September 2026: 19 plugins ship a packaged release zip, 10 are published on Packagist, npm or PyPI (four have both), Shopify, Wix and BigCommerce deploy as small self-hosted apps, and Saleor installs from a hosted app manifest. None is listed in a platform marketplace yet.
- Below: the full list by platform, a 15-minute audit checklist, and the install sequence from staging to live.
The payment plugin is the most trusted code in your store
Every plugin in an online store runs with roughly the same permissions, but only one of them decides money. The payment plugin holds your API key, receives the callback that says "this order is paid", and changes the order status that triggers shipping, a licence key, a course enrolment or a hosting account. If it gets that one decision wrong, you ship goods for nothing.
It is also third-party code, and third-party code is where breaches increasingly start. Verizon's 2025 Data Breach Investigations Report (April 2025) found that the share of breaches involving a third party doubled in one year, from 15% to 30%. Black Duck's 2026 Open Source Security and Risk Analysis (February 2026) audited 947 commercial codebases: 87% contained at least one vulnerability, and 65% of organizations reported a software supply chain attack in the previous year.
For a store, the plugin ecosystem is the supply chain. WordPress alone runs 40.2% of all websites (W3Techs, 29 September 2026), and a WooCommerce store adds a payment gateway the same way it adds a contact form: upload, activate, trust.
With a closed payment plugin, "trust" is the whole security model. The same goes for one that ships obfuscated or only half its logic. You cannot see whether it checks a signature at all, whether it marks orders paid when the buyer's browser comes back, or where the buyer's money actually goes.
What you can't see in a closed payment plugin can cost you
Orders marked paid by a forged request. A plugin that trusts the buyer's return URL, or accepts a webhook without verifying its signature, can be told "status: paid" by anyone who learns the callback address. The goods ship; the money never arrived.
The same order fulfilled twice. Payment providers redeliver webhooks whenever a store is slow to answer. A handler that does not deduplicate sends two confirmation emails, reduces stock twice and grants the download twice.
Funds routed somewhere you did not choose. Many crypto gateway plugins exist to move your buyer's money into the gateway's own balance. You learn the payout schedule, the reserve and the freeze policy later, and nothing in the plugin tells you where the money flows.
Abandonware at checkout. A closed plugin that stops being maintained breaks on the next major platform release, and you cannot patch it, fork it or pay someone else to fix it. Your checkout waits on someone else's roadmap.
A security review you cannot pass. Enterprise buyers, investors and your own security team increasingly ask which third-party code touches payments. "It's a vendor plugin, we don't know" is not an answer that closes the review.
Why most crypto payment plugins are closed, custodial or both
None of this is malice. It follows from how the processors behind the plugins are built.
With a custodial gateway, the plugin is a funnel. The logic that matters (deposit addresses, confirmations, the balance) lives on the gateway's servers, next to your money. Even when the plugin code is readable, it cannot show you the part you care about, because the funds never pass through it: they land in the gateway's wallet and come back to you as a payout.
A self-hosted open-source processor is the opposite trade-off. Everything is auditable, but you run the processor, its database and often a node, and you own the uptime. That is a good fit for teams with operations capacity. It is a lot to take on for a store with one part-time developer.
Card gateway plugins are often open source, but the rail isn't. You can read the WooCommerce plugin of a card processor, but the acquirer still holds the funds for days and can reverse a payment for around 120 days after the sale.
What most merchants actually want is the combination nobody used to offer: the plugin is open, the processor is non-custodial, and there is no server to run.
Payzum's 29 open-source crypto payment plugins, by platform
Payzum is a non-custodial, stablecoin-first crypto payment processor: payments settle directly to wallets the merchant controls. Each integration lives in its own repository under github.com/payzum-dev, named <platform>-payzum. Seven follow their ecosystem's naming convention instead: medusa-payment-payzum, saleor-app-payment-payzum, vendure-plugin-payzum, sylius-payzum-plugin, django-payments-payzum, omnipay-payzum and frappe-payzum. We checked every row below against the live organization, its licenses, releases and package registries, on 29 September 2026.
E-commerce carts (10)
| Platform | Repository | License | How to install |
|---|---|---|---|
| WooCommerce | woocommerce-payzum | GPL-2.0 | Release zip → Plugins → Upload. Supports block checkout and HPOS. Setup guide. |
| Magento 2 / Adobe Commerce | magento2-payzum | OSL-3.0 | Release zip, or Composer: payzum/module-crypto-payments. Setup guide. |
| PrestaShop 1.7 and 8 | prestashop-payzum | MIT | Release zip (module upload). Needs PHP 8.1, so PrestaShop 8 in practice. Setup guide. |
| Shopware 6 | shopware6-payzum | MIT | Release zip, or Composer: payzum/shopware6-crypto-payments |
| OpenCart | opencart-payzum | MIT | OCMOD release zip |
| Zen Cart | zencart-payzum | MIT | Release zip |
| Ecwid | ecwid-payzum | MIT | Self-hosted PHP payment app (release zip) |
| BigCommerce | bigcommerce-payzum | MIT | Self-hosted Node.js app (Orders API), from source |
| Wix | wix-payzum | MIT | Self-hosted Node.js app (Payments SPI), from source |
| Shopify | shopify-payzum | MIT | Self-hosted Payments App, from source. Needs Shopify's payments-partner approval. |
Headless commerce (4)
| Platform | Repository | License | How to install |
|---|---|---|---|
| Medusa v2 | medusa-payment-payzum | MIT | npm: @payzum/medusa-payment-payzum |
| Saleor 3.20+ | saleor-app-payment-payzum | MIT | Hosted app manifest, or self-host the Next.js app |
| Vendure | vendure-plugin-payzum | MIT | npm: @payzum/vendure-plugin-payzum |
| Sylius 2.x | sylius-payzum-plugin | MIT | Composer: payzum/sylius-payzum-plugin |
Hosting and billing (4)
| Platform | Repository | License | How to install |
|---|---|---|---|
| WHMCS | whmcs-payzum | MIT | Release zip (gateway module). Setup and renewals guide, covering the Blesta, HostBill and ClientExec modules too. |
| Blesta | blesta-payzum | MIT | Release zip |
| HostBill | hostbill-payzum | MIT | Release zip |
| ClientExec | clientexec-payzum | MIT | Release zip |
Donations, memberships and digital downloads (3)
| Platform | Repository | License | How to install |
|---|---|---|---|
| GiveWP | givewp-payzum | GPL-2.0 | Release zip → Plugins → Upload. One-time gifts; needs PHP 8.1. Setup guide. |
| Paid Memberships Pro | paid-memberships-pro-payzum | GPL-2.0 | Release zip → Plugins → Upload |
| Easy Digital Downloads | easy-digital-downloads-payzum | GPL-2.0 | Release zip → Plugins → Upload |
Forms, courses, ERP, accounting, ticketing and .NET (6)
| Platform | Repository | License | How to install |
|---|---|---|---|
| Fluent Forms | fluent-forms-payzum | MIT | Release zip |
| Tutor LMS | tutor-lms-payzum | MIT | Release zip |
| ERPNext / Frappe | frappe-payzum | MIT | bench get-app from the repo (also on PyPI as payzum-payments) |
| Akaunting | akaunting-payzum | GPL-3.0 | Release zip, or Composer: payzum/module-payzum |
| pretix (ticketing) | pretix-payzum | MIT | pip install pretix-payzum |
| nopCommerce 4.70 (.NET 8) | nopcommerce-payzum | MIT | Source release zip, built with your nopCommerce solution |
Payment libraries (2)
| Library | Repository | License | How to install |
|---|---|---|---|
| Omnipay (PHP) | omnipay-payzum | MIT | composer require payzum/omnipay-payzum |
| django-payments (Python) | django-payments-payzum | MIT | pip install django-payments-payzum |
The same organization holds the official SDKs (Node.js/TypeScript, PHP, Python and Rust) and payzum-openapi. That repository contains the OpenAPI contract for the API and a shared corpus of webhook-signature test vectors, which every SDK is validated against. The WooCommerce plugin, for example, bundles the official PHP SDK and hands signature checks to its verifier instead of hand-rolling its own. If your platform is not in the tables, you do not need a plugin: the three-step integration works with anything that can call an API.
What the source lets you check: where the funds go
We scanned all 29 repositories on 29 September 2026: none contains a wallet address. A Payzum plugin never decides where money goes. It creates a payment from your server with the order total, the currency, an order reference and your callback URLs, then sends the buyer to the hosted checkout. The receiving wallet is the one you set in your own Payzum dashboard.
The buyer pays from their wallet straight to yours. That confirms in about 0.4 seconds on Solana and around two seconds on Base or Polygon, and Payzum never holds the funds. If you price in dollars, optional auto-convert to USDC or USDT is available on most supported networks. The full model is explained in what a non-custodial crypto payment processor is.
What the source lets you check: how the webhook is verified
Open the WooCommerce plugin's gateway class and the whole decision fits in under a hundred lines you can read:
- It reads the raw request body before parsing anything.
- It verifies an HMAC-SHA-512 signature over those raw bytes, taken from a fixed header, using a constant-time comparison. The header is
x-nowpayments-sig, because the payment IPN uses a NOWPayments-compatible format. - It rejects events outside a 10-minute replay window on the signed timestamp.
- It ignores duplicates by event ID, under a per-order lock so two concurrent deliveries cannot both mark the order paid.
- It answers 401 to anything unsigned and leaves the order untouched.
Only then does it map the payment status onto the order: finished becomes processing or completed, partially paid goes on hold, expired cancels, failed fails. Nothing is inferred from the buyer's browser.
How to audit an open-source crypto payment plugin in 15 minutes — then install it
This works for any payment plugin, not just ours. The WooCommerce plugin is the worked example; swap the paths for your platform.
- Find the official repository. Use the tables above and confirm the repository sits under
github.com/payzum-dev, not in a fork or a lookalike account. - Read the license and the latest release. MIT, GPL and OSL all let you read, modify and fork the code. Download the packaged zip from Releases, not GitHub's "Download ZIP" button: that one unpacks to a
<repo>-main/folder the platform will not recognise. - Open the webhook handler and run the five checks below. On WooCommerce it is
includes/class-wc-gateway-payzum.php, methodhandle_ipn(); on WHMCS it is the gateway'scallback/file. - Check where the money goes. Search the code for wallet addresses and for what the plugin sends out. You should find no address, and an outgoing payload of total, currency, order reference and callback URLs, with no customer personal data.
- Install on staging. Upload the release zip or install from the registry, paste a staging API key and webhook secret, and copy the IPN URL from the settings screen into the webhook settings of your Payzum dashboard.
- Test the failure path first. Send an unsigned request to your IPN URL (below) and expect a 401. Then place a real staging order, pay it on the hosted checkout, and watch the order move to processing only when the signed webhook lands. Underpay once and confirm the order goes on hold.
- Go live. Switch to the production key, enable the method, and publish the refund terms the buyer accepts at checkout. On-chain payments are final, so refunds are payments you send under your own policy.
# Must be rejected: no signature header, so the order is not touched
curl -i -X POST https://your-store.example/wc-api/wc_gateway_payzum \
-H 'Content-Type: application/json' \
-d '{"order_id":"123","payment_status":"finished"}'
# Expected: HTTP 401 (bad signature)
Five things to check in any payment plugin's webhook handler
- It reads the raw body and verifies the signature before trusting a single field.
- It uses an HMAC signature from a fixed header with a constant-time comparison, not a plain string equality.
- It has a replay window and deduplicates by event ID.
- It never marks an order paid from the buyer's return URL.
- It keeps the API key and webhook secret server-side, with nothing secret in the checkout page's JavaScript.
The engineering behind each check, with code for Node.js, PHP and Python, is in signed webhooks for crypto payments. What the plugin does at checkout, step by step, is in the pillar guide crypto payment plugin: a drop-in checkout for your cart.
Use cases: who installs open-source crypto payment plugins, and why
The license matters most to the people who have to answer for the checkout.
- The agency with 40 client stores on three carts. It runs WooCommerce, PrestaShop and Shopware for clients in a dozen countries. It audits the plugin once per platform, pins the release version in its deployment scripts and rolls it out store by store. Each client connects its own wallet in its own dashboard, so the agency never touches client funds, and an update is a diff it can read before shipping it.
- The hosting company on WHMCS. Its security review asks which code can mark an invoice paid. The developer reads the gateway module and its callback, sends the unsigned test request, gets a 401, and closes the review in an afternoon. The business case for stablecoins in hosting is in accepting crypto payments as a web hosting provider.
- The nonprofit on GiveWP with a volunteer developer. Donors ask where their gift goes, and now the answer is checkable: no address in the plugin, and every donation lands in the organization's own wallet, confirmed on-chain with a reference. The volunteer can review a GPL-licensed plugin, which is also the license WordPress itself uses.
- The headless team on Medusa or Saleor. Its B2B flow needs an approval step before payment, which no stock plugin offers. Under the MIT license the team forks the provider, adds the step, and keeps merging upstream releases, instead of rewriting a payment integration from scratch.
- The finance team on ERPNext or Akaunting. Invoices to overseas clients are paid in USDC, and the signed callback marks them paid in the ledger. Reconciliation works from an order reference and an on-chain transaction instead of a wire memo someone typed by hand.
Open-source vs closed crypto payment plugins: comparison
| What to compare | Closed or custodial gateway plugin | Self-hosted open-source processor | Payzum open-source plugins |
|---|---|---|---|
| Can you read the plugin code? | Sometimes; often partial or obfuscated | Yes | Yes: all 29, under MIT, GPL or OSL 3.0 |
| Where the funds settle | The gateway's balance, paid out on its schedule | Your wallet | Your wallet, non-custodial |
| Server to run | None | Processor, database, often a node | None for the plugins; on Shopify, Wix, BigCommerce and Ecwid the integration is a small app you host |
| Webhook verification you can inspect | Rarely | Yes | Yes: HMAC signature, replay window and dedup, in the source |
| If the vendor stops maintaining it | You wait or migrate | The community or you | You can fork and patch it under the license |
| Networks | Varies by gateway | Varies by setup | Bitcoin, Ethereum, Solana, Polygon, Base, Arbitrum, Optimism, BNB Chain, Avalanche |
| Chargebacks | None on crypto; card rails reversible for months | None | None: payments are final on-chain |
| Marketplace listing | Often listed | Varies | Not yet; install from GitHub releases or package registries |
Common objections, answered
"It's not in the WordPress or Shopify marketplace. Is installing from GitHub safe?"
A marketplace review checks one snapshot, once, with criteria you do not see. Open source lets you check every line of the version you actually install, and every diff after it. Pin a tagged release, read the webhook handler, run the unsigned-request test, and you know more about this plugin than about most listed ones. The Packagist, npm and PyPI packages are published from the same public repositories.
"If the code is public, can't attackers read it too?"
They can, and it does not help them. Signature verification is designed to be public: its security rests on your webhook secret, not on hiding the algorithm. An attacker who reads the code learns the header name. Without your secret, they cannot produce a signature the plugin accepts, and without a signature the order does not move.
"My platform isn't on the list."
Then use the API directly. One server-side call creates the payment, the response gives you a hosted checkout URL, and the signed webhook tells you when it is paid. The official SDKs cover Node.js, PHP, Python and Rust. The developer walkthrough is in REST API crypto payment gateway.
"We don't have a developer to audit anything."
The checklist takes a developer about fifteen minutes, and a freelancer can run it for you. If you would rather see it done, book a call and we'll walk through the plugin for your platform on screen.
Frequently asked questions
Are there open-source crypto payment plugins for e-commerce platforms?
Yes. Payzum publishes 29 open-source crypto payment plugins at github.com/payzum-dev, covering carts such as WooCommerce, Magento 2, PrestaShop, Shopware 6, OpenCart and Shopify, headless frameworks such as Medusa, Saleor, Vendure and Sylius, and billing, donation, membership, ERP and ticketing platforms. They are licensed under MIT, GPL or OSL 3.0, and payments settle non-custodially to the merchant's own wallet.
Is there a crypto payment plugin for WooCommerce, Magento 2 or PrestaShop?
Yes. woocommerce-payzum (GPL-2.0) supports the block checkout and HPOS, magento2-payzum (OSL-3.0) targets Magento 2.4 and Adobe Commerce and is also on Packagist, and prestashop-payzum (MIT) targets PrestaShop 1.7 and 8. All three install from a packaged release zip and mark orders paid only from Payzum's signed webhook.
Is there a crypto payment plugin for WHMCS, Medusa, Saleor or GiveWP?
Yes. whmcs-payzum covers WHMCS, with sibling modules for Blesta, HostBill and ClientExec. Medusa v2 installs from npm as @payzum/medusa-payment-payzum, Saleor 3.20+ uses saleor-app-payment-payzum, and GiveWP donations use givewp-payzum. Vendure and Sylius also have official plugins.
What license are Payzum's plugins released under?
All 29 use OSI-approved open-source licenses: 23 are MIT; WooCommerce, GiveWP, Paid Memberships Pro and Easy Digital Downloads are GPL-2.0, matching WordPress; Akaunting is GPL-3.0; and Magento 2 is OSL-3.0, the license Magento itself uses. You may read, modify and fork them under those terms.
Are Payzum's plugins listed on WordPress.org or the Shopify App Store?
Not as of 29 September 2026. The code is public on GitHub. 19 plugins ship a packaged release zip, and 10 are published on Packagist, npm or PyPI, four of them with a zip as well. The Shopify, Wix and BigCommerce integrations deploy from source as small self-hosted apps (Shopify also requires its payments-partner approval), and Saleor installs from a hosted app manifest.
Does a Payzum plugin ever hold my funds, and how can I check?
No. The plugin only creates a payment with the order total, currency, reference and callback URLs; the buyer pays straight to the wallet you configured in your Payzum dashboard. You can check it yourself: none of the 29 repositories contains a wallet address, and the webhook handler that marks orders paid is readable in each repository.
Book 20 minutes and we'll pick the plugin for your platform
Tell us your platform (or all of them, if you run several) and what your checkout does today. We'll point you to the right repository, walk your developer through the webhook handler and the install, and run the staging order with you. Then we'll set up how stablecoin payments reach a wallet you control: non-custodial, final, with nothing for anyone to freeze.
If the calendar does not load, book directly here · [email protected]
This article is general information, not legal, financial or security advice. Each plugin is provided under the license in its repository; review the code and test on staging before using it in production. Refund rules, accounting treatment and tax vary by jurisdiction and remain your responsibility, so confirm them with your own advisers.