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.

Support

Need Help?

For additional support, technical questions, or feature requests, get in touch.

  • Website: www.multizone.co.uk
  • Email: This email address is being protected from spambots. You need JavaScript enabled to view it.
  • In-app Help: Available in the Joomla admin under Components > Payments > Help
Important Notes
  • Backup First — Always backup your site before installing or updating
  • Test Mode — Use Stripe test keys to verify your setup before going live
  • HTTPS Required — Stripe live payments require a valid SSL certificate
  • Joomla 5+ — Payments requires Joomla 5.x or later