Recurring donations β
A recurring donation is a saved instruction to charge a donor's card on a schedule β typically weekly, fortnightly, or monthly. The card is tokenized by our gateway so you never handle a real PAN. Once set up, charges happen automatically by a daily cron job.

Two paths to setting up β
| Path | Who triggers it | When to use |
|---|---|---|
| Admin-initiated | A staff member, using the donor's card details | The donor told you in person and you're entering on their behalf |
| Visitor-initiated | The donor, on the public donation form | The donor wants to self-serve from home |
Both paths produce the same database row in recurring_donations and are processed by the same nightly job.
Admin-initiated setup β
- Open the donor's member profile β Giving tab.
- Click the create-recurring action.
- Fill in:
- Fund β which category each charge goes to.
- Amount β per-charge amount.
- Frequency β weekly, fortnightly, monthly.
- Start date β when the first charge runs.
- End date (optional) β leave blank for indefinite.
- Card details β number, expiry, CVV. These pass through to our gateway and back as a token.
- Save.
The first charge usually runs immediately (or on the start date if it's in the future). Subsequent charges run nightly until the schedule says they shouldn't.
The edge function powering this is create-recurring-donation-gc β it tokenizes the card via PowerTranz, stores only the token + last four digits + expiry in the database, and never touches the full PAN beyond the initial submit.
Visitor-initiated setup β
When a donor visits your public donation form and selects Make this a recurring donation, the form switches into recurring mode:
- The donor picks frequency, amount, fund, start date.
- The donor's card details go through a hosted checkout flow (Genius Checkout) β they enter the card on a page hosted by the gateway, not by GCM.
- The gateway returns a token.
- The edge function
start-public-recurring-donation-gcsaves the recurring donation row using that token.
The donor receives a confirmation email and can manage (cancel, change amount) the recurring donation by signing in to their member account or by clicking a magic link in the confirmation email.
Card-on-file requirement β
To charge later without the donor present, the card must be tokenized at setup. Some payment methods can't be tokenized β for example, certain debit cards in some regions. The setup flow surfaces a "this card cannot be used for recurring" error in that case; the donor should switch to a different card.
Nightly charge job β
The charge-recurring-donations edge function runs once per day. For every recurring donation whose next_charge_date has arrived, it:
- Calls the gateway with the saved token and amount.
- If the charge succeeds β writes a donation row, advances
next_charge_dateto the next scheduled date. - If the charge fails β logs the failure, sends the donor an email asking them to update their card, and retries on the next nightly run for up to 5 days. After 5 failures, the recurring donation is paused.
INFO
We deliberately retry rather than immediately pause β bank declines are often transient (insufficient funds momentarily) and self-resolve within a day.
Donor view β
Donors can:
- See their active recurring donations on the member profile (if signed in).
- See them in the confirmation email's Manage your giving link.
- Cancel from either place β cancellation is immediate.
- Change the amount or frequency β produces a new recurring row and ends the old one.
Admin view β
The Giving β Recurring page lists every recurring donation in the workspace. You can:
- Filter by donor, fund, status.
- See each recurring's last charge date and next charge date.
- Pause / resume individual schedules.
- Cancel on the donor's behalf.
Cancellation β
A recurring donation can be cancelled by:
- The donor (from the management link).
- An admin (from the recurring donations page).
- The system, after 5 consecutive failed charges.
Cancelling does not refund prior charges. Past donations stay on the donor's profile and on year-end statements.
Permissions β
| Action | Admin | Treasurer | Donor (self) |
|---|---|---|---|
| Create recurring | yes | yes | yes |
| View recurring list | yes | yes | own only |
| Edit amount / frequency | yes | yes | own only |
| Cancel | yes | yes | own only |
Common questions β
What if the card expires? The donor gets an email a week before expiry asking them to update. If they don't, the next charge fails and we kick off the retry cycle.
Can I refund a recurring charge? Yes β open the donation row and click refund. We call process-refund against the gateway. Refunds appear as a negative donation on year-end statements.
Are recurring schedules timezone-aware? Yes. We charge based on your church's timezone (set in Settings β Organization), not UTC.
Next steps β
- Online donation form β where visitors self-serve.
- Statements & receipts β year-end view of recurring giving.
- Launch a giving campaign β recipe that uses recurring giving.