Recurring Giving
Miranda supports recurring donations at three intervals. Donors can opt into recurring giving from any donation page that has allow_recurring enabled.
Recurring intervals
Section titled “Recurring intervals”The RecurringInterval enum defines the available billing frequencies:
| Value | Description | Stripe interval |
|---|---|---|
monthly | Billed every month | month |
quarterly | Billed every 3 months | 3x month |
annual | Billed once per year | year |
How recurring donations work
Section titled “How recurring donations work”- Donor selects a recurring interval on the donation page
- Miranda creates a Stripe Subscription via the foundation’s connected account
- A
Donationrecord is created with:type=DonationType::Recurringrecurring_interval= the selected intervalstripe_subscription_id= the Stripe subscription ID
Ongoing billing
Section titled “Ongoing billing”Stripe handles all recurring billing automatically. For each successful charge:
- A Stripe webhook fires
- Miranda creates a new
Donationrecord for the renewal - The contact’s donor relationship metadata is updated (lifetime giving, gift count)
- An activity is logged on the contact’s timeline
Failed payments
Section titled “Failed payments”When a recurring charge fails:
- Stripe retries according to its Smart Retries configuration
- The donation status is set to
failed - If a
donation_failedsequence trigger is configured, the contact is enrolled in the failure recovery sequence
Donation model fields for recurring
Section titled “Donation model fields for recurring”| Field | Type | Description |
|---|---|---|
type | DonationType | recurring for subscription donations |
recurring_interval | RecurringInterval | monthly, quarterly, or annual |
stripe_subscription_id | string? | Stripe subscription ID for managing the subscription |
Donor self-service
Section titled “Donor self-service”Authenticated donors on the miranda.gives portal can manage their recurring gifts through the donor API:
| Method | Path | Description |
|---|---|---|
| GET | /api/donor/recurring | List active recurring donations |
| PATCH | /api/donor/recurring/{id} | Update a recurring donation (amount, interval, pause, cancel) |
Sustainer pages
Section titled “Sustainer pages”The Sustainer page type is optimized for building recurring support:
recurring_onlyoption disables one-time donationssuggested_monthlyprovides default monthly amount optionsimpact_per_monthmessage shows donors what their monthly gift accomplishes
Plan considerations
Section titled “Plan considerations”Recurring donation management is available on all plans. The platform transaction fee applies to each recurring charge at the foundation’s plan rate:
| Plan | Fee per charge |
|---|---|
| Starter | 2.0% |
| Growth | 1.5% |
| Pro | 1.0% |