The Real Estate Cash Buyers List Spreadsheet That Assigns Deals in Hours

Ask ten new wholesalers how they sell a contract and nine say the same thing: they "blast the deal to the buyers list." One email, four hundred names, send. Then they sit on their hands for two weeks while the inspection period bleeds out and wonder why nobody called. A real estate cash buyers list spreadsheet in Excel is not a contact dump you email in bulk. It is a matching engine. Tag every buyer with the box they actually buy, the price they pay, the areas they want, and the condition they tolerate, and the sheet hands you the two or three names who will close the specific deal in front of you. You call those three, not four hundred, and the contract assigns in hours.
The blast feels productive because it moves fast. It is also the most expensive habit in wholesaling. Every deal you send to buyers who never buy your kind of property teaches your entire list that your emails are noise. The one time you have a real gem, the buyer who wanted it scrolls past it with the junk. This article builds the sheet the other way. You get a filterable buyer database, a set of match formulas that read a deal against every buyer's buy box, and a fit score that ranks who to call first. All in plain Excel, no CRM subscription required.
The Blast List Is a Timer Running Against You
A wholesale contract is not patient. You have an inspection or due diligence window, usually 7 to 14 days, and earnest money sitting in escrow that you lose if you cannot assign and close before the seller's contract dates. Every day you spend waiting for the right buyer to surface out of a mass email is a day off that clock. The blast does not just fail to find the buyer faster. It actively burns the time you need.
Here is the same deal run two ways. You have a 3 bed, 2 bath house under contract at $185,000. ARV is around $265,000, it needs about $40,000 of work, and you have a 10 day inspection period with $5,000 of earnest money at risk.
| Step | Blast the Whole List | Match From the Sheet |
|---|---|---|
| Who you contact | 420 names, one bulk email | 3 buyers whose box fits this house |
| First real reply | Day 6, a tire-kicker | Day 1, both matched flippers |
| Serious offers | 1, arrives day 9 under pressure | 2, a small bidding spread by day 2 |
| Assignment fee | $4,000, take it or lose the deal | $12,000, buyers competing |
| Closed by | Barely, day 10 with no cushion | Day 5, room to spare |
| Fee per day of risk | $400 | $2,400 |
Same house, same buyers in your phone, an $8,000 swing in your fee and five days of breathing room. The blast did not find a worse buyer because your list was bad. It found a worse buyer because it could not tell the two people who wanted this exact house from the 418 who did not. The sheet can. That is the whole point of building it.
Build the List Around the Buy Box, Not the Business Card
A buyers list that stores name, phone, and email is a phone book. It cannot match anything because it does not know what anyone buys. The fields that matter are the ones that describe the buyer's box: the price band they pay, the areas they want, the asset type, the condition they tolerate, and how fast they close. Set up one sheet named Buyers with a header row and one row per buyer. These columns carry the weight.
| Col | Field | Why it matters for matching |
|---|---|---|
| A | Buyer ID | Stable key for lookups and sorting |
| B | Name | Who you actually call |
| C | Phone | Call, do not email, your matches |
| D | Asset Type | SFR, small multi, land. A flipper of houses will not touch your fourplex |
| E | Strategy | Flip, Rental, Turnkey. Decides how much rehab they accept |
| F | Min Price | Lowest all-in price they bother with |
| G | Max Price | Ceiling they pay for a deal like yours |
| H | Target Areas | ZIP codes they buy in, space separated |
| I | Max Rehab | Dollars of work they take on before they pass |
| J | POF on File | Y or N, proof of funds you have seen |
| K | Close Days | How fast they actually fund |
| L | Last Bought | Date of their last close with you |
| M | Deals | How many they have closed with you |
Filled in, the first few rows of your list look like this. Notice that no two buyers have the same box.
| ID | Name | Type | Strategy | Min | Max | Areas | Max Rehab | POF |
|---|---|---|---|---|---|---|---|---|
| B01 | Ramos | SFR | Flip | 120000 | 220000 | 44107 44111 44135 | 60000 | Y |
| B02 | Keller | SFR | Rental | 60000 | 140000 | 44105 44120 | 25000 | Y |
| B03 | Nwosu | Small multi | Rental | 150000 | 400000 | 44102 44109 | 50000 | N |
| B04 | Petrov | SFR | Flip | 150000 | 260000 | 44107 44144 | 45000 | Y |
| B05 | Dial | SFR | Turnkey | 90000 | 170000 | 44135 44111 | 8000 | Y |
Look at the $185,000 house in ZIP 44107 with $40,000 of rehab against this list. Ramos fits: price in band, area matches, takes up to $60,000 of work. Petrov fits: same read. Keller is out on price and rehab, a rental buyer at a lower band who wants light work. Nwosu buys multifamily, not your single. Dial is a turnkey buyer who will not touch a $40,000 rehab. Two matches out of five, and you found them by reading columns, not by sending an email and hoping. Now let the sheet read those columns for you across a list of two hundred.
The Match Formulas That Do the Sorting for You
Put the deal you are working at the top of a second sheet so you change five cells and the whole list re-sorts against them. Deal inputs live in B3 through B7:
| Cell | Deal Input | Example |
|---|---|---|
| B3 | Price to Buyer (contract plus your fee) | 197000 |
| B4 | Deal ZIP | 44107 |
| B5 | Asset Type | SFR |
| B6 | Rehab Estimate | 40000 |
| B7 | Strategy Fit | Flip |
The price you test is the price to the buyer, meaning your contract price plus the fee you want. That is the number the buyer actually pays, so that is the number their band has to cover. Add a Match column to the Buyers sheet, say column N, and drop this in row 2, then fill it down the list:
=IF(AND($B$3>=Buyers!F2,$B$3<=Buyers!G2,ISNUMBER(SEARCH($B$4,Buyers!H2)),$B$6<=Buyers!I2,$B$5=Buyers!D2),"MATCH","")
In plain terms, that formula flags a buyer only if all five conditions hold at once: your price to the buyer sits inside their min and max band, the deal ZIP appears anywhere in their target areas, the rehab is inside their tolerance, and the asset type matches. One failed test and the buyer is not a match, which is exactly the judgment you want the sheet making instead of a mass email. The SEARCH wrapped in ISNUMBER is the piece that lets one text cell hold many ZIP codes and still match on any of them.
If you run Excel 365 or 2021, skip the manual scan entirely and pull the matches into a clean list with one formula. On the deal sheet, put this below your inputs:
=FILTER(Buyers!A2:M200,($B$3>=Buyers!F2:F200)($B$3<=Buyers!G2:G200)(ISNUMBER(SEARCH($B$4,Buyers!H2:H200)))($B$6<=Buyers!I2:I200)($B$5=Buyers!D2:D200),"No buyer fits, widen the box or the fee")
The multiplication of the conditions is a logical AND: each test returns TRUE or FALSE, TRUE acts as 1, and any 0 in the chain zeroes the row out. What returns is only the buyers who fit, in a spill range you can call from the top down. The last argument catches the case that should stop you cold, zero matches, and tells you to loosen a constraint before you lock a deal you cannot move. Want to know how deep your bench is before you even sign? Count the pool:
=COUNTIF(Buyers!N2:N200,"MATCH")
If that returns 1, you have one buyer and no leverage on fee. If it returns 8, you have a bidding pool and you can push your number. That single count changes how you negotiate the seller, because it tells you how much room the deal has on the exit before you commit earnest money on the entry.
Score the Matches So You Know Who to Call First
A list of matches is progress, but three matches are not equal. One closed four deals with you and funds in seven days with proof of funds on file. Another you met at a meetup last month and have never seen close. You call the first one first. Encode that judgment in a Fit Score column, say column O, so the strongest buyer floats to the top on its own. Put this next to the Match flag:
=IF(N2<>"MATCH",0,IF(J2="Y",30,0)+IF(K2<=10,25,IF(K2<=21,15,5))+MIN(M25,25)+MAX(20-ABS($B$3-(F2+G2)/2)/((G2-F2)/2)20,0))
The score tops out at 100 and rewards the four things that actually decide whether a buyer closes:
- Proof of funds on file, 30 points. A verified cash buyer is worth far more than a maybe. No POF, no points, and a note to go get it.
- Close speed, up to 25 points. Ten days or less earns full marks, up to 21 days earns partial, slower barely registers, because on a tight assignment speed is the deal.
- Track record, up to 25 points. Five points per deal closed with you, capped, so a proven buyer outranks a stranger without letting one whale dominate forever.
- Price fit, up to 20 points. A deal priced in the dead center of a buyer's band scores full, a deal scraping their ceiling scores near zero, because a buyer paying the top of their range is the one who ghosts you at the closing table.
Now rank them so your call order is not a guess. Add a Rank column:
=IF(N2="MATCH",RANK(O2,$O$2:$O$200,0),"")
Rank 1 is your first call, rank 2 is your backup, rank 3 keeps the first two honest. You dial three people in the order the sheet gives you, and you have started a bidding process before the blast crowd has even opened their inbox.
Keep the List Alive or It Rots
A buyers list decays. Buyers change their box, run out of capital, or drop out of the market entirely, and a name that fit perfectly last spring is dead weight today. Two maintenance formulas keep the list honest without a monthly audit. First, temperature by recency, in a column next to Last Bought:
=IF(L2="","NEW",IF(TODAY()-L2>365,"COLD",IF(TODAY()-L2>180,"WARM","HOT")))
A buyer who has not closed with you in over a year is COLD and should not sit at the top of your call list no matter how good their old numbers looked. Second, a proof of funds nudge so you never pitch a deal to someone you cannot verify:
=IF(J2="Y","On file",IF(N2="MATCH","GET POF BEFORE CALL",""))
That flag only fires on buyers who match the live deal, so it tells you exactly whose funds to confirm before you spend a phone call, instead of nagging you about the whole list. Run this quick discipline on a schedule and the sheet stays sharp:
- Re-verify proof of funds every quarter for anyone marked WARM or HOT.
- Move COLD buyers who go 18 months without a close to an archive tab, do not delete them.
- Log every close the day it happens, updating Last Bought and Deals, so the score and temperature stay true.
- Add the buy box the moment a new buyer joins, price band and areas first, before name and phone. A contact with no box cannot be matched.
From Matched Buyer to a Deal You Can Actually Sign
Knowing which three buyers fit is half the job. The other half is knowing the highest price you can pay the seller and still leave your best buyer a deal they say yes to. The buyers list tells you a buyer's ceiling. It does not tell you the maximum you can offer on the buy side, the fee the spread can carry, or whether the buyer's own flip numbers hold up at your price. That is where the deal math lives.
Our Flip and BRRRR Calculator takes the buyer's ceiling your list surfaces and runs it backward to a defensible offer. It models the ARV, rehab, holding, and financing your cash buyer is underwriting, applies the 70 percent rule and their required profit, and hands you the maximum you can pay the seller plus the assignment fee the deal can actually hold. Match the buyer in your spreadsheet, price the deal in the calculator, and you walk into the seller negotiation knowing both the exit and the entry before you risk a dollar of earnest money. Build the buyers list so you know who buys, then run the numbers so you know what to pay. Stop blasting, start matching, and let the deal assign itself to the buyer who was always going to close it.
Related template
BRRRR Deal Calculator
Model the full Buy-Rehab-Rent-Refinance-Repeat cycle. See exactly how much capital comes back at refinance — before you commit a dollar.
Get the Template — $49