Gravity Forms template

Refinance break-even calculator template

Months to recover closing costs from a lower payment, the monthly and net saving, both payments and both interest totals. Seven inputs, seven calculation fields.

Try the live Refinance break-even calculator first
Template $9
  • Import-ready Gravity Forms JSON
  • One-page install guide
  • The plugins it needs, with links
Buy the template

What you'll need

Check these before you buy so there are no surprises. Links may be affiliate links.

  • Required Gravity Forms (any license) Calculation fields are in core; the exponents, the ceil() and the if block need GP Advanced Calculations.
  • Required GP Advanced Calculations (Gravity Wiz) Exponents, functions and date math in calculation fields. The formulas in this template use its syntax. Part of Gravity Perks; needs the Spellbook plugin active as well.

Free build guide: Refinance break-even calculator for WordPress

This guide rebuilds the Refinance break-even calculator from this site in Gravity Forms: 8 inputs, 7 live results and no submit button. Expect about 48 minutes by hand. The template above is the same form as an import file, and the bundle adds a PDF version of this guide with a screenshot of every setting, plus the stylesheet.

You will end up with:

  • Months to break even
  • Monthly saving
  • Net saving over your stay
  • Current payment (P&I)
  • New payment (P&I)
  • Interest left on the current loan
  • Total interest on the new loan

What you need

  • Gravity Forms (any license) — Calculation fields are in core; the exponents, the ceil() and the if block need GP Advanced Calculations.
  • GP Advanced Calculations (Gravity Wiz) — Exponents, functions and date math in calculation fields. The formulas in this template use its syntax. Part of Gravity Perks; needs the Spellbook plugin active as well.

The formulas below use GP Advanced Calculations syntax: exponents, functions or date math that core calculation fields cannot do. Install and activate it, with its Spellbook parent plugin, before you start; without it every result shows 0.

1. Create the form

  1. Go to Forms → New Form and name it Refinance break-even.
  2. In Form Settings → Form Layout, set the CSS Class Name to fo-email-results, and the button text to Email me these results.
  3. Leave the form open in the editor; the fields come next.

2. Add the fields, in this order

Field IDs are assigned as you add fields. If yours come out differently, change the {Label:ID} references in the formulas to match your IDs. Settings not mentioned stay at their defaults.

1. Current balance · Number · ID 1
Number Format Currency; Default Value 300000; Description “What you owe now, from your statement.”.

2. Current rate (%) · Number · ID 2
Number Format 9,999.99; Default Value 7; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed).

3. Years left on the current loan · Number · ID 3
Number Format 9,999.99; Default Value 27; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed).

4. New rate (%) · Number · ID 4
Number Format 9,999.99; Default Value 6; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed).

5. New term (years) · Number · ID 5
Number Format 9,999.99; Default Value 30; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed).

6. Closing costs · Number · ID 6
Number Format Currency; Default Value 5000; Description “2–5% of the loan: appraisal, title, lender fees, points. Use the Loan Estimate figure.”; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed).

7. Months you plan to stay · Number · ID 7
Number Format 9,999.99; Default Value 60; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed).

8. Months to break even · Number · ID 8
Number Format 9,999.99; Description “Stay longer than this and the refinance pays for itself. 0 means the new payment is not lower.”; Custom CSS Class (Appearance tab) fo-result; tick Enable Calculation, Rounding 0.

if( ( ( {Balance:1} * ( {Current rate:2} / 1200 ) / ( 1 - ( 1 + ( {Current rate:2} / 1200 ) ) ^ ( 0 - ( {Years left:3} * 12 ) ) ) ) - ( {Balance:1} * ( {New rate:4} / 1200 ) / ( 1 - ( 1 + ( {New rate:4} / 1200 ) ) ^ ( 0 - ( {New term:5} * 12 ) ) ) ) ) <= 0 ):
0
else:
ceil( ( {Closing costs:6} / ( ( {Balance:1} * ( {Current rate:2} / 1200 ) / ( 1 - ( 1 + ( {Current rate:2} / 1200 ) ) ^ ( 0 - ( {Years left:3} * 12 ) ) ) ) - ( {Balance:1} * ( {New rate:4} / 1200 ) / ( 1 - ( 1 + ( {New rate:4} / 1200 ) ) ^ ( 0 - ( {New term:5} * 12 ) ) ) ) ) ) )
endif;

9. Monthly saving · Number · ID 9
Number Format Currency; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed); Custom CSS Class (Appearance tab) fo-result fo-result--sub; tick Enable Calculation, Rounding 2.

