Online Giving

Accept donations online with a customizable giving portal, Stripe payment processing, recurring giving plans, and comprehensive reporting.

Overview

The Online Giving workspace provides everything you need to accept and manage digital donations. It includes a public-facing giving portal that donors visit to make gifts, plus an admin dashboard for tracking transactions, managing Stripe payouts, configuring recurring giving, and viewing analytics.

Giving Portal

A branded, mobile-responsive page where donors make one-time or recurring gifts via credit card

Admin Dashboard

KPIs, recent transactions, fund breakdowns, monthly trends, and action alerts for your team

Stripe Integration

Per-campus Stripe accounts with encrypted credentials, automatic syncing, and payout tracking

Reporting & Analytics

Monthly trends, donor retention, giving by fund/campus, and portal visitor analytics

Giving Portal

The giving portal is the public-facing page where your members and visitors make donations. Each organization gets a unique portal URL based on their slug, and multi-campus churches can have campus-specific portal pages.

Portal URLs

  • Organization portal: /give/your-church-slug
  • Campus-specific: /give/your-church-slug/campus-name

Donation Flow

The giving portal guides donors through a simple two-step process:

  1. Gift Details — The donor selects an amount (from presets or custom), chooses a fund, optionally enables recurring giving, and enters their name and email. They can also choose to cover processing fees or give anonymously.
  2. Payment — Stripe Elements renders a secure payment form. The donor enters their card details and completes the gift. A confirmation screen with receipt details appears on success.

Portal Features

FeatureDescription
Amount PresetsQuick-select buttons (e.g., $25, $50, $100) plus a custom amount field
Fund SelectionDonors choose which fund to give to from your portal-visible funds
Recurring GivingWeekly, biweekly, monthly, quarterly, or annual recurring plans via Stripe Subscriptions
Cover FeesOptional checkbox lets donors add processing fees to their gift amount
Anonymous GivingDonors can hide their name from reports (receipt still sent via email)
Email ReceiptsAutomatic confirmation sent to the donor's email after each gift

Mobile-Responsive Design

The giving portal is fully responsive and optimized for mobile devices. Most online donations come from phones, so the portal provides a streamlined mobile experience.

Portal Customization

Customize the look and feel of your giving portal from the admin dashboard without any code changes. Navigate to Online Giving → Portal to access these settings.

Configuration Options

SettingDescription
Portal EnabledToggle the portal on or off. When disabled, donors see a custom message.
Brand ColorChoose a hex color for the header gradient, buttons, and accents. Preset swatches and custom hex input available.
Welcome HeadingThe main heading shown at the top of the portal (defaults to your organization name).
Welcome MessageSubtitle text displayed below the heading to welcome donors.
Amount PresetsQuick-select dollar amounts shown as buttons (e.g., $25, $50, $100). Add or remove presets as needed.
Default FundPre-select a fund when the portal loads, or let the donor choose.
Show Cover FeesShow or hide the "Cover processing fees" checkbox on the portal.
Cover Fees DefaultWhether the "Cover fees" checkbox is pre-checked when donors first visit.
Thank You MessageCustom message displayed on the success page after a donation is completed.

Live Preview

The Portal settings page includes a real-time preview panel that shows exactly how your portal will look as you make changes. Toggle between desktop and mobile views to ensure it looks great on all devices.

Portal Funds

Control which funds appear on your giving portal and in what order. Navigate to Online Giving → Portal Funds to manage fund visibility.

Managing Fund Visibility

  1. Navigate to Online Giving → Portal Funds
  2. Toggle Visible or Hidden for each fund
  3. Use the Up/Down arrows to set the display order on the portal
  4. Click Save Changes to apply

Summary cards at the top show the total number of active funds, how many are visible on the portal, and how many are hidden. Only active funds can be shown on the portal.

Stripe Configuration

Ecclesly uses Stripe to process online donations. Each campus can have its own Stripe account, giving multi-campus churches full financial separation. Navigate to Online Giving → Stripe Config to manage connections.

Bring Your Own Keys (BYOK)

Each campus connects its own Stripe account using API keys. Secret keys are encrypted at rest and never exposed in the UI after saving. This means each campus keeps full control of its own Stripe account and funds.

Connecting a Campus

  1. Click Configure on the campus card
  2. Enter your Stripe Secret Key and Publishable Key from the Stripe Dashboard
  3. Toggle Live Mode on for real payments (leave off for testing)
  4. Copy the auto-generated Webhook URL and add it to your Stripe Dashboard under Developers → Webhooks
  5. Paste the Webhook Signing Secret from Stripe back into Ecclesly
  6. Click Save

Syncing Transactions

