Installment Payments
for Tutor LMS
Everything you need to set up, configure, and manage flexible payment plans for your Tutor LMS courses. Covers installation, configuration, student experience, and common troubleshooting.
Overview
Installment Payments for Tutor LMS enables course creators to offer flexible, multi-payment plans for any Tutor LMS course or bundle. Instead of requiring a single upfront payment, students can pay in 2 to 12 installments while gaining immediate access to course content after the first payment.
The plugin integrates tightly with WooCommerce for payment processing and provides a complete lifecycle management system โ from checkout through reminders, access control, and final completion.
What it does
- Lets admins configure 2โ12 installment payments per course or bundle
- Grants students immediate course access after the first payment
- Automatically sends payment reminders on or before the due date
- Suspends course access after a configurable grace period of non-payment
- Restores access as soon as the overdue installment is paid
- Grants lifetime access when the final installment is received
- Supports full course bundles โ all courses enrolled or suspended together
- Integrates with WooCommerce Memberships for Tutor LMS to pause billing during active memberships
- Provides admin plan management including cancellation with “retain access” or “revoke access” options
Key benefits
- Reduces cart abandonment by lowering the upfront cost barrier
- Increases course sales by reaching budget-conscious students
- Fully automated โ reminders, suspensions, and completions run via daily cron job
- Professional student experience with dashboard integration in WooCommerce My Account and Tutor LMS Dashboard
- Compatible with WooCommerce HPOS (High-Performance Order Storage)
Requirements
Minimum requirements
| Component | Minimum version |
|---|---|
| WordPress | 5.8 or higher |
| PHP | 7.4 or higher |
| WooCommerce | 5.0 or higher (tested up to 8.0) |
| Tutor LMS | 2.0 or higher (Free or Pro) |
Recommended environment
| Component | Recommendation |
|---|---|
| WordPress | Latest version |
| PHP | 8.0 or higher |
| WooCommerce | Latest version |
| Tutor LMS Pro | For advanced course features and bundle support |
| SMTP Plugin | e.g., WP Mail SMTP โ for reliable HTML email delivery |
| SSL Certificate | Required for secure payment processing |
Required plugins
- WooCommerce
- Tutor LMS (Free or Pro)
Optional but recommended
- WooCommerce Memberships for Tutor LMS (Ksajie) โ enables membership pause/resume integration
- SMTP Plugin โ ensures reliable HTML email delivery for all installment notifications
Installation
Method 1: WordPress admin upload (recommended)
- Log in to your WordPress admin dashboard
- Navigate to Plugins โ Add New
- Click Upload Plugin
- Select the
tutor-installments.zipfile - Click Install Now
- Click Activate Plugin
Method 2: Manual FTP installation
- Unzip the
tutor-installments.zipfile - Upload the
tutor-installmentsfolder to/wp-content/plugins/ - Log in to WordPress admin
- Navigate to Plugins โ Installed Plugins
- Find “Tutor LMS Installment Payments” and click Activate
Post-installation steps
- Ensure WooCommerce and Tutor LMS are active
- Enter your license key when prompted after activation
- Open a WooCommerce product linked to a Tutor LMS course โ enable installments in the General tab
- Optionally visit WooCommerce โ Installment Plans โ Settings to configure reminder and suspension days
- Visit
/my-account/installments/to verify the endpoint is accessible - Flush permalinks: Settings โ Permalinks โ Save Changes (required after first install)
Configuration
Per-product settings (WooCommerce product editor)
Open any WooCommerce product linked to a Tutor LMS course or bundle. In the Product Data โ General tab, the Tutor Installments section provides:
| Setting | Description |
|---|---|
| Enable Installments | Master on/off switch. Only available for products linked to a course or course bundle. |
| Number of Installments | Select 2โ12. Controls how many payments the total price is divided into. |
| First Installment Amount | Optional. Leave blank for equal payments. Enter a custom amount for the first payment; the remainder is split equally across the remaining installments. |
| Show Installments Badge | When enabled, displays an “Installments Available” badge on course thumbnails in archives and the single course page. |
Settings are dual-saved: when saved via the product editor, the values are mirrored to the linked course/bundle post meta. This ensures the floating panel in the course builder always shows current settings.
Global settings (WooCommerce โ Installment Plans โ Settings)
| Setting | Description |
|---|---|
| Payment Reminder Days | Number of days before the due date to send a reminder email. Default: 0 (reminder sent on the due date itself). |
| Suspension Grace Period Days | Number of days after the due date before course access is suspended. Default: 5 days. |
Floating panel (course / bundle builder)
When editing a course or course bundle in the Tutor LMS builder, a floating panel is available for configuring installment settings without leaving the builder. It reads settings from the course/bundle post meta and syncs back to the linked WooCommerce product automatically.
Checkout Flow
Standard checkout
- Student visits a course or WooCommerce product page
- A “Payment Options” section displays “Pay in Full” and “Pay in Installments” radio buttons
- Selecting “Pay in Installments” shows the first payment amount, full schedule, and an access note
- Student adds to cart โ the installment choice is stored as cart item data
- At checkout, the cart price is modified to reflect only the first installment amount
- Student completes checkout โ a WooCommerce order is created for the first installment
- On payment confirmation, the installment plan is created and course access is immediately granted
- Subsequent installment records are created with 30-day intervals from the purchase date
The installment plan is created only when payment is confirmed, not when the order is placed. This prevents plans from being created for failed or pending payments.
Payment calculation
When no custom first installment is set, the total price is divided equally across all installments. When a custom first installment amount is specified, the remainder is divided equally across the remaining payments.
All subsequent installments fall exactly 30 days apart from the purchase date. The first installment is due immediately and marked as paid at checkout.
Direct-to-cart URLs
You can create marketing links that automatically add a course to the cart with installments pre-selected. Supported URL parameters:
| Parameter | Description |
|---|---|
| ?add-course-installment=ID | Required. Course or bundle ID to add with installments |
| &redirect=checkout | Optional. Redirect to checkout after adding (default: cart) |
| &redirect=no | Optional. Stay on current page after adding |
| &installments=6 | Optional. Override the configured installment count |
| &clear_cart=yes | Optional. Empty the cart before adding |
A shortcode [installment_cart_url] is also available for generating these URLs dynamically within page content.
Course Access Control
The plugin manages four distinct access states for each student’s course enrollment:
| Status | What it means |
|---|---|
| Active | Student is enrolled and has full access to all course content |
| Suspended | Payment overdue beyond grace period. Lessons and quizzes are blocked; a payment prompt is shown instead |
| Completed | All installments paid. Lifetime access granted permanently |
| Cancelled โ Retain Access | Admin cancelled the plan and chose to keep the student enrolled. Full permanent access |
| Cancelled โ Revoke Access | Admin cancelled and removed enrollment. Progress is preserved for future re-enrollment |
What is blocked for suspended users
- Lesson single pages โ replaced with a payment required message
- Quiz single pages โ replaced with a payment required message
- Course completion button โ payment message shown instead
- Certificate download and certificate URL โ redirected or blocked
- The “Add to Cart” / enroll section is hidden (prevents double-purchasing)
What is NOT blocked for suspended users
- The course page itself โ students can still see the course description and syllabus
- Their progress data โ all progress is preserved throughout suspension
- Admin users โ always have unrestricted access regardless of plan status
Payment Lifecycle Automation
All automated actions are driven by a daily background job. No manual intervention is required once a plan is created.
How automation works
A daily cron event runs two tasks in sequence: first it sends payment reminders for installments due within the configured reminder window, then it suspends access for installments that are overdue beyond the configured grace period.
- Reminders โ sent for installments due within the configured number of days. A flag on the installment record prevents duplicate emails. If a student pays before the reminder fires, no reminder is sent.
- Suspension โ fires for installments overdue by more than the grace period. Multiple checks prevent duplicate suspensions.
- Restoration โ when a student pays an overdue installment, access is restored immediately upon order completion.
- Completion โ when the final installment is paid, the plan status is set to “completed” and a lifetime access flag is set permanently.
Plans that are paused by an active membership are skipped entirely by the daily cron. Reminders and suspensions do not fire during a membership pause.
Admin Management
Navigate to WooCommerce โ Installment Plans to access the admin interface.
Plans tab
Lists all installment plans across all students. You can filter by status (All, Active, Suspended, Completed, Cancelled) and by pause state (All, Paused by membership, Not Paused).
Each row shows the student name, course name, total amount, paid/total installment count, plan status, and cancellation status if applicable. Actions include viewing the plan detail page and cancelling a plan.
Plan detail page
Shows the full payment history for a single plan, including course and product information, a payment progress bar, a table of all installments with amounts/dates/statuses, membership pause information, and cancellation details. For non-cancelled plans, a Cancel Plan button is available.
Cancelling a plan
Clicking “Cancel Plan” opens a confirmation dialog with two options:
| Option | What happens |
|---|---|
| Retain Access | Grants full access as if fully paid. Student keeps their enrollment and can complete the course. No further billing. The student is notified by email. |
| Revoke Access | Removes the student’s course enrollment. Progress data is preserved for future re-enrollment. The student is notified by email. |
An optional reason field lets you record the reason for cancellation internally.
WooCommerce orders column
An “Installments” column is added to the WooCommerce Orders list. For orders with an associated installment plan, the column shows the plan ID as a clickable link to the plan detail page. Both HPOS and legacy order storage are supported.
Student Dashboard
Students can view and manage their installment plans from two locations: a dedicated page in WooCommerce My Account (/my-account/installments/) and a dedicated tab in the Tutor LMS Dashboard.
What students see
- Each plan shows the course name, current status, a payment progress bar, and the full payment schedule
- A Pay Now button is available for each upcoming installment
- Cancelled plans display the access status (Retained or Revoked)
- Plans paused by an active membership display a “Paused” badge
Course Bundle Support
Course bundles are fully supported. A single installment plan is created for the entire bundle, and all courses inside the bundle are enrolled, suspended, or completed together as one unit.
How bundle enrollment works
When a student’s first installment is paid for a bundle, the plugin enrolls the student in every course within the bundle simultaneously. All subsequent access changes (suspension, restoration, completion) apply to every course in the bundle at the same time.
If a course is added to a bundle after a student has already purchased the bundle, the student is not automatically enrolled in the new course. The plugin only enrolls the courses present in the bundle at the time of purchase.
Membership Integration
When the WooCommerce Memberships for Tutor LMS plugin is active, the Installments plugin automatically integrates with it to prevent double-charging students who have both a membership and an installment plan covering the same course.
This integration is only active when the memberships plugin is installed and activated. If it’s deactivated, all pause logic is safely bypassed.
How pause and resume works
- When a student activates a membership that covers a course they have on installments, the installment plan is automatically paused
- If the student’s access was previously suspended (overdue), it is restored immediately during the membership period
- While paused, the daily cron skips reminders and suspensions for the plan entirely
- When the membership expires, the plan is automatically unpaused and billing resumes โ due dates are adjusted to account for the paused days
- A “resume notice” email is sent to the student when billing resumes
- Cancelled plans are fully excluded from pause/resume logic and will never be paused by a new membership
Certificates during membership
If a student completes a course and earns a certificate while their installment plan is paused by a membership, the plugin records this. When the membership expires and installments remain unpaid, the certificate is hidden until the plan is fully paid. Once all installments are complete, the certificate becomes accessible again.
Email Notifications
All emails are sent as HTML to the student automatically. No manual intervention is needed.
| Trigger | Subject line |
|---|---|
| Payment due (reminder) | Payment Reminder: Installment Due for [Course Name] |
| Access suspended (overdue) | Course Access Suspended: [Course Name] |
| Payment received | Payment Received: [Course Name] |
| All installments complete | Congratulations! Course Fully Paid: [Course Name] |
| Plan cancelled by admin | [Site Name] Your Installment Plan Has Been Cancelled |
| Membership expires, billing resumes | Your Installment Payments Have Resumed: [Course Name] |
All email subjects include your site name in brackets, e.g., “[My School] Your Installment Plan Has Been Cancelled”. We recommend using a transactional SMTP plugin for reliable HTML email delivery.
Shortcodes
Three shortcodes are available for embedding installment views on any page, in addition to the automatic My Account and Tutor Dashboard integrations.
user_id User ID to display plans for. Default: current logged-in user.status Filter by plan status: all, active, suspended, completed. Default: all.user_id User ID to display. Default: current user.show_details_link “yes” or “no”. Show a link to the full details page. Default: yes.plan_id The specific plan ID to display. Required.URL resolution priority
When the plugin generates a link to the installments page (for example, in email notifications), it uses this priority order to determine the correct URL:
- Tutor LMS Dashboard installments tab (
/dashboard/installments/) if the dashboard page is published - Any published page containing the
[tutor_installments]shortcode - WooCommerce My Account endpoint (
/my-account/installments/) as the final fallback
Frequently Asked Questions
Troubleshooting
Before reporting an issue, enable WordPress debug logging (WP_DEBUG_LOG in wp-config.php). All plugin log entries are prefixed with Tutor Installments: for easy filtering.
The plan is created on payment confirmation โ not when the order is placed. Verify the following:
- Your payment gateway marks the order as “completed” or triggers the
payment_completehook - The product has installments enabled (check WooCommerce โ Products โ Product โ General tab)
- Check your error log for lines starting with “Tutor Installments:” to trace the plan creation attempt
After plan creation, course access is granted automatically. If access isn’t working:
- Verify that a plan was created (navigate to WooCommerce โ Installment Plans and look for the new plan)
- Check that the student’s enrollment exists in WordPress as a completed enrollment post
- Try flushing permalinks: Settings โ Permalinks โ Save Changes
Subsequent payments go through the WooCommerce order-pay page. Verify:
- The order for the installment was created with the correct internal metadata (check via the WooCommerce order editor)
- Billing address fields are present โ some gateways require them on the order-pay page; the plugin injects them automatically but check if your gateway has additional requirements
- The order status transitions to “completed” or fires the
payment_completehook on your gateway
Suspension requires Tutor LMS theme/template hooks to fire correctly. Verify:
- The student is not an admin โ admins are never filtered regardless of plan status
- Your theme is not overriding or bypassing Tutor LMS template hooks
- The user’s access state meta key is set to “suspended” (check with a user meta debug plugin if needed)
The dashboard tab requires a template file in your theme. The plugin attempts to create this automatically. If it does not appear:
- Check for an admin notice on the Plugins page โ instructions for manual file creation are shown if auto-creation fails
- Flush permalinks: Settings โ Permalinks โ Save Changes
The plugin includes self-healing: if tables are missing when a plan is being created, it attempts to recreate them automatically. For manual recreation, deactivate and reactivate the plugin.
Support
Need help? Visit the support portal
If you’re experiencing an issue not covered in this documentation or the troubleshooting section, you can submit a support request through the portal. Please include the details below in your message to help us resolve your issue quickly.
Open Support Portal โWP_DEBUG_LOG in wp-config.php)