Finance asks a simple question at month end: how much admission revenue did we give up to member benefits, and how much to promotions? If every discount in Altru lands in one bucket, nobody can answer that without going back through orders one at a time.
Those two numbers mean different things. A member discount is part of what someone paid for when they joined. A coupon or a partner promotion is a marketing cost. Mix them together and the membership team can’t show what the benefit is worth, and the marketing team can’t tell whether a campaign paid off. The fix is mostly setup and naming, plus one or two good queries.
Two kinds of “membership discount”
Before changing anything, agree on what you’re separating. People use the phrase for two different things:
- Discounts members receive on tickets, programs, or the store because they’re members (a benefit of the membership).
- Discounts applied to the membership sale itself, such as a reduced price for educators, seniors, or a lapsed-member win-back offer.
Both are worth tracking, and they belong in different reports from ordinary ticket promotions. Write down which categories your organization cares about. Three or four is usually enough: member benefit, membership sale discount, ticket promotion, and comp or staff.
Step 1: Build discounts that can be told apart
Reporting can only split what the setup already separates. If one generic “10% off” discount is used for members at the desk, for a newspaper coupon online, and for a corporate partner, no query will pull those apart later.
- Create a separate discount for each purpose, even when the amount is identical. “Member 10% admission” and “Spring promo 10% admission” should be two records.
- Use a naming prefix that sorts and filters cleanly, for example MBR – for member benefits, MSHIP – for discounts on membership sales, PROMO – for campaigns, and COMP – for comps. Prefixes make queries far easier to build and maintain.
- Retire the old catch-all discounts once the new ones are in place, so staff can’t keep picking the familiar one out of habit. Mark them inactive rather than deleting them, so historical sales still report.
- Check where each discount can be used. Make sure member-only discounts are only offered in the sales channels and situations where membership is verified, and promo discounts only where codes apply.
Step 2: Decide whether finance needs separate GL treatment
Some organizations only need the split in reports. Others want member benefit discounts and promotional discounts to post to different general ledger accounts. Whether Altru can map each discount to its own account in your setup depends on how your revenue and GL mappings are configured, and I’d confirm that in a test environment or with Blackbaud support before promising it to your finance office. If separate accounts aren’t practical, a clean discount naming scheme plus a monthly query usually satisfies the auditors just as well.
Step 3: Build the query once and reuse it
With discounts named by category, build an ad-hoc query of sales or order discounts for a date range. Useful output fields:
- Discount name (so you can group by prefix)
- Discount amount
- Transaction date and sales channel (desk, online, group)
- Item or program discounted
- Constituent, if you want to look at member behavior later
Export, group by prefix, and you have the split. Save the query with a clear name and add a short description so the next person on the team knows what it’s for. If the field names you need aren’t obvious in the query designer, test with a handful of known transactions first and compare the totals against your daily sales reports before relying on it.
Things that throw the numbers off
- Comps entered as 100% discounts. If free admissions run through the same discount list, they can swamp everything else. Give them their own category.
- Price levels used as discounts. A “member price” set up as a separate ticket price rather than a discount won’t show in a discount query at all. If your organization prices member tickets that way, you’ll need to report the gap between the regular and member price separately.
- Manual overrides at the desk. Ad hoc price changes rarely carry a meaningful label. Limit who can do them, and ask for a reason in the comment field.
Step 4: Clean up the past, or draw a line
Historical sales recorded under a generic discount usually can’t be reclassified with confidence. Rather than guessing, pick a start date for the new scheme, note it in your reports, and compare periods only from that date forward. A year in, you’ll have a clean baseline for what the member benefit actually costs.
Getting the numbers in front of people
Once the query exists, the remaining chore is exporting it every month and rebuilding the same spreadsheet. Data Bridge can sync an Altru query to Google Sheets on a schedule, so finance and membership staff can open a shared sheet that already shows discounts by category instead of waiting on a manual export. Altru stays where the sales live; the sheet is just a view of them.
Quick answers
Can I separate discounts that were all entered under one name?
Only if something else on the transaction tells them apart, like the sales channel or whether the buyer was a member at the time. Usually it’s cleaner to start fresh from a set date.
Should member discounts on tickets and on the store be separate too?
If anyone will ask what each benefit is worth, yes. Use the same prefix with a different suffix, such as MBR – Admission and MBR – Store.



