A convenience fee that makes sense on a Saturday general admission ticket can feel wrong on a free member preview, a school field trip, or a sold-out fundraiser. Fee policy at most cultural organizations isn’t one rule. It’s a set of rules that vary by what’s being sold and how it’s being sold. The challenge is getting Altru to follow that policy without staff deleting fees by hand at the register.
This guide covers how to think about fees by program and by sales channel, what to test in Altru before you commit, and the workarounds that hold up when the native setup can’t match your policy exactly.
Start with a fee matrix, not the software
Before opening any configuration screen, write the policy as a simple grid. Programs down the side, sales methods across the top:
- Programs: general admission, timed special exhibitions, camps and classes, member-only events, school and group visits, ticketed fundraisers.
- Sales methods: daily sales at the desk, advance sales by phone, online web forms, group sales.
In each cell, write the fee (flat amount, percentage, or none). Often the policy turns out simpler than expected, for example: fees apply online but not at the desk, with a few programs exempt everywhere. Knowing that shape tells you which configuration approach you need, and whether you need one at all.
What to test in Altru
Altru lets you define fees and control where they apply, and sales method is generally part of that setup. How finely you can target specific programs or events is where organizations run into limits, and the answer can depend on how your programs, events, and price types are built. Rather than assume either way, confirm it:
- Build a test fee in a sandbox or on a test program. Configure it for one sales method only and run a transaction through each channel. Note where it appears and where it doesn’t.
- Try to exclude one program. Set up a second test program and see whether the fee can be kept off it while still applying to the first. If you can’t find a clean way, ask Blackbaud support directly whether program-level fee targeting is available in your version.
- Check the receipt and the revenue. Make sure the fee shows the way you want on confirmations and posts to the right account. A fee that’s technically correct but lands in the wrong GL account creates a different problem for finance.
If the native setup covers your matrix, you’re done. If it covers channels but not programs, the options below fill the gap.
Workarounds when programs need different fee rules
Build the fee into the price
For an exempt program, the simplest approach is often to stop charging a separate fee and set the price type where you want it. For a program that should carry a higher fee, raise the price on the relevant price types. You lose the separate fee line, but desk staff never have to remember an exception. Check with finance first, because this moves fee revenue into program revenue.
Use separate price types or programs for the exception
If school groups shouldn’t pay a fee but the public should for the same program, a dedicated price type or a separate program for groups keeps the two apart. This adds setup, but it makes the rule visible in reporting instead of relying on someone removing a fee during the sale.
Route exempt programs through their own sales method
When fees follow the sales method, some organizations sell fee-free programs only through a channel that doesn’t carry the fee, such as group sales or advance sales by phone. This works for low-volume programs. It doesn’t work for anything the public expects to buy online.
Document the manual override, if you keep one
If staff are allowed to remove a fee during a sale, write down exactly when. Then build a query on transactions where the fee was removed, and review it monthly. Unreviewed overrides are how fee revenue quietly disappears and how guests end up treated differently depending on who rang them up.
Watch the downstream effects
- Refunds and exchanges: decide whether fees are refundable and test that a refund behaves the way your policy says.
- Memberships and add-ons: if a member adds a ticket to a membership purchase, confirm which fee rule wins.
- Reporting: make sure your revenue reports can separate fee income by channel. If they can’t, a query or smart field on the fee line is worth building now rather than at fiscal year-end.
- Public messaging: whatever you configure, the website should say the same thing. A fee that first appears at the last step of checkout is a reliable way to generate complaints.
Quick answers
Can I charge a fee online but not at the front desk?
Tying a fee to sales method is a common setup, so this is usually achievable. Test it with a real transaction in each channel before going live.
Can I make one program fee-free?
Possibly, depending on how your fees, programs, and price types are configured. If you can’t target it cleanly, building the fee into price types or giving the exempt program its own price type is the dependable fallback.



