We use privacy-friendly analytics (Plausible) for aggregate site traffic. Privacy Policy
TST* COFFEE #1842 isn’t a category problem, it’s a readability problem. Clear names make reviews possible.
Vault & Compass

You can’t manage what you can’t recognize. Bank feeds are full of processor prefixes, store numbers, and abbreviations that mean nothing at a glance. The raw string is optimized for the payment network, not for you.
If every row needs decoding, you postpone the review. Postpone the review and the sheet dies. Clean names aren’t cosmetic; they’re what makes a ten-minute skim possible instead of a forty-minute forensic exercise you schedule and then don’t do.
There’s a second cost. When you can’t tell what a row is, you tag it “Other” and move on. Do that thirty times and your categories stop meaning anything, which is one of the quieter reasons categorizing transactions feels like it never quite works.
The pattern is always the same: strip the processor prefix, drop the store number, keep the brand.
TST*BLUE BOTTLE #4421 becomes Blue Bottle. AMZN MKTP US*AB12 becomes Amazon. SQ *LOCAL BAKERY becomes Local Bakery. TST* and SQ * are Toast and Square, the payment processors. They tell you how the merchant takes cards, which is not a fact you need in a budget.
Keep enough detail to distinguish similar merchants when it matters. If you shop at two locations of the same grocery chain and the difference changes a decision, keep the location. If it doesn’t, drop it. The test is whether the extra characters ever change what you do.
Build a rename map: a two-column tab where the left side is a fragment the raw name contains and the right side is the display name you want. Apply it when transactions land, with a lookup that scans for the fragment rather than matching the whole string.
Match on the shortest fragment that stays unique. BLUE BOTTLE is stable across store numbers and processors; the full raw string isn’t, and you’ll be adding a new row every time a store number changes.
Over time the map covers the large majority of your rows, and new merchants become the only exceptions. Five minutes a month keeps it current. Sheetful applies merchant enrichment on both the Free and Premium plans, so cleaned names arrive with the transactions rather than waiting for your map to catch up; the map is for the leftovers and for names you simply prefer differently.
The failure mode in the other direction is collapsing distinct merchants into one label. If “Amazon” absorbs the marketplace, the grocery delivery, and the subscription charge, you’ve traded unreadable rows for a category that hides three different spending habits. Split when the underlying behavior differs, not when the string differs.
Dashboards built on garbage labels produce confident nonsense. A pivot table that shows $412 in “Other” and $88 in TST* has told you nothing while looking authoritative.
Fix names first. Pretty charts later. The spreadsheet only works if you can read it without a decoder ring.