Offer Comparison Calculator

Got more than one offer? Put up to three side by side and see the seller’s estimated net for each, what each nets if the appraisal comes in low, and the terms that matter beyond the price.

Offer comparison calculator

Which offer nets the seller the most?

For listing agents: put up to three offers side by side and see the seller’s estimated net for each, plus what happens if the appraisal comes in low.

The seller’s costs (same for every offer)
As a share of the price
Title policy, closing fee, prorations, HOA transfer
Shows each financed offer at that value
Offer A
Cash the buyer will add if the appraisal is low
Offer B (optional)
Cash the buyer will add if the appraisal is low
Offer C (optional)
Cash the buyer will add if the appraisal is low

Net to seller is an estimate before property tax and HOA prorations. Sharing creates a link with the numbers you entered, so someone else can open the same results. Nothing you enter is saved on this site. These are estimates from the numbers you enter, not a loan offer or a rate quote. Your actual rate, payment and costs depend on your credit, the loan program and the property.

'; var w=null;try{w=window.open('','_blank');}catch(e){}if(!w)return false;w.document.open();w.document.write(html);w.document.close();return true;} /* ---------- Buyer cash to close ---------- */ function initCashClose(root){ var out=root.querySelector('.amm-result'); wire(root,'calc_cashclose',function(){ var price=val(root,'k_price'),down=val(root,'k_down'),prog=val(root,'k_prog')||1,appr=val(root,'k_val'),cc=val(root,'k_cc'),pre=val(root,'k_pre'),em=val(root,'k_em'),sell=val(root,'k_sell'),lend=val(root,'k_lend'),oth=val(root,'k_oth'),rate=val(root,'k_rate'),term=val(root,'k_term')||30,bd=val(root,'k_bd')||1,BDN={2:'2-1 temporary buydown',3:'1-0 temporary buydown',4:'Discount points (permanent buydown)'}; if(!price||!has(root,'k_down')||down>=price){out.innerHTML=NEED;return false;} var loan=price-down,hasR=has(root,'k_rate'),bdEst=function(t){if(!hasR)return 0;var P=pmt(loan,rate,term*12),s=0;if(t===2)s=12*(P-pmt(loan,Math.max(rate-2,0),term*12))+12*(P-pmt(loan,Math.max(rate-1,0),term*12));else if(t===3)s=12*(P-pmt(loan,Math.max(rate-1,0),term*12));return s;}; var bdC=bd>1?(has(root,'k_bdc')?val(root,'k_bdc'):bdEst(bd)):0,bdEstd=bd>1&&!has(root,'k_bdc')&&bdC>0; var costs=cc+pre+bdC,cap=concCap(prog,price,appr,loan),rule=cap.va?cc+(bd===4?bdC:0)+cap.max:cap.max,sellOk=Math.min(sell,rule),over=Math.max(sell-rule,0); var credTot=sellOk+lend+oth,credUse=Math.min(credTot,costs),unused=credTot-credUse,need=down+costs-credUse,atClose=need-em; var K='Your cash to close estimate',oc=Math.min(lend+oth,costs),sellUse=Math.max(0,Math.min(sellOk,costs-oc)),more=Math.max(Math.min(rule,costs-oc)-sell,0),lostS=Math.max(sell-sellUse,0); var h=K+'
Due at closing'+money(Math.max(atClose,0))+'after the earnest money already deposited
Total from the buyer'+money(need)+'earnest money plus cash at closing
'; var AL='',ALe=[];if(lostS>0.5){var X=lostS,np,nc;for(var it=0;it<8;it++){np=price-X;var ncap=concCap(prog,np,appr>0?Math.min(appr,np):0,Math.max(np-down,0)),nrule=ncap.va?cc+(bd===4?bdC:0)+ncap.max:ncap.max;X=Math.max(lostS,sell-Math.min(nrule,costs-oc));}X=Math.ceil(X);np=price-X;nc=sell-X;var e21=bdEst(2),e10=bdEst(3),opts=[],uS=Math.max(lostS-over,0),pn=PROGS[prog],ttl,why; if(over>0.5&&uS>0.5){ttl='Seller credit is '+money(over)+' over the limit, and another '+money(uS)+' is more than the buyer’s costs';why='The limit for '+pn+' is '+money(rule)+'. On top of that, credits can only pay real costs, not the down payment. In all, '+money(lostS)+' of the credit can’t be used.';} else if(over>0.5){ttl='Seller credit is '+money(over)+' over the '+pn+' limit';why='The most the seller can pay here is '+money(rule)+'. '+(prog<=2?'Fannie Mae treats anything over the limit as a price reduction, which changes the price used for the loan, so the contract usually has to be fixed before closing.':'The extra can’t be used, so the contract usually has to be fixed before closing.');} else{ttl=money(lostS)+' of the seller credit won’t be used';why='The credit is within the '+pn+' limit, but it’s more than the buyer’s costs. Credits can’t go toward the down payment or come back to the buyer as cash.';} if(over>0.5)opts.push('Lower the seller credit to '+money(Math.min(rule,costs-oc))+(costs-oc0.5)opts.push('Add a rate buydown with the '+money(uS)+' that’s under the limit but over the costs. '+(hasR?(bd>1?'There’s room for about '+money(uS)+' more in buydown costs.':'A 2-1 buydown would cost about '+money(e21)+(e21<=uS+0.5?' and fits.':', more than that. A 1-0 (about '+money(e10)+')'+(e10<=uS+0.5?' fits':' or some discount points could fit')+'.')):'Pick a buydown below and enter the rate to see what fits.')+' It lowers the buyer’s payment.'+(over>0.5?' A buydown can’t absorb the part over the limit; it counts toward the limit too.':'')); else if(over>0.5)opts.push('A rate buydown won’t help here. Seller-paid buydowns count toward the same limit.'); opts.push('Lower the price and the credit together by '+money(X)+': price '+money(np)+', seller credit '+money(nc)+'. The seller nets the same, the whole credit can be used, and the buyer’s loan drops by '+money(X)+'.'); if(uS>0.5)opts.push('Check the costs. If the Loan Estimate shows more closing costs or prepaids than entered here, more of the credit can be used.'); ALe=[[plain(ttl),'']].concat(opts.map(function(o){return ['',plain(o)];}));AL='
'+ttl+''+why+' Options:
    ';opts.forEach(function(o){AL+='
  • '+o+'
  • ';});AL+='
