Charitable Documentation

Learn how to make the most of Charitable with clear, step-by-step instructions.

Fixed-Term Subscriptions in Recurring Donations

Fixed-term subscriptions let you set a recurring donation to stop automatically, either after a set number of payments or on a specific end date, instead of running until someone cancels it by hand. When the term is reached, Charitable completes the subscription for you, stops billing at the payment gateway, and can email the donor a confirmation.

Available in the Charitable Recurring Donations addon 2.2.0 and later.

Key Features

  • Set a recurring donation to end after a fixed number of payments.
  • Or set it to end on a specific calendar date.
  • Subscriptions complete automatically when the term is reached, with no manual cancellation.
  • The gateway subscription is cancelled at the same time, so the donor is never charged past the term.
  • The term is displayed in the admin recurring donation screen, the donor dashboard, and the donation receipt.
  • A progress indicator shows how many payments have been made toward a payment limit.
  • Works with the existing donor approval workflow, so a term change can be approved by the donor before it applies.

Why Use Fixed-Term Subscriptions?

Many campaigns ask supporters for a defined commitment, such as a 12-month pledge or a capital campaign that runs for a set period. Previously every recurring donation ran indefinitely, so staff had to remember to cancel each one manually when the commitment ended. Fixed-term subscriptions let you set the commitment once and let Charitable end it on schedule, which keeps your reporting clean and protects donors from unexpected charges.

See It In Action

Requirements

  • Charitable Recurring Donations addon 2.2.0 or later.
  • A Stripe subscription. Subscription terms are configured through the Update Subscription screen, which currently supports Stripe.
  • For end-date enforcement to the exact day, Charitable Pro 1.8.16 or later (this uses Stripe’s native cancel_at). On earlier versions a built-in backstop still completes the subscription on the first renewal after the term is reached.

How to Set a Term on a Recurring Donation

Step 1: Update Subscription

In your WordPress admin, go to Charitable » Donations and open the recurring donation you want to limit. In the right panel, open the Donation Actions dropdown.

Donation Actions panel with a cursor selecting'Update Subscription' from the action list.

From here, click on Update Subscription.

A popup will appear that lets you change the amount, billing period, subscription term, and more.

Recurring donation subscription popup

Step 2: Set a Subscription Term

You can choose one of two options for setting the term:

Stop after a Number of Payments:

Enter the total number of payments (e.g., 12). Charitable will automatically cancel the subscription once this number of charges is completed. This is ideal for pledge drives, anniversary campaigns, and installment gifts.

Stop on a Specific Date:

Select a specific calendar date (e.g., June 3, 2027). Charitable will cancel the subscription on this date. This option suits project-based campaigns with a defined end date.

Subscription terms panel showing Stop after a number of payments set to 12 and an informational note about total payments remaining.

Step 3: Save and Confirm

  • Click on Update Subscription to apply the changes.
  • Confirm any prompts that appear.
  • Charitable will communicate the new term to Stripe immediately. The donation log will update with confirmation, reflecting the new plan and term details on the subscription record.

Step 4: Optional: Request Donor Approval for Changes

If you are making changes on behalf of a donor, such as adjusting the amount or term, you can select the option to Request Donor Approval before saving.

request donor approval

This sends an email to the donor with the proposed changes. The donor can approve or decline the changes directly from the email, ensuring a clear paper trail and maintaining the donor’s control over their giving.

When You Would Use This: Fixed Term vs. Indefinite

Not every recurring giving program needs a term. Here is a quick guide to help you decide which approach fits each campaign.

ScenarioBest approachWhy
Annual pledge drive (“Give $50/month for 12 months”)Fixed term: 12 paymentsThe commitment is defined up front. Charitable ends it automatically when the pledge is fulfilled.
Capital campaign with a funding deadlineFixed term: specific end dateThe campaign closes on a known date. No donor gets charged after the campaign ends.
Matching gift window (“We’ll match every dollar for 6 months”)Fixed term: 6 paymentsThe match expires. The recurring gift should expire with it rather than continue unmatched.
Memorial or tribute fund tied to an anniversary yearFixed term: specific end dateThe campaign honors a defined period. A fixed term closes it with intention.
New donor challenge (“Make your first 3 gifts”)Fixed term: 3 paymentsLowers the barrier for first-time recurring donors by making the commitment feel manageable.
Monthly sustaining donors with no defined endIndefiniteThe donor intends ongoing support. No term needed.
Ongoing operational or program supportIndefiniteThe need does not expire. Let the relationship continue naturally.

