Overview

Payments (pkg_payments) is a Joomla extension package for accepting one-time and recurring payments through Stripe. It includes a payment processing component, a site module for displaying pricing plans, and a background task plugin for webhook processing.

Payments integrates with Subscription Manager to automatically generate subscription keys when customers complete a purchase.

Payments is open source software released under the GNU General Public License v3 (GPL-3.0-or-later).

Stripe Integration

Complete payment processing with test and live modes, webhook signature verification, and automatic product synchronisation.

Stripe Payments Checkout in Joomla
Stripe Payments Checkout in Joomla
Flexible Pricing

Support for multiple currencies (GBP, USD, EUR, CAD, AUD), one-time and recurring billing, and configurable tax rates.

Stripe Payment via Joomla
Stripe Payment via Joomla
Payment Links & Discounts

Shareable checkout URLs, promotional discount codes, and a site module for displaying pricing cards.

Discount Codes for Stripe Payment via Joomla
Discount Codes for Stripe Payment via Joomla

Installation

Step 1: Install the Package

  1. Download the latest pkg_payments package from the extensions directory or from Multizone Limited
  2. Log into your Joomla Administrator
  3. Navigate to Extensions > Install > Install from File
  4. Upload the pkg_payments_vx.x.x.zip file and click Install

Step 2: Verify Installation

  1. Go to Extensions > Manage > Manage
  2. Search for “Payments”
  3. Ensure the component, module, and system plugin are all installed and enabled

Step 3: Initial Configuration

  1. Navigate to Components > Payments
  2. Click Options in the toolbar
  3. Enter your Stripe API keys (test keys first for testing)
  4. Configure your default currency and payment settings
  5. Click Save & Close
Tip: Start with Stripe test mode to verify your setup before switching to live keys.

Getting Started

Step 1
Create a Payment Plan

Navigate to Components > Payments > Payment Plans and click New. Each plan represents one product or extension you want to sell. Give it a name, slug, and description.

Plans are the top-level container — tiers and prices sit beneath them.

Payment Plans for Stripe in Joomla
Payment Plans for Stripe in Joomla
Step 2
Add Pricing Tiers

Open your plan and add tiers (e.g. Standard, Premium, Enterprise). Each tier can have multiple price rows for different currencies and billing intervals (monthly, yearly, one-time).

Mark one tier as featured to highlight it on your pricing page. Set a featured label like “Most Popular” to display a ribbon.

Payment Pricing Tiers for Stripe in Joomla
Payment Pricing Tiers for Stripe in Joomla
Step 3
Set Up Stripe Webhook

In your Stripe Dashboard, create a webhook endpoint pointing to your site’s webhook URL. This allows Stripe to notify your site when payments succeed, fail, or are refunded.

The webhook URL is shown in Options > Stripe Configuration. Copy the signing secret back into your Payments configuration.

Payment dashboard for Stripe in Joomla
Payment dashboard for Stripe in Joomla

Your Payments Subscription

Payments itself uses a tiered subscription model. It is freely available as a trial, and paid subscriptions unlock higher transaction limits and additional features.

Trial
  • 10 transactions/month
  • 20 subscribers
  • Test mode only
  • 30-day trial period
Standard
  • 500 transactions/month
  • 250 subscribers
  • Live payments
  • Updates and support
Premium
  • 5,000 transactions/month
  • 2,500 subscribers
  • Custom branding
  • Discount codes
Enterprise
  • Unlimited transactions
  • Unlimited subscribers
  • Payment links
  • Priority support

Stripe Configuration

API Keys

You need two sets of API keys from your Stripe Dashboard: test keys for development and live keys for production. Navigate to Developers > API keys in your Stripe account to find them.

  • Publishable Key (pk_test_ or pk_live_) — Used in the browser for Stripe Checkout
  • Secret Key (sk_test_ or sk_live_) — Used server-side for creating sessions and managing subscriptions

Webhook Setup

Webhooks allow Stripe to send real-time payment notifications to your site. In your Stripe Dashboard:

  1. Go to Developers > Webhooks
  2. Click Add endpoint
  3. Enter your webhook URL (shown in Payments Options)
  4. Select the events to listen for (payment_intent, checkout.session, invoice, customer.subscription)
  5. Copy the signing secret (whsec_) into your Payments configuration

Tax Rates

Tax rates are configured per currency in Stripe and can be overridden per price row in the tier editor. Create tax rates in your Stripe Dashboard under Tax rates, then enter the tax rate IDs in your Payments configuration.


Security