';} h+='
Most the seller can pay'+money(cap.max)+''+cap.pct+'% of the '+(prog===5?'price':(appr>0&&appr
Seller credit the buyer can use'+money(sellUse)+''+(lostS>0.5?(over>0.5?money(over)+' over the limit'+(lostS-over>0.5?', '+money(lostS-over)+' over the costs':''):money(lostS)+' more than the costs'):more>0.5?'room for '+money(more)+' more, at these costs':sell>0.5?'all of it':'no seller credit entered')+'
'+AL; var uses=[['Down payment',down,'#546e51'],['Closing costs',cc,'#8fae8b'],['Prepaids and escrow',pre,'#c9b27c'],['Rate buydown',bdC,'#7e9cb3']].filter(function(x){return x[1]>0.5;}),tot=down+costs; var src=[['Credits',credUse,'#7e9cb3'],['Earnest money',Math.min(em,need),'#b98f86'],['Cash at closing',Math.max(atClose,0),'#c9a27a']].filter(function(x){return x[1]>0.5;}); h+='
What it costs: '+money(tot)+'
'+segs(uses,tot)+'
';uses.forEach(function(x){h+=''+x[0]+': '+money(x[1])+'';});h+='
'; h+='
How it gets paid
'+segs(src,Math.max(tot,1))+'
';src.forEach(function(x){h+=''+x[0]+': '+money(x[1])+'';});h+='
'; var W=[['Purchase price',price,1],['Loan amount',loan,1],['Down payment',down],['Closing costs',cc],['Prepaids and escrow',pre]];if(bdC>0.5)W.push([BDN[bd]+(bdEstd?' (estimate)':''),bdC]);W.push(['Total needed',tot,2]); if(sellOk>0.5)W.push(['Seller credit'+(over>0.5?' (up to the program limit)':''),-sellOk]); if(lend>0.5)W.push(['Lender credit',-lend]);if(oth>0.5)W.push(['Other credits',-oth]); if(unused>0.5)W.push(['Credits that can’t be used (more than the costs)',unused]); if(em>0.5)W.push(['Earnest money already deposited',-Math.min(em,need)]); W.push(['Cash due at closing',Math.max(atClose,0),2]); var CT='';[1,2,3,4,5].forEach(function(p){var x=concCap(p,price,appr,loan);CT+='';});CT+='
Loan typeLimitMax credit
'+PROGS[p]+''+x.pct+'%'+(x.va?' + costs':'')+''+money(x.max)+'
'; h+='
Cash to close worksheet
'+wsTable(W)+'
'; h+='
Seller credit limit under each loan type
'+CT+'