Configuration Options

Subscription Term types

OptionWhat it doesInputNotes
Run until cancelledThe historical default. The subscription continues until it is cancelled.NoneNo end is applied.
Stop after a number of paymentsThe subscription completes once the total payment count is reached.Whole number, 1 to 1000The admin screen shows an “X of Y payments made” progress indicator.
Stop on a specific dateThe subscription completes on or after the chosen date.A future dateThe date must be in the future. A past date is rejected.

What happens when the term is reached

When the final payment is made, or the end date passes, Charitable will: 1. Mark the recurring donation as Completed. 2. Cancel the subscription at the payment gateway so no further charges occur. 3. Send the Recurring Donation Completed email, if that email is enabled in your settings.

Where the term appears

  • Admin recurring donation screen: a Term row, with a payment-progress indicator for count-based terms.
  • Donor dashboard: a short note such as “for 12 payments” or “until June 3, 2027”.
  • Donation receipt: the same term note.

Troubleshooting

The subscription did not complete on the exact end date

Exact-day cancellation relies on Stripe’s native cancel_at, which is set by Charitable Pro 1.8.16 and later. On earlier versions, the built-in backstop completes the subscription on the first renewal after the end date passes rather than on the day itself. Update Charitable Pro for to-the-day precision.

The Subscription Term options are not showing

Term controls appear in the Update Subscription screen for active Stripe subscriptions. Subscription updates are currently supported for Stripe, so the term options will not appear for other gateways.

The Recurring Donation Completed email did not send

Confirm that the Recurring Donation Completed email is enabled under Charitable email settings. The email only fires when the subscription actually completes and the email is enabled.

Developer Resources

Hooks & Filters

  • charitable_recurring_term_type — Filters the resolved term type (unlimitedcount, or end_date) for a recurring donation.
  • charitable_recurring_end_date — Filters the end-date timestamp (Unix seconds, UTC) for an end-date term.
  • charitable_recurring_renewal_donation_created — Fires after a renewal donation is created. The fixed-term backstop hooks here to complete the subscription once the term is reached.
  • charitable_recurring_donation_completed — Fires when a subscription is marked completed, which the gateway uses to cancel the subscription.

Useful Functions

  • charitable_recurring_validate_term( $type, $value ) — Validates and normalizes a proposed term, returning an array or a WP_Error.
  • charitable_recurring_calculate_end_timestamp( $start_ts, $period, $interval, $count ) — Returns the UTC timestamp at which a count-based term should stop. Calendar-aware.
  • charitable_recurring_get_term_label( $donation ) — Returns a human-readable label for a donation’s term, such as “for 12 payments” or “until June 3, 2027”.

Additional Resources

Helpful Links

🤝 Get help when you need it

Connect with Customer Support →  

📑 Find the guide you need

Browse the Documentation Hub →  

⬇️ Download proven strategies, campaign ideas, and expert tools
Get the Fundraising Kit →  

💸 Get Free Fundraising Resources
Head to the Charitable Fundraising Hub

🤔 Got questions about Charitable?
Charitable FAQs

Need help understanding non-profit terms and jargon?
See our Non-Profit Glossary

Still have questions? We’re here to help!

Last Modified:

What's New In Charitable

View The Latest Updates
🔔 Subscribe to get our latest updates
📧 Subscribe to Emails

Email Subscription

Join our Newsletter

We won’t spam you. We only send an email when we think it will genuinely help you. Unsubscribe at any time!

Integration page builder

Divi Fans Rejoice! Native Divi 5 Campaign Progress Bar Module!

With our new native Divi 5 module, you can anchor your microsites with real-time fundraising stats directly on the visual canvas. Here’s how it works, and why it’s worth turning on today.

Create campaign updates that are VISUAL AND LIVE. You can also:

📊 Campaign Progress Bar: Drop a live progress bar into any Divi 5 layout and show goal progress in real time.