After connecting Stripe, you can import transactions in two ways:

  • Manual Sync: Click the Sync button on any campus card to pull the latest charges from Stripe. Choose a destination fund and optional date range.
  • Automatic Sync: Set up a scheduled sync (daily or weekly) to automatically import new charges. Configure the frequency, time, and default fund for unmatched transactions.

How Donation Sync Works

Ecclesly uses three complementary methods to ensure every Stripe donation makes it into your records. Understanding how they work together helps you know when to take action and when the system handles things automatically.

MethodTriggerUse Case
WebhookAutomatic — Stripe pushes instantlyCard and recurring payments — donation and fee appear within seconds
Transaction SyncManual or scheduledBackup for missed webhooks; also backfills fee data on existing records
Payout SyncManualACH recovery — imports donations that settled after the last transaction sync

1. Webhook — Instant & Automatic

When a donor submits a payment through the giving portal, Stripe fires a notification to Ecclesly in real time (within seconds). Ecclesly immediately creates the donation record, matches the donor to a member account if possible, and stores the Stripe processing fee. No admin action is needed — the record is ready before the donor even leaves the confirmation screen.

2. Transaction Sync — Your Safety Net

The transaction sync is a manual or scheduled backup that queries Stripe for all completed charges in a date range and imports any that aren't already in Ecclesly.

  • Missed webhook — If your server was momentarily unreachable when Stripe sent the event, the sync catches it up
  • Fee backfill — If a donation was created without a fee amount, the sync fills in the missing Stripe fee data automatically
  • No duplicates — Donations already in Ecclesly are recognized and skipped; only genuinely missing records are created

Run the transaction sync from Online Giving → Stripe Config. You can also set it to run automatically on a schedule.

3. Payout Sync — ACH Recovery

ACH bank transfers take 3–4 business days to settle. During that window, Stripe marks the charge as processing, which causes both the webhook and transaction sync to skip it. By the time the charge settles, your sync window may have already passed — leaving the donation missing from the payout.

The Payout Sync addresses this by looking at the actual charges included in each payout and importing any that aren't yet in Ecclesly. Use the ACH Auto-import fund selector on the Payouts page to enable this recovery step. See the Payouts section below for step-by-step instructions.

Self-Healing Design

These three methods work as a layered system. The webhook handles the vast majority of donations instantly. The transaction sync is your automatic backstop. The payout sync is the manual final step for ACH donations that fall through the cracks. Together, they ensure nothing gets permanently lost.

Transactions

View all online donations in one place. Navigate to Online Giving → Transactionsfor a filterable list of every gift made through the portal.

Transaction Table

ColumnDescription
DonorDonor name and email (or "Anonymous")
AmountGift amount in dollars
FundWhich fund the donation was designated to
CampusWhich campus received the donation
Stripe Charge IDThe Stripe charge reference for cross-referencing
Stripe FeeProcessing fee charged by Stripe
Link Status"Linked" if matched to a member record, "Unlinked" otherwise

Filtering

  • Search: Filter by donor name, email, or Stripe charge ID
  • Period: Today, This Week, This Month, Last Month, This Year, or All Time
  • Fund: Filter to a specific fund

Unlinked Donors

Donations from donors whose email doesn't match an existing member record appear as "Unlinked." The dashboard shows an alert when there are unlinked donations so you can review and match them to member records.

Payouts

Track how Stripe transfers collected funds to your bank account. Navigate to Online Giving → Payouts to view payout history and clearing status.

Payout Summary Cards

  • Clearing Balance: Amount currently sitting in the Stripe clearing account
  • Uncleared Payouts: Count and dollar amount of payouts not yet cleared
  • Processing Fees: Total Stripe fees across all payouts
  • Oldest Uncleared: How many days ago the oldest uncleared payout arrived

Payout Table

Each payout shows the arrival date, gross amount, fees, net deposit, number of charges included, Stripe status (Paid, Pending, In Transit, Failed), and clearing status (Cleared, Matched, Uncleared).

Payout Details

Click any payout row to see its full details:

  • Gross, fees, and net amounts
  • Linked journal entry (if one was created)
  • Matched bank transaction (from Plaid)
  • Full list of individual donations included in the payout
  • Manual Clear button for reconciliation

Two Separate Stripe Syncs

Ecclesly has two distinct Stripe sync operations that serve different purposes:

SyncWhat it doesCreates a JE?
Sync DonationsPulls individual charges from Stripe, creates donation records, and stores the Stripe fee amount on each recordNo — creates donation records only. JEs are generated separately via Accounting → Donation Entries.
Sync PayoutsPulls payout batches from Stripe and stores them as records in the Payouts listNo — only imports the payout record

Sync Payouts does not create the clearing journal entry