Same price and down payment for every row. Conventional limits change with the down payment. VA also allows the buyer’s normal closing costs and points on top of the 4%.

'; var bl=[]; bl.push(['Seller credit limit',cap.va?'for a VA loan the seller can pay the buyer’s normal closing costs and discount points, plus up to 4% of the value ('+money(cap.max)+') in other concessions like prepaids.':'up to '+cap.pct+'% of the '+(prog===5?'price':(appr>0&&appr0.5)bl.push(['Over the limit','the seller credit is '+money(over)+' more than the program allows. That part can’t be used'+(prog<=2?'; Fannie Mae treats it as a price reduction, which can change the loan amount.':'. Lower the credit or lower the price instead.')]); if(unused>0.5)bl.push(['Credits more than the costs','credits can only pay closing costs, prepaids and a rate buydown, not the down payment, so '+money(unused)+' would go unused. See the options in the alert.']); if(bd>1&&bdC>0.5)bl.push(['Rate buydown',BDN[bd]+(bdEstd?', about '+money(bdC)+' (estimated from the '+rate+'% rate you entered: the payment difference for '+(bd===2?'the first 2 years':'the first year')+')':', '+money(bdC))+'. '+(bd===4?'It lowers the rate for the life of the loan.':'The payment steps up to the full rate after '+(bd===2?'2 years':'1 year')+'; most loans qualify the buyer at the full rate.')+' It counts toward the seller credit limit'+(cap.va&&bd===4?' only for VA temporary buydowns, not discount points':'')+'. Not every loan program allows every buydown type.']); if(bd>1&&!bdC)bl.push(['Rate buydown',bd===4?'enter the cost of the points (each point usually costs 1% of the loan amount).':'enter the rate to estimate the buydown cost, or type the cost from your Loan Estimate.']); if(atClose<-0.5)bl.push(['Earnest money','the earnest money is more than what’s needed, so about '+money(-atClose)+' would come back to the buyer at closing.']); if(!cc&&!pre)bl.push(['Not counted yet','closing costs and prepaids. Ask me for a Loan Estimate-style number for this price and loan type.']); bl.push(['What the seller credit can pay for','closing costs, prepaid taxes and insurance, and a rate buydown. Not the down payment or the savings a buyer needs left after closing.']); if(prog<=2)bl.push(['Conventional limits','3% when the loan is over 90% of the value, 6% from over 75% to 90%, 9% at 75% or less, and 2% for investment properties, based on the lower of the price or appraised value.']); bl.push(['Savings left after closing','some loans need money left in the bank after closing (reserves). Don’t spend it all on the down payment.']); bl.push(['Wiring the money','call the title company at a number you already know to confirm wire instructions. Wire fraud targets home buyers.']); h+=blist(bl)+'

Upfront mortgage insurance or funding fees that are added to the loan aren’t counted here. A Loan Estimate gives the exact figures.