( ( {Balance:1} * ( {Current rate:2} / 1200 ) / ( 1 - ( 1 + ( {Current rate:2} / 1200 ) ) ^ ( 0 - ( {Years left:3} * 12 ) ) ) ) - ( {Balance:1} * ( {New rate:4} / 1200 ) / ( 1 - ( 1 + ( {New rate:4} / 1200 ) ) ^ ( 0 - ( {New term:5} * 12 ) ) ) ) )

10. Net saving over your stay · Number · ID 10
Number Format Currency; Description “Payment savings less closing costs. Ignores the extra years added to the loan.”; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed); Custom CSS Class (Appearance tab) fo-result fo-result--sub; tick Enable Calculation, Rounding 0.

( ( {Balance:1} * ( {Current rate:2} / 1200 ) / ( 1 - ( 1 + ( {Current rate:2} / 1200 ) ) ^ ( 0 - ( {Years left:3} * 12 ) ) ) ) - ( {Balance:1} * ( {New rate:4} / 1200 ) / ( 1 - ( 1 + ( {New rate:4} / 1200 ) ) ^ ( 0 - ( {New term:5} * 12 ) ) ) ) ) * {Stay:7} - {Closing costs:6}

11. Current payment (P&I) · Number · ID 11
Number Format Currency; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed); Custom CSS Class (Appearance tab) fo-result fo-result--sub; tick Enable Calculation, Rounding 2.

( {Balance:1} * ( {Current rate:2} / 1200 ) / ( 1 - ( 1 + ( {Current rate:2} / 1200 ) ) ^ ( 0 - ( {Years left:3} * 12 ) ) ) )

12. New payment (P&I) · Number · ID 12
Number Format Currency; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed); Custom CSS Class (Appearance tab) fo-result fo-result--sub; tick Enable Calculation, Rounding 2.

( {Balance:1} * ( {New rate:4} / 1200 ) / ( 1 - ( 1 + ( {New rate:4} / 1200 ) ) ^ ( 0 - ( {New term:5} * 12 ) ) ) )

13. Interest left on the current loan · Number · ID 13
Number Format Currency; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed); Custom CSS Class (Appearance tab) fo-result fo-result--sub; tick Enable Calculation, Rounding 0.

( {Balance:1} * ( {Current rate:2} / 1200 ) / ( 1 - ( 1 + ( {Current rate:2} / 1200 ) ) ^ ( 0 - ( {Years left:3} * 12 ) ) ) ) * ( {Years left:3} * 12 ) - {Balance:1}

14. Total interest on the new loan · Number · ID 14
Number Format Currency; Description “Over its full term. Compare with the interest left on the current loan.”; Layout: half width, on the same row as its neighbor (drag the field beside it in the editor; no CSS class needed); Custom CSS Class (Appearance tab) fo-result fo-result--sub; tick Enable Calculation, Rounding 0.

( {Balance:1} * ( {New rate:4} / 1200 ) / ( 1 - ( 1 + ( {New rate:4} / 1200 ) ) ^ ( 0 - ( {New term:5} * 12 ) ) ) ) * ( {New term:5} * 12 ) - {Balance:1}

15. Email me these results · Section · ID 90
Description “One email with the numbers above, plus a link that brings them back.”; Custom CSS Class (Appearance tab) fo-email-results__head.

16. Your email · Email · ID 91
Description “Sent once, to this address only. No list, no follow-up.”; Custom CSS Class (Appearance tab) fo-email-results.

3. Email the results

This form submits once, to email the visitor their numbers. Three settings make it work, and the imported form already has them:

  1. Notification (Form Settings → Notifications): “Results to the visitor”, sent to the Email field, with the inputs and results as merge tags such as {Home price:1} and a link back to the page.
  2. Confirmation (Form Settings → Confirmations): type Redirect, to the page the form is on, with a query string that carries every input (fo1={Home price:1}&fo2=…). Point it at your own page.
  3. Prepopulation: each input has “Allow field to be populated dynamically” on, with the parameter name fo plus its ID, so the redirect fills the form back in and the results reappear.

4. Put it on a page and make it look like this

Add the form to any page with the Gravity Forms block, or the shortcode [gravityform id="X" title="false" ajax="false"]. The form inherits your theme’s styles; the classes you set in step 2 are hooks for the look you see on this site:

  • fo-result on a calculation field makes it the big teal result panel.
  • fo-result fo-result--sub makes the smaller secondary figures.
  • fo-segmented on a radio field turns it into a segmented switch.
  • Two fields on one row is the editor’s own column layout: drag a field beside another and the row splits in half. No CSS class is needed, and the old gf_left_half Ready Classes are deprecated.

The bundle includes the two stylesheets that implement those classes, with notes on matching your brand colors. Without them the form still works; it just looks like your theme’s default Gravity Forms styling.

How the math works is explained under “How it’s calculated” on the live Refinance break-even calculator.