Finance asks for October program revenue. You run Altru’s Program Revenue report and get one number. Then someone runs Total Revenue and Payments for the same dates and gets a different one. Neither report is broken. They answer different questions, and once you know which question each one answers, the gap usually explains itself.
The short version
Think of it as “what did we earn from programs” versus “what money came in.”
- Program Revenue is program-centric. It looks at ticketed programs and their scheduled events and shows the revenue tied to them. It is the report you reach for when the question is “how did the planetarium show do this month?”
- Total Revenue and Payments is transaction-centric. It looks across the revenue your organization took in during a period, which typically includes more than program tickets: memberships, donations, merchandise, fees, and other sales. It is closer to what your finance office sees in deposits.
Exact filters, groupings, and column definitions can vary with your Altru version and configuration, so treat the rest of this as a framework for reconciling the two, not a spec. The fastest way to confirm how your site behaves is to run both reports for a single, small date range and compare them line by line.
Why the totals don’t match
1. Event date versus transaction date
This is the big one. A ticket sold in September for a December event is a September payment but December program activity. Depending on which date a report filters on, that sale shows up in different months. Advance sales, especially for holiday events and school-year programs, can make the two reports diverge by a lot. Check which date each report is using before you compare anything else.
2. Scope
Total Revenue and Payments casts a wider net. If membership sales, donations at the register, or merchandise are in one report and not the other, the totals will never agree, and they shouldn’t. Subtract the non-program categories first, then compare what’s left.
3. Refunds, exchanges, and adjustments
A refund issued this month for a ticket sold last month can land in a different period, or a different line, in each report. Exchanges and voids can behave the same way. If your numbers are close but not equal, look here.
4. Group sales
Group reservations often carry deposits, balances due, and invoices paid weeks apart. Whether that revenue appears in program-level reporting, and on which date, depends on how your group sales are set up and how payments are applied. Don’t assume group revenue is fully reflected in program-level totals. Before you rely on either report for groups, pick one recent group reservation, trace its deposit and final payment, and see where each piece lands. If the behavior isn’t what you need, ask Blackbaud support whether a different report or setting covers it.
Getting a program revenue view you can actually use
What finance and programs staff usually want is something neither standard report may give you out of the box: every program, every scheduled event, in date order, with revenue from all channels (walk-up, online, advance, and groups) side by side. Here’s a workable approach.
- Agree on the definition first. Decide with finance whether “program revenue” means revenue by event date or by payment date, and whether group sales belong in it. Write that down. A lot of back-and-forth over whose number is right goes away once this is settled.
- Build a query on scheduled events, not on sales. A report or query that starts from sales records generally can only list events that have sales. If you want upcoming events with zero sales so far to appear, start from the event schedule and pull revenue in as a field. Events with nothing sold yet then show a blank or zero instead of disappearing.
- Add group revenue as its own column. Even if you can’t merge it cleanly, a separate group sales column keeps it visible and stops it from being silently left out.
- Keep a reconciliation tab. Each month, record the Program Revenue total, the Total Revenue and Payments total, and the categories that explain the difference (memberships, donations, merchandise, timing of advance sales, refunds). After two or three months you’ll know what a normal gap looks like, and an abnormal one will stand out.
- Sanity-check against your daily close. If a month looks off, compare against your batches or daily sales close for a few sample days. Discrepancies usually trace back to a small number of transactions.
Which report to send to whom
- Program and education staff: Program Revenue, or your event-based query. They care about how individual programs and time slots performed.
- Finance and the board: Total Revenue and Payments, with a note explaining how program revenue fits inside it.
- Leadership reviewing a program’s success: the event-based view with groups included, so a program that sells mostly to schools doesn’t look weaker than it is.
Moving the numbers somewhere easier to work with
Much of the reconciliation work above happens in a spreadsheet anyway. Data Bridge syncs Altru query results to Google Sheets, so the event-based query and your revenue queries can land in the same workbook instead of being exported and pasted by hand each month. The query design and the definitions are still yours to set in Altru.
Quick answers
Which report is “right”?
Both, for different questions. Program Revenue describes program performance; Total Revenue and Payments describes money received across the organization.
Why don’t events with no sales appear?
Output that starts from sales records typically only includes events that have sales. Start a query from the event schedule if you need the full calendar.