'; var e=[['Cash due at closing',money(Math.max(atClose,0))],['Total from the buyer (earnest money plus cash at closing)',money(need)],['Most the seller can pay ('+cap.pct+'%'+(cap.va?' plus normal closing costs and points':'')+')',money(cap.max)],['Seller credit the buyer can use'+(lostS>0.5?' ('+money(lostS)+' can’t be used)':more>0.5?' (room for '+money(more)+' more)':''),money(sellUse)],['Loan type',PROGS[prog]]];if(bd>1&&bdC>0.5)e.push(['Rate buydown',BDN[bd]+': '+money(bdC)]);e=e.concat(ALe);e.push(['The bottom line','']);bl.forEach(function(b){if(/^(Conventional limits|Savings left|Wiring|What the seller credit)/.test(b[0])||(ALe.length&&/^(Over the limit|Credits more than the costs)/.test(b[0])))return;e.push(['',plain(b[0]+': '+b[1])]);}); out.innerHTML=h+emDiv(e);return true; }); } /* ---------- Offer comparison (listing side) ---------- */ function initOffers(root){ var out=root.querySelector('.amm-result'),L=['a','b','c'],TYPES={1:'Cash',2:'Conventional',3:'FHA',4:'VA',5:'USDA',6:'Jumbo or other'}; wire(root,'calc_offers',function(){ var fee=val(root,'o_fee'),oc=val(root,'o_costs'),pay=val(root,'o_pay'),appr=val(root,'o_appr'); var offs=L.map(function(k,i){var p=val(root,'o_p'+k);if(!p)return null;var t=val(root,'o_t'+k)||0,cr=val(root,'o_c'+k),bf=val(root,'o_b'+k),g=val(root,'o_g'+k),d=val(root,'o_d'+k),em=val(root,'o_e'+k),hs=val(root,'o_h'+k)===2; var net=function(pr){return pr-cr-bf-pr*fee/100-oc-pay;};var fin=t!==1,low=appr>0&&fin&&appra.net?b:a;}),useLow=offs.some(function(o){return o.low;}),bestL=offs.reduce(function(a,b){return b.lnet>a.lnet?b:a;}); var h='Estimated net to the seller
'; offs.forEach(function(o){h+='
Offer '+o.k+''+(offs.length>1&&o===best?' Highest net':'')+'Net to seller'+money(o.net)+'

'+money(o.p)+' price'+(o.cr>0.5?', '+money(o.cr)+' credit':'')+'

'+(o.t?TYPES[o.t]:'Financing not entered')+(o.d?', '+o.d+' days to close':'')+'

'+(o.low?'

If the appraisal is '+money(appr)+': '+money(o.lnet)+'

':'')+'
';}); h+='
'; var bars=offs.map(function(o){return ['Offer '+o.k,Math.max(o.net,0),o.i===1?'#c9a27a':o.i===2?'#7e9cb3':'#546e51'];}),mx=Math.max.apply(null,bars.map(function(b){return b[1];}).concat([1])); if(offs.length>1){h+='
Net to seller side by side
';bars.forEach(function(b){h+=hbar(b[0],b[1],mx,b[2]);});} var R=[['Price',function(o){return money(o.p);}],['Seller credit to buyer',function(o){return o.cr>0.5?'−'+money(o.cr):'$0';}],['Buyer’s agent fee paid by seller',function(o){return o.bf>0.5?'−'+money(o.bf):'$0';}],['Listing fee ('+pct1(fee)+')',function(o){return '−'+money(o.p*fee/100);}],['Other selling costs',function(){return '−'+money(oc);}],['Mortgage payoff',function(){return '−'+money(pay);}],['Net to seller',function(o){return money(o.net);},1]]; if(useLow){R.push(['If the appraisal is '+money(appr)+': likely price',function(o){return o.fin?(o.low?money(o.lp):money(o.p)):money(o.p)+' (no appraisal)';}],['Net at that price',function(o){return money(o.lnet);},1]);} R.push(['Financing',function(o){return o.t?TYPES[o.t]:'—';}],['Appraisal gap coverage',function(o){return o.fin?(o.g>0.5?money(o.g):'None'):'Not needed';}],['Earnest money',function(o){return o.em>0.5?money(o.em):'—';}],['Days to close',function(o){return o.d?String(o.d):'—';}],['Must sell a home first',function(o){return o.hs?'Yes':'No';}]); var t='';offs.forEach(function(o){t+='';});t+='';R.forEach(function(r){t+='';offs.forEach(function(o){t+='';});t+='';});t+='
Offer '+o.k+'
'+r[0]+''+r[1](o)+'
'; h+='
Offers side by side
'+t+'
'; var bl=[]; if(offs.length>1)bl.push(['Highest net',useLow&&bestL!==best?'Offer '+best.k+' at the contract prices, but Offer '+bestL.k+' if the appraisal comes in at '+money(appr)+'.':'Offer '+best.k+', '+money(best.net-offs.filter(function(o){return o!==best;}).reduce(function(a,b){return b.net>a.net?b:a;}).net)+' more than the next offer.']); if(useLow)bl.push(['Low appraisal','a buyer with a loan has to cover any gap between the price and the appraisal in cash, up to the coverage in the offer. Past that, the price usually gets renegotiated. This assumes the seller accepts the lower price.']); bl.push(['Check the approval','ask each buyer’s lender what has been reviewed so far: credit, income and assets, or a full underwriting approval. That says more about closing on time than the loan type does.']); if(offs.some(function(o){return o.hs;}))bl.push(['Home sale contingency','an offer that depends on the buyer selling a home has one more step that has to happen first. Ask where that sale stands.']); bl.push(['Not counted','repair requests after the inspection, a rent-back, and the property taxes and HOA dues prorated at closing.']); h+=blist(bl); var e=[['Listing fee',pct1(fee)],['Other selling costs',money(oc)],['Mortgage payoff',money(pay)]];if(appr>0)e.push(['Appraisal scenario',money(appr)]);offs.forEach(function(o){e.push(['Offer '+o.k+' price',money(o.p)+(o.cr>0.5?', '+money(o.cr)+' seller credit':'')+(o.bf>0.5?', '+money(o.bf)+' buyer agent fee':'')]);e.push(['Offer '+o.k+' net to seller',money(o.net)+(o.low?' ('+money(o.lnet)+' if the appraisal is '+money(appr)+')':'')]);e.push(['Offer '+o.k+' terms',(o.t?TYPES[o.t]:'Financing not entered')+(o.d?', '+o.d+' days':'')+(o.hs?', must sell a home first':'')]);});e.push(['The bottom line','']);bl.forEach(function(b){e.push(['',plain(b[0]+': '+b[1])]);}); out.innerHTML=h+emDiv(e.slice(0,30));return true; }); } function boot(){document.querySelectorAll('[data-amm-calc]').forEach(function(el){if(el.__ammc)return;el.__ammc=1;var t=el.getAttribute('data-amm-calc');({payment:initPayment,biweekly:initBiweekly,afford:initAfford,amort:initAmort,refi:initRefi,compare:initCompare,dti:initDti,rentbuy:initRentBuy,points:initPoints,buydown:initBuydown,rental:initRental,refiready:initRefiReady,reno:initReno,cashclose:initCashClose,offers:initOffers})[t](el);});} if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',boot);else boot(); })();

