You raise the retail price on a plush toy in the gift shop, save it, and the margin figure next to it looks exactly the same as before. Or the markup reads zero on an item you know makes money. Before you assume Altru is miscalculating, it helps to know what those two numbers are built from, because when they look wrong the cause is almost always one of their inputs, not the math.
Margin and markup are not the same number
Both use the same two inputs, cost and selling price, but they divide by different things:
- Margin = (price − cost) ÷ price. A $20 item that cost $8 has a 60% margin.
- Markup = (price − cost) ÷ cost. The same item has a 150% markup.
Mixing the two up is one of the most common reasons the numbers seem wrong. Someone checks the markup against a target that was set as a margin, or the other way around, and the figure looks off even though it’s right. Do a quick hand calculation on one item before you dig any further.
The usual reasons the numbers look stuck
1. The cost never changed
Margin and markup only move when price or cost moves. If your vendor raised prices but the item’s cost in Altru still shows last year’s figure, every margin calculation is based on old cost. This tends to happen when new stock is received through a process that doesn’t touch the item’s cost, or when nobody enters the new unit cost at all. Check the cost field on the item itself first.
2. Cost is zero or blank
Markup divides by cost. If cost is zero, there’s nothing meaningful to show, so you may see a blank, a zero, or an odd value depending on where you’re looking. Items added in a hurry before an event, consignment pieces, and donated stock are the usual suspects. A query for merchandise items where cost is blank or zero will find them quickly.
3. You changed the price in one place but are reading it in another
If an item has variations, such as sizes or colors, each one may carry its own price and cost. Updating the parent item doesn’t necessarily change every variation, and a report that rolls up variations will still reflect the old values. Spot-check two or three variations directly.
4. The report is showing history, not the current item setup
Sales reports generally reflect what happened at the time of each sale: the price actually charged and the cost recorded then. Changing an item’s price today shouldn’t rewrite last month’s margins, and in most accounting setups you wouldn’t want it to. If you’re comparing an item record with a sales report, you’re comparing current setup with past transactions, and they will disagree.
5. Discounts and price overrides
Member discounts, promotions, and manual price overrides at the register lower the price actually received. A margin figure based on the item’s set price won’t match a figure based on what people actually paid. In a shop where most buyers are members, that gap can be large and completely legitimate.
6. The screen hasn’t been refreshed
It sounds obvious, but a figure displayed on a page you opened before saving may not recalculate until you reload the record. Close it, reopen it, and look again before chasing anything else.
A short diagnostic routine
- Pick one item that looks wrong. Write down its current price and cost exactly as Altru shows them.
- Calculate margin and markup by hand using the formulas above.
- If your hand numbers match what Altru displays, the calculation is fine and the problem is an input: stale cost, a variation that wasn’t updated, or a misread margin versus markup.
- If your hand numbers don’t match, note where you’re seeing the figure (the item record, a specific report, a query) and whether the item has variations or recent inventory activity.
- Repeat with a second item from a different category. One bad item points to data entry; a whole category points to a process.
If step 4 is where you land, and the inputs are clearly correct but the displayed figure is not, that’s worth a case with Blackbaud support. Bring the item, both values, your hand calculation, and where you saw the discrepancy. Exactly how and when Altru recalculates these fields can depend on your configuration and version, and support can confirm that faster than trial and error on live data. If you have a sandbox, reproduce it there first.
Keeping it from drifting again
- Tie cost updates to receiving. Whoever checks in a new shipment should also confirm the unit cost. Make it a line on the receiving checklist, not a separate task someone remembers later.
- Review zero-cost items monthly. Save the query from above and run it before each month-end close.
- Decide which number you manage to. Pick margin or markup as your shop’s target metric and use it consistently in buying decisions and reports. Mixing them causes a lot of avoidable confusion.
- Separate list margin from realized margin. Look at item setup when you’re pricing, and at sales reports when you’re judging performance. Expect them to differ by roughly your average discount.
Quick answers
Will changing an item’s cost update margins on past sales?
It generally shouldn’t, since past transactions reflect the values at the time of sale. If you need to correct historical cost for reporting, confirm the right approach with your finance team and Blackbaud support before editing anything.
Why is markup higher than margin for the same item?
Because markup divides the profit by the smaller number (cost) and margin divides it by the larger one (price). For any profitable item, markup will always be the bigger percentage.



