You’re earning cash back, but it feels random
It’s not that the cash back isn’t showing up. It is—$6 here, $11 there—then a month where the “good” card somehow earns less than the plain 2% one. The friction is usually small but constant: a rotating category you forgot to activate, a grocery purchase that codes as “superstore,” a streaming bill that falls outside the bonus bucket, a redemption minimum that delays using the rewards. None of this breaks your budget, but it makes optimization feel like guesswork.
The tricky part is you can’t audit this from marketing rates. You only see the real outcome after the statement closes, when caps and definitions quietly decide what counted.
Start with your spend map, not card ads
So instead of hunting the next “5% back” headline, it helps to pull one month of statements and turn it into a quick spend map. Not a budget overhaul—just four buckets that actually drive most cash-back setups: groceries, gas/transit, dining, and “everything else” (including bills). The constraint is time: if it takes more than 20 minutes, it won’t get repeated, and the card choice slips back into impulse.
Once the dollars are grouped, the ads start looking less persuasive. A card that’s “amazing for groceries” matters less if your grocery line is $350 a month and your “everything else” is $1,400. A clean 2% card can beat a flashy category card after caps, activation misses, or a quarter where your spending doesn’t match the bonus theme. This is also where annual fees get real: they’re not “worth it” in theory—they’re a hurdle your spend map has to clear every single year.
Groceries showdown: big rates, picky definitions

Groceries is usually the first place people try to “win,” because the headline rates are loud: 3%, 4%, 5%, sometimes more. The catch shows up at checkout. The same cart of food can land in three different outcomes depending on where you shop and how the merchant codes. A neighborhood supermarket tends to behave the way the card issuer expects. A big-box run for the same groceries often doesn’t, and the statement quietly drops the purchase into 1% or 2% territory. That’s when the math starts to feel unfair, even though it’s just definitions doing their job.
The constraint is that grocery cards are built around merchant category codes, not what’s in the bags. “Superstores,” “warehouse clubs,” delivery marketplaces, and meal kits can fall outside the grocery bucket on some cards, even when the spending is functionally food. Then there are caps: 5% might only apply to the first $1,500 per quarter, or $6,000 per year, after which the rate reverts. If your spend map shows $700 a month in groceries, you can hit a cap fast and end up with a blended rate that looks more like 3% than 5%.
The more reliable approach is to test your own merchants before committing. Look back at one statement and find the line-item label for your main store, your “backup” store, and any delivery service you use. If one of them codes outside grocery, the best-looking grocery card becomes a part-time tool, not your default. That realization tends to narrow the field quickly, and it keeps the 2% card from being the silent winner again.
Gas rewards: easy wins, tricky station coding
Gas is the category that looks easiest to optimize because the spend is obvious and frequent. But the first surprise usually comes on the statement, not at the pump: one station earns the bonus rate, another earns base. The constraint here is timing—most people only notice after a full month, when there’s nothing to “fix” except the next fill-up.
The issue is merchant coding, not whether you bought fuel. Traditional pay-at-the-pump transactions at branded stations tend to land where issuers expect. The leak shows up with convenience-store registers, independent stations that code oddly, and anything that routes through a third party. Car washes attached to the station, in-app payments, and grocery-store fuel centers can also slip into a different category, which turns “3% on gas” into a blended number that quietly resembles 2%.
In practice, gas optimization works when it stays boring: identify the one or two stations you reliably use, check how they coded on your last statement, then commit that card to those merchants only. If your “regular” station doesn’t code as gas, the best gas card becomes a situational tool—and the no-drama 2% card takes the wheel again.
Dining and bills: where “cash back” leaks

Dining is the category that feels like it should be simple until you’re staring at a statement line that earned 1% because it coded as “bar,” “entertainment,” or a third-party service. The leak usually starts when ordering moves off the restaurant’s own terminal: delivery apps, QR-code pay links, and in-venue kiosks can come through as something other than dining. If you’re trying to run a two-card setup, that uncertainty matters, because a few miscategorized $60–$90 orders a month can erase the advantage of carrying a “dining” card in the first place.
Bills create a different kind of leak: they’re consistent, but many don’t qualify for any bonus category and some can’t be paid by card without a fee. A 2.9% convenience fee on rent, taxes, or utilities turns “2% back” into a net loss, and autopay makes it easy to miss. The workable pattern is to treat dining as a test category (check three recent charges for how they coded), and treat bills as a net-rate exercise: only put a bill on a card when the rewards clearly beat the fee, every month, without exception.
When 5% isn’t 5% after the fine print
The next “gotcha” usually isn’t the category—it’s the math around it. That 5% rate often lives behind a cap, then quietly drops to 1% or 2% for the rest of the quarter or year. If you hit a $1,500 quarterly cap early, the effective rate on your total category spend can land closer to 3% without feeling like you did anything “wrong.” The constraint is you only see this after the statement closes, when the blended number is already baked in.
Then come the terms that change what “5%” means in practice: activation windows, minimum redemption thresholds, and rewards that post as points with a cash value that depends on how you redeem. Add a $95 annual fee or a “first-year promo” that expires, and the headline rate stops being the comparison. The cleaner test is net cash back: bonus earnings minus fees, minus anything you paid to generate the charge (like a bill-pay convenience fee).
Pick a setup you’ll actually use all year
By this point, the “best” setup usually isn’t the one with the highest top-line rates—it’s the one that survives your normal week without constant checking. If a card needs quarterly activation, careful cap-tracking, and perfect merchant coding, the real constraint is attention. Miss one step, and the whole plan collapses back into base earnings.
In practice, the most durable outcome is often a boring default plus one specialist: a no-fee 2% card for everything, and a groceries-or-gas card you only use at the merchants you’ve already seen code correctly. If the specialist has a cap, treat it like a lane, not a lifestyle—when it’s full, switch back without debate. The goal isn’t peak rewards in April; it’s a higher effective rate in December, after fees and friction.