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!

ambassadors improved New

Moderation and Directory Screens In Ambassadors 3.0

Ambassadors 3.0 has new features: moderation and directory screens… now easily see those who are earning donations on your peer to peer network – including campaign creators that might need to be verified – all in one place. Generate reports, email ambassadors and campaign creators directly and more.

🚀 See when campaign creators and ambassadors have updated their campaigns, what donors/donation they have brought in and more.

🎉 Manually add ambassadors and campaign creators, and approve them in one-click!

Visit this page to learn more.

New Payments

⚡ Unlock India-Based Donations: Meet Charitable’s Native Razorpay Integration

Trying to collect donations in India? Charitable’s native Razorpay integration features:

⚡ Instant UPI Integration: Accept fast, local donations directly inside your form via apps like PhonePe, Google Pay, Paytm, and BHIM without sending donors away from your site.

📲 Auto-Generated Campaign QRs: Instantly render scannable QR codes encoding a UPI deep link directly on your public campaign pages and sidebars for an effortless “scan-to-give” experience.

💰 Dual Local & Global Reach: Headline your campaigns in INR while seamlessly accepting major international currencies like USD, EUR, GBP, and CAD to maximize global support.

🔁 Seamless Recurring Giving: Fully integrates with the Charitable Recurring addon to manage automatic monthly subscriptions directly through Razorpay without extra code.

↩️ Automatic Two-Way Sync: Keep your books perfectly clean with two-way refund syncing—issue a refund inside WordPress or your Razorpay dashboard and both sides update automatically.

🔒 Webhook-Verified Security: Automatically protect your donation records using HMAC-signed webhook verification to ensure every status update represents real money cleared on the rails.

Visit this page to learn more.

Integration New

🎉 New Built-in PushEngage Integration

Struggling with falling email open rates and rising ad costs just to keep your supporters engaged? Charitable’s built-in PushEngage integration features:

🔔 Zero-Fee Direct Messaging: Deliver crisp, instant pop-up notifications straight to your donors’ desktops and mobile devices.

⏱️ Four Smart Automated Triggers: Automatically send updates for immediate donation thank yous, full-list campaign launches, urgent “ending soon” alerts, and goal milestone celebrations.

📈 Group Momentum Broadcasts: Turn private milestones into public wins by automatically broadcasting alerts to your entire subscriber list the moment a campaign hits 50%, 75%, or 100% of its goal.

📊 Automatic Analytics Tracking: Monitor exactly where your incoming notification traffic is coming from with built-in attribution that requires zero complex configuration.

Visit this page to learn more.

New Security

💂‍♂️ New DonationGuard 🛡️ Automatically Protects Your Donations!

Worried about card testing attacks or spam bots flooding your donation forms, but don’t want to ruin the giving experience for your real supporters? Charitable’s DonationGuard features:

🛡️ Real-Time Bot Detection: Actively monitors every donation submission for five distinct attack signals without slowing down your human donors.

📊 Smart Traffic Scoring: Instantly evaluates activity against a learned baseline of your site’s normal donation rhythms to catch sneaky, slow-drip card testing.

🚨 Severity-Tiered Alerts: Immediately opens structured “Attack Records” and notifies you via email and admin alerts the moment a campaign starts taking fire.

🎯 Single-Click Defense: Deploy instant security using the “Recommended Settings” preset to turn on Honeypot, Time Trap, and Rate Limit modules all at once.

🚫 Automated Blocklists: Permanently stop repeat offenders by automatically blocking suspicious email addresses based on your customized rules.

Visit this page to learn more.

GiveWP Migrations New

🧤 White Glove Migration Service for GiveWP

Thinking about switching your fundraising platform from GiveWP to Charitable, but don’t want to risk losing your data or handle a complex technical setup yourself? Charitable’s White Glove Migration Service features:

👥 Flawless Donor Mapping: Safely transfer your entire supporter database with zero data loss.

📊 Complete Financial History: Meticulously preserve every historical transaction for continuous, accurate reporting.

🔄 Seamless Recurring Giving: Safely transfer active sustaining subscriptions without disrupting your incoming revenue or requiring your donors to update their information.

💳 Zero Gateway Disruptions: Keep using Stripe, PayPal, or any other GiveWP-compatible processor you already love.

🚀 Expert Technical Setup: Relax while our team handles the heavy lifting to install and configure your forms—plus, qualifying users get a full year of Charitable Pro completely free.

Visit this page to learn more.