Running Sync Payouts only brings the payout data into Ecclesly. The clearing journal entry (Dr 1010 / Dr 5485 / Cr 1050) is created separately when the payout is cleared — either automatically via bank feed matching or manually via the Clear button. See the clearing section below.

Why the two-step approach? Stripe batches multiple individual donations into a single payout. For example, 12 donations totaling $500 gross might produce one $482.10 bank deposit (after fees). Sync Donations records each individual gift. Sync Payouts records the batch-level payout. Clearing connects the batch to the actual bank deposit, closing the loop on account 1050.

Individual donations vs. donation batches

When journal entries are generated for Stripe donations, each gift gets its own individual JE — one Dr 1050 / Cr Revenue entry per donation. If you manually group donations into a Donation Batch (under Donations → Batches), the batch produces a single consolidated journal entry for the entire group instead. Individual donations within a batch do not get their own separate JEs, which prevents double-counting when reconciling account 1050.

When Journal Entries Are Created

Online donations flow through four distinct steps before they fully close in your books. Each step happens at a different time, and journal entries don't affect the general ledger until they are posted.

1Donation receivedWebhook fires or autoschedule runs

Donation record created. Stripe fee amount stored on the record for later use.

No JE created
2Generate Missing JEsAccounting → Donation Entries → Generate

Draft journal entries created — one per donation. These are placeholders only. They do not post to the general ledger or affect account balances until reviewed and posted.

Dr 1050 Stripe Clearing (gross)  ·  Cr Revenue (gross)  ·  Status: Draft
Draft per donation
3Review & PostAccounting → Donation Entries → Post

Staff reviews the draft entries and posts them. Only at this point do they become permanent records in the general ledger and affect account 1050.

Posted to GL
4Payout clearedOnline Giving → Payouts → Clear  or  Accounting → Stripe Clearing

Payout matched to the bank deposit. The stored fee amounts are used here to split the payout into net cash received and fee expense.

Dr 1010 Cash (net)  ·  Dr 5485 Processing Fees (fee)  ·  Cr 1050 Stripe Clearing (gross)
JE per payout

Syncing Payouts & ACH Auto-import

Use the Sync Payouts button to pull the latest payout data from Stripe and link donations to their corresponding payouts. This is especially important for ACH (bank) payments, which have a 3–4 day settlement delay and may not be imported during a standard donation sync.

Why ACH donations sometimes go missing

When a donor pays by bank transfer (ACH), Stripe marks the charge as processing for 3–4 business days. If your donation sync runs before the charge settles, it gets skipped. The result: the payout arrives in your bank account but the linked donations appear incomplete.

To recover missing ACH donations, use the ACH Auto-import dropdown next to the Sync Payouts button:

  1. Open a payout and notice fewer donations than expected.
  2. Click the ACH Auto-import button and select a fund (e.g., General Fund).
  3. Click Sync Payouts. Ecclesly will fetch each charge from Stripe and auto-import any that aren't already in your donation records, assigning them to the selected fund.
  4. If no fund is selected, the sync still runs but only links donations that already exist — no new records are created.

Stripe Clearing & Account 1050

The Payouts page is designed to give you a clear picture of three things at once:

  • What was paid out — the net amount Stripe deposited into your bank account
  • Which donations make up that payout — every individual charge, whether it came in via webhook or transaction sync
  • The Stripe fees — so the gross-to-net difference is fully accounted for in your books

This is important for reconciliation: your bank statement shows a single deposit (e.g., $482.10), but your donation records show individual gifts (e.g., $200 + $150 + $150 = $500 gross). The fee breakdown ($17.90) explains the difference. Without this, your books would show an unexplained discrepancy every time Stripe pays out.

What "Clearing" Means

Clearing answers one simple question:

“Did this Stripe payout show up in my bank account?”

Yes → Clear it ✓Not yet → Leave it uncleared

When cleared, the money has completed the full journey: Donor's card → Stripe → Your bank account. Clearing creates the journal entry that closes account 1050 for that payout batch.

How clearing happens — three scenarios

ScenarioHow it worksJE created?
Smart mode (auto)Plaid imports the bank deposit, the system matches it to the Stripe payout with high confidence, and clears it automatically — no user action neededYes — automatic
Assisted mode (confirm)System suggests the match in Bank Feeds; user reviews and clicks Confirm — JE created at that momentYes — on confirmation
Manual Clear buttonUser opens the payout in the Payouts list and clicks Manual Clear — no bank transaction neededYes — on click

Smart mode falls back gracefully

If Smart mode auto-clearing fails — for example because the accounting period is closed — Ecclesly automatically falls back to suggesting the match instead of silently failing. The payout stays uncleared and appears in Bank Feeds for your review.

