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:
- 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.
- 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
| Feature | Description |
|---|---|
| Amount Presets | Quick-select buttons (e.g., $25, $50, $100) plus a custom amount field |
| Fund Selection | Donors choose which fund to give to from your portal-visible funds |
| Recurring Giving | Weekly, biweekly, monthly, quarterly, or annual recurring plans via Stripe Subscriptions |
| Cover Fees | Optional checkbox lets donors add processing fees to their gift amount |
| Anonymous Giving | Donors can hide their name from reports (receipt still sent via email) |
| Email Receipts | Automatic 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
| Setting | Description |
|---|---|
| Portal Enabled | Toggle the portal on or off. When disabled, donors see a custom message. |
| Brand Color | Choose a hex color for the header gradient, buttons, and accents. Preset swatches and custom hex input available. |
| Welcome Heading | The main heading shown at the top of the portal (defaults to your organization name). |
| Welcome Message | Subtitle text displayed below the heading to welcome donors. |
| Amount Presets | Quick-select dollar amounts shown as buttons (e.g., $25, $50, $100). Add or remove presets as needed. |
| Default Fund | Pre-select a fund when the portal loads, or let the donor choose. |
| Show Cover Fees | Show or hide the "Cover processing fees" checkbox on the portal. |
| Cover Fees Default | Whether the "Cover fees" checkbox is pre-checked when donors first visit. |
| Thank You Message | Custom 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
- Navigate to Online Giving → Portal Funds
- Toggle Visible or Hidden for each fund
- Use the Up/Down arrows to set the display order on the portal
- 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
- Click Configure on the campus card
- Enter your Stripe Secret Key and Publishable Key from the Stripe Dashboard
- Toggle Live Mode on for real payments (leave off for testing)
- Copy the auto-generated Webhook URL and add it to your Stripe Dashboard under Developers → Webhooks
- Paste the Webhook Signing Secret from Stripe back into Ecclesly
- 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.
| Method | Trigger | Use Case |
|---|---|---|
| Webhook | Automatic — Stripe pushes instantly | Card and recurring payments — donation and fee appear within seconds |
| Transaction Sync | Manual or scheduled | Backup for missed webhooks; also backfills fee data on existing records |
| Payout Sync | Manual | ACH 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
| Column | Description |
|---|---|
| Donor | Donor name and email (or "Anonymous") |
| Amount | Gift amount in dollars |
| Fund | Which fund the donation was designated to |
| Campus | Which campus received the donation |
| Stripe Charge ID | The Stripe charge reference for cross-referencing |
| Stripe Fee | Processing 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:
| Sync | What it does | Creates a JE? |
|---|---|---|
| Sync Donations | Pulls individual charges from Stripe, creates donation records, and stores the Stripe fee amount on each record | No — creates donation records only. JEs are generated separately via Accounting → Donation Entries. |
| Sync Payouts | Pulls payout batches from Stripe and stores them as records in the Payouts list | No — 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.
Donation record created. Stripe fee amount stored on the record for later use.
No JE createdDraft 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: DraftStaff 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 GLPayout 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)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:
- Open a payout and notice fewer donations than expected.
- Click the ACH Auto-import button and select a fund (e.g., General Fund).
- 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.
- 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?”
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
| Scenario | How it works | JE 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 needed | Yes — automatic |
| Assisted mode (confirm) | System suggests the match in Bank Feeds; user reviews and clicks Confirm — JE created at that moment | Yes — on confirmation |
| Manual Clear button | User opens the payout in the Payouts list and clicks Manual Clear — no bank transaction needed | Yes — 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.
| When | Journal Entry | Meaning |
|---|---|---|
| JE posted (step 3) | Dr 1050 Stripe Clearing Cr Donation Revenue | Revenue recognized; funds in transit at Stripe |
| Payout cleared | Dr 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
| Frequency | Billing Cycle |
|---|---|
| Weekly | Every 7 days |
| Every 2 Weeks | Every 14 days |
| Monthly | Same day each month |
| Quarterly | Every 3 months |
| Annually | Once 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
| Role | Access Level |
|---|---|
| Online Giving Admin | Full access to all Online Giving features: view and manage transactions, payouts, portal configuration, recurring plans, Stripe settings, reports, and audit trail. |
| Online Giving Viewer | Read-only access: view transactions, payouts, portal settings, recurring plans, Stripe configuration, reports, and audit trail. Cannot modify settings or manage plans. |
Permission Categories
| Permission | Description |
|---|---|
| Dashboard | View the Online Giving dashboard with KPIs and metrics |
| Transactions | View and manage online donation transactions |
| Payouts | View Stripe payout history and clearing status |
| Portal Settings | View and manage portal branding, presets, and messages |
| Portal Funds | View and manage fund visibility on the portal |
| Recurring Giving | View recurring plans and pause, resume, or cancel them |
| Reports | View online giving analytics and reports |
| Stripe Configuration | View and manage Stripe connection settings |
| Audit Trail | View 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.