How the net to the seller is figured

For each offer, the calculator starts with the offer price and subtracts:

  • any seller credit to the buyer
  • the buyer’s agent fee, if the buyer asks the seller to pay it
  • the listing fee
  • other selling costs, like the title policy, closing fee and HOA transfer
  • the mortgage payoff

The seller’s costs you enter once apply to every offer, so the comparison is apples to apples. Property tax and HOA prorations aren’t counted, since they’re about the same whichever offer the seller takes.

What if the appraisal comes in low?

Enter a possible appraised value to see each financed offer at that number. A buyer with a loan has to cover any gap between the price and the appraisal in cash, up to the appraisal gap coverage written into the offer. Past that, the price usually gets renegotiated. A cash offer doesn’t need an appraisal, so its price stays the same.

Look past the highest number

The biggest net isn’t always the strongest offer. The calculator lines up the terms next to the numbers:

  • Earnest money: how much the buyer has at stake.
  • Days to close: when the seller gets paid.
  • Appraisal gap coverage: how much a low appraisal would cost the seller.
  • Home sale contingency: whether the buyer has to sell a home first.

Ask each buyer’s lender what has been reviewed so far: credit, income and assets, or a full underwriting approval. That says more about closing on time than the loan type does.

For listing agents

Run the offers before you sit down with your seller. Then click Print for a clean summary, or Email these results to send it to the seller. Add your own email address and replies come to you.

Negotiating a seller credit? The cash to close and seller credit calculator shows the most a seller can pay for each loan type. More tools are on the For Agents page and the calculators page. Questions about the financing in an offer? Call or text me at 970-828-1610.

Questions about comparing offers

How is net to seller calculated?

Offer price minus the seller credit, any buyer’s agent fee the seller pays, the listing fee, other selling costs and the mortgage payoff. It’s an estimate before property tax and HOA prorations.

What is appraisal gap coverage?

It’s a promise in the offer that the buyer will bring extra cash if the home appraises for less than the price, up to a set amount. It protects the seller’s price if the appraisal comes in low.

Is a cash offer always better?

Not always. A cash offer skips the appraisal and often closes faster, but a financed offer at a higher price can still net the seller more. Compare the net and the terms side by side.

Does the loan type matter?

Less than how far along the buyer’s approval is. A buyer whose credit, income and assets have already been reviewed by the lender is in a stronger position than one with only a quick pre-qualification, whatever the loan type.