Important Security Recommendations
  • Always use HTTPS — Stripe requires it for live payments
  • Keep your secret keys and webhook signing secrets confidential
  • Enable webhook IP whitelisting to restrict access to Stripe’s IP ranges

Built-in Security Features

  • Webhook Signature Verification — Every incoming webhook is verified against Stripe’s signing secret
  • IP Whitelisting — Restrict webhook access to known Stripe IP addresses
  • Session Timeouts — Configurable admin session timeouts (5–120 minutes)
  • Comprehensive Logging — Full audit trail of all transactions and webhook events
  • Payment Links — 32-character cryptographically secure URLs

Troubleshooting

Check that your webhook is correctly configured and receiving events from Stripe. In your Stripe Dashboard, go to Developers > Webhooks and check for failed delivery attempts. Verify the signing secret matches your Payments configuration.

Ensure you have entered your live API keys (starting with pk_live_ and sk_live_) and a separate live webhook signing secret. Live and test webhooks use different endpoints in Stripe. Also verify your site is accessible over HTTPS.

Verify that Subscription Manager integration is enabled in Options > Extension Integrations. Check that the payment plan is linked to a Subscription Manager extension and that the webhook is delivering checkout.session.completed events.

Payments uses the standard Joomla update system. Check for updates via Extensions > Update in your Joomla administrator.

If updates are not appearing, verify your server can reach the Multizone update server. If the update site is missing, reinstall the package to restore it.

Ensure the mod_payment_plans module is published and assigned to the correct menu items and template position. Check that at least one payment plan with published tiers and prices exists.

Get support

Contact us

Questions, bug reports, feature requests — get in touch.

  • Website: multizone.co.uk
  • Email: This email address is being protected from spambots. You need JavaScript enabled to view it.
  • In-app help: Each Multizone component has a checklist or explainer on its dashboard and help throughout the component.

What support covers

All Multizone extensions are freely downloadable as trials.

  • Trial — community support via the documentation and changelog.
  • Standard / Premium / Enterprise — direct email support; response priority scales with tier.

Documentation and changelogs for every extension can be found at multizone.co.uk/documentation.

Licences, trademarks, source code licences and attributions

928uk® is a trademark of Multizone Limited, registered in the UK. Multizone and this site is not affiliated with or endorsed by The Joomla! Project™. Any products and services provided through this site are not supported or warrantied by The Joomla! Project or Open Source Matters, Inc. Use of the Joomla!® name, symbol, logo and related trademarks is permitted under a limited licence granted by Open Source Matters, Inc. AdMob™, AdSense™, AdWords™, Android™, Chrome OS™, Chromebook™, Chrome™, DART™, Flutter™, Firebase™, Firestore™, Fuchsia™, Gmail™, Google Maps™, Google Pixel™, Google Play™, Pixelbook Go™, and Pixel™ and other trademarks listed at the Google Brand Resource center are trademarks of Google LLC and this site is not endorsed by or affiliated with Google in any way. Apple and the Apple logo are trademarks of Apple Inc., registered in the U.S. and other countries. App Store is a service mark of Apple Inc. The OSI logo trademark is the trademark of Open Source Initiative. Any other product or company names may be trademarks™ or registered® trademarks of their respective holders. Use of these trademarks in articles here does not apply affiliation or endorsement by any of them.

Where the source code is published here on multizone.co.uk or on our GitHub by Angus Fox, Multizone Limited it is licenced according to the open source practice for the project concerned.

BSD 3-Clause "New" or "Revised" Licence
Original source code for mobile apps are licenced using the same licence as the one used by "The Flutter Authors". This Licence, the BSD 3-Clause "New" or "Revised" Licence (bsd-3-clause) is a permissive licence with a clause that prohibits others from using the name of the project or its contributors to promote derived products without written consent.
GNU General Public Licence v3.0 or later
Original source code for Joomla! published here on multizone.co.uk by Angus Fox, Multizone Limited is licenced using the GNU General Public Licence. This Licence, the GNU General Public Licence Version 3 or later (gpl-3.0+) is the most widely used free software licence and has a strong copyleft requirement. When distributing derived works, the source code of the work must be made available under the same licence.

Please respect the licences and dont use the name of this site or our company to promote derived products without written consent. I mean, why would you? You're not us!

Amazon Associate
As an Amazon Associate we earn from qualifying purchases.
Logo
Our Logo Image is by Freepik. We chose it because its an M and also the letter A twice - and that represents us.
Graphics
Our images representing user experience and interface design are from Freepik here and here and here and here and here.