🎨 Deep styling controls: Easily customize the bar and track color, height, and radius to match your brand perfectly.

👁️ Visual Builder ready: Configure and preview everything directly on the Divi canvas as a first-class module.

🔁 Identical rendering: The same exact engine powers this module, meaning consistent design without legacy shims.

✅ Faster launches: Never leave the Divi 5 interface to configure shortcodes or guess how your goal labels will look.

Learn more here.

Integration page builder

👉🏻 New in Charitable: Native Elementor Widgets for Seamless Campaign Building

With native Elementor widgets, you design donation campaigns right alongside the rest of your page without touching code. Here’s how it works, and why it’s worth turning on today.

Create fundraising pages that are VISUAL, NATIVE, AND SHORTCODE-FREE. You can also:

⚡ Mini Donation: Add a compact, high-converting donation widget with preset amounts and full color control.

⏳ Campaign Countdown: Build urgency for a deadline-driven appeal, complete with optional confetti when the goal is hit.

📣 Donation Feed: Prove momentum by showing visitors the social proof of real people giving right now.

🏆 Donor Leaderboard: Celebrate top supporters with gold, silver, and bronze styling to spark friendly giving.

🖼️ Campaign Showcase: Feature multiple campaigns in a landing page grid or carousel, with search, filters, and badges.

Learn more here.

Addon New

🗒️ Custom Receipts… New Addon!

With Custom Receipts, you decide which page your donors see, on every campaign. Here’s how it works, and why it’s worth turning on today.

Left side shows a donation receipt with donation number, date, total, and payment method for a  gift to Anywhere, titled 'One Family Gets Clean Water For A Week.'

Create receipts that are CUSTOM TO THE DONOR OR CAMPAIGN. You can also:

📅 Year-end appeal: Reinforce the goal and invite donors to share while momentum is high.

🎗️ Memorial or tribute campaign: Give a gentle, respectful thank-you that fits the moment.

💎 Major gifts: Show a special message only to donors who give above a threshold.

🔁 Recurring growth: Invite one-time donors to become monthly supporters right on the receipt.

🌍 Global campaigns: Surface a country-specific note, like a Gift Aid reminder, only where it applies.

Learn more here.

New templates

🤩 New Beacon Campaign Templates w/ “Hero” Block!

With the new Beacon Campaign Templates for Charitable Pro, you can launch a stunning, full-width fundraising page that instantly captures visitor attention above the fold.

Fundraising page header for Save Maple Grove Park with a donation widget and a small square photo of a sunlit tree thumbnail on the left.

🔦 Above-the-Fold Impact: Lead with a full-width hero image, your logo, and your goal with a donation widget locked right on top of the banner so your ask and momentum register instantly without scrolling.

📐 Two Flexible Layouts: Choose between a structured two-column layout for side-by-side storytelling and supporting details, or a clean one-column view designed for uninterrupted long-form narratives.

⚡ All-in-One Hero Field: Powered by the new Campaign Hero field, bringing background media, live progress bars, custom donation amounts, and recurring giving tabs together into a single cohesive block that can be dropped into any layout.

🎨 Automatic Theme Matching: The hero banner and donation widget automatically inherit your campaign theme’s button and accent colors, ensuring your entire presentation stays beautifully on-brand without touching a line of CSS.

Learn more here.

donation form Feature New

📝 Donation Form Block: Embed a Working Donation Form Anywhere

With the new Donation Form Block for Charitable Pro, you can drop a fully working donation form directly onto any page or post in the WordPress block editor. No redirects, no page reloads, and zero friction between reading your story and making a contribution.

📝 Drop Forms Anywhere: Place a working form directly onto your homepage, inside a story-driven blog post, on a dedicated landing page, or within a campaign announcement.

🎯 Dynamic Campaign Binding: Easily choose a specific campaign from the block sidebar or set it to automatically bind to whichever campaign is currently being viewed.

📐 Full vs. Minimal Form Views: Switch between a full layout or a compact minimal view to perfectly fit sidebars, narrow columns, or wide landing pages.

🎨 Scoped No-Code Styling: Customize typography, container spacing, border radius, amount buttons, and accent colors independently for every form instance without touching a line of CSS.

Learn more here.