Account 1050 — Stripe Clearing

Ecclesly uses a dedicated chart of accounts entry — 1050 Stripe Clearing — as a transit account to bridge the timing gap between when a donation is received and when the cash lands in your bank.

WhenJournal EntryMeaning
JE posted (step 3)Dr 1050 Stripe Clearing
Cr Donation Revenue
Revenue recognized; funds in transit at Stripe
Payout clearedDr 1010 Cash
Dr Processing Fees Expense
Cr 1050 Stripe Clearing
Cash received in bank; 1050 returns to zero

You don't reconcile 1050 against an external statement — it's self-reconciling. It zeros out automatically as each payout clears. The balance of 1050 at any point equals the total funds currently sitting in Stripe that have not yet deposited to your bank.

The Payouts page is your 1050 report

The Clearing Balance KPI card on the Payouts page shows your current 1050 balance — the total in transit from Stripe to your bank. Every row still showing Uncleared is a line item contributing to that balance. When all payouts are cleared, 1050 is zero and your books are fully reconciled.

Recurring Giving

Manage recurring donation plans created by donors through the portal. Navigate to Online Giving → Recurring to view and manage all active plans.

KPI Dashboard

  • Active Plans: Number of currently active recurring schedules
  • Monthly Recurring Revenue (MRR): Projected monthly giving from all active plans (normalized across frequencies)
  • Average Gift: Average recurring donation amount
  • Past Due: Plans with failed or overdue payments

Supported Frequencies

FrequencyBilling Cycle
WeeklyEvery 7 days
Every 2 WeeksEvery 14 days
MonthlySame day each month
QuarterlyEvery 3 months
AnnuallyOnce per year

Plan Management

Admins can perform the following actions on recurring plans:

  • Pause: Temporarily suspend an active plan (can be resumed later)
  • Resume: Reactivate a paused plan
  • Cancel: Permanently cancel a plan (irreversible)

Cancellation is Permanent

Once a recurring plan is cancelled, it cannot be reactivated. The donor would need to set up a new recurring gift through the portal. Use Pause if you need a temporary suspension.

Reports & Analytics

Get insights into your online giving patterns. Navigate to Online Giving → Reportsfor analytics across three tabs: Overview, Trends, and Donors.

Filters

  • Period: This Year, Last Year, or All Time
  • Campus: Filter to a specific campus
  • Fund: Filter to a specific fund

Summary KPIs

At the top of the reports page, four cards show key metrics with period-over-period comparison:

  • Total Online Giving with percentage change vs. prior period
  • Transaction Count with percentage change
  • Unique Donors
  • Average Gift Size with percentage change

Report Tabs

Overview

Monthly giving trend chart, portal visitor analytics (via Umami), giving breakdown by fund, and giving breakdown by campus.

Trends

Average gift size over time and giving distribution by day of the week (helps identify peak giving days).

Donors

New vs. returning donor retention chart showing how many donors are giving for the first time each month vs. returning donors.

Audit Trail

Track all changes to online donation records. Navigate to Online Giving → Audit Trailfor a complete log of creates, updates, and deletes.

Audit Log Entries

Each audit entry includes:

  • User: Who made the change (name and email, or "System" for automated actions)
  • Action: Created, Updated, or Deleted
  • Entity: The type of record that was changed
  • Campus: Which campus the record belongs to
  • Timestamp: When the change occurred
  • Values: A snapshot of the new values after the change

Use the action filter to narrow results to a specific change type (Created, Updated, or Deleted).

Roles & Permissions

Online Giving has its own set of granular permissions and two built-in system roles. Global Admins and Campus Admins automatically have full access.

System Roles

RoleAccess Level
Online Giving AdminFull access to all Online Giving features: view and manage transactions, payouts, portal configuration, recurring plans, Stripe settings, reports, and audit trail.
Online Giving ViewerRead-only access: view transactions, payouts, portal settings, recurring plans, Stripe configuration, reports, and audit trail. Cannot modify settings or manage plans.

Permission Categories

PermissionDescription
DashboardView the Online Giving dashboard with KPIs and metrics
TransactionsView and manage online donation transactions
PayoutsView Stripe payout history and clearing status
Portal SettingsView and manage portal branding, presets, and messages
Portal FundsView and manage fund visibility on the portal
Recurring GivingView recurring plans and pause, resume, or cancel them
ReportsView online giving analytics and reports
Stripe ConfigurationView and manage Stripe connection settings
Audit TrailView audit logs for online giving actions

Custom Roles

In addition to the built-in system roles, you can create custom roles with any combination of Online Giving permissions. This is useful if you want to give someone access to only specific areas like reports or transactions.