Jun
24

Buy to let lenders widen landlord options

Author admin    Category Uncategorized     Tags

Property118

Buy to let lenders widen landlord options

Paragon Bank, ModaMortgages and Darlington Building Society have announced changes to their buy to let ranges, covering tracker mortgages, upfront fees and application requirements.

Paragon has expanded its Bank Base Rate (BBR) tracker range by introducing switch and further advance products for existing customers.

The switch range is available at up to 80% loan-to-value, while further advances are offered at up to 75% LTV.

Both options cover single self-contained properties, houses in multiple occupation and multi-unit blocks.

HMOs and multi-blocks

At 75% LTV, rates for single properties start at 5.10%, set at BBR plus 1.35%, with a 1.50% fee.

A lower 0.75% fee option is available from 5.47%, equivalent to BBR plus 1.72%.

For HMOs and multi-unit blocks, rates begin at 5.45%, or BBR plus 1.70%, with a 1.50% fee.

The 0.75% fee alternative starts at 5.82%, set at BBR plus 2.07%.

Paragon’s 12-month tracker

Paragon has also introduced a 12-month tracker at 80% LTV for switch applications, with no product fee.

The remaining products have two-year tracker terms and carry early repayment charges of 2% during the first year and 1% in the second.

The bank’s mortgages product manager, James Harrison, said: “Since launching our Bank Base Rate tracker range, we’ve seen strong engagement from brokers and their landlord clients.

“By introducing switch and further advance options, we’re enabling existing customers to access this tracker product when reviewing their borrowing or raising additional funds.”

Moda’s application fee dropped

Meanwhile, ModaMortgages has removed the application fee from its limited-edition two- and five-year fixed-rate buy to let products.

The change follows rate reductions across the lender’s range, with two-year fixes starting at 3.34% and five-year products from 4.94%.

Free valuations remain available across ModaMortgages’ full BTL range, including products for HMOs and multi-unit freehold blocks.

Mortgages are available to individual landlords and limited companies at up to 80% LTV.

Becki Fraser-Tucker, the head of sales at Chetwood Bank for ModaMortgages, said: “We’re always pushing to make our buy to let range work harder for brokers, and scrapping the application fee is a big move.

“We already knew the range stacked up, but this takes it to another level.”

Darlington removes income evidence need

Darlington Building Society has separately reduced the income evidence required for some buy to let applications following feedback from mortgage brokers.

Where an application meets the society’s required Interest Cover Ratio, applicants will no longer need to provide income evidence as standard.

The change applies across Darlington’s buy to let range, including expat cases involving self-employed applicants, where accounts previously had to be verified.

Underwriters may still ask for additional documentation where they consider it necessary, including applications involving top-slicing or more complex circumstances.

BTL rates lowered

Darlington has also reduced rates by 0.10 percentage points across its specialist residential Visa and Foreign National mortgage ranges.

Its two- and five-year fixed-rate Visa and Foreign National products at 90% LTV are now available at 5.89%, with a £999 fee that can be added to the mortgage.

The lender’s head of mortgage distribution, Chris Blewitt, said: “These changes are a direct result of conversations we’ve had with brokers who felt there was an opportunity to remove some unnecessary friction from the application process.

“For many buy to let cases, particularly where the rental income already supports the lending through our Interest Cover Ratio requirements, requesting additional income evidence was creating work without necessarily adding value to the assessment.”

For assistance with any type of buy to let (BTL), property or commercial finance please complete the contact form below:

How can I help you?

(function(){var el=document.getElementById(“ts-56e3e3c4-4400-4e49-8f5a-211f6f540e49″);if(!el)return;var b=document.body,h=document.documentElement;var dark=b.classList.contains(“dark-mode”)||b.classList.contains(“dark”)||b.classList.contains(“night-mode”)||h.classList.contains(“dark”);if(!dark){var bg=window.getComputedStyle(b).backgroundColor,m=bg.match(/d+/g);if(m)dark=(m[0]*0.299+m[1]*0.587+m[2]*0.114)<128;}el.setAttribute("data-theme",dark?"dark":"light");if(window.turnstile&&el.childElementCount===0){try{window.turnstile.render(el,{sitekey:el.getAttribute("data-sitekey"),theme:el.getAttribute("data-theme")});}catch(e){}}})();

(function(){
var uid = “crm-form-9314eca3″;
var form = document.getElementById(uid + ‘-form’);
var wrap = document.getElementById(uid);
var msg = wrap.querySelector(‘.crm-message’);
var totalPages = 1;
var curPage = 0;

// ── Conditional logic ────────────────────────────────────────────────
var condMap = {};

function getFieldValue(fieldId) {
var els = form.querySelectorAll(‘[name=”‘ + fieldId + ‘”], [name=”‘ + fieldId + ‘[]”]’);
if (!els.length) return ”;
var first = els[0];
if (first.type === ‘checkbox’ || first.type === ‘radio’) {
var checked = [];
els.forEach(function(el){ if (el.checked) checked.push(el.value); });
return checked.join(‘,’);
}
return first.value;
}

function evalRule(rule) {
var val = getFieldValue(rule.fieldId);
var cmp = rule.value;
switch (rule.operator) {
case ‘is': return val === cmp;
case ‘isnot': return val !== cmp;
case ‘greaterthan': return parseFloat(val) > parseFloat(cmp);
case ‘lessthan': return parseFloat(val) < parseFloat(cmp);
case 'contains': return val.indexOf(cmp) !== -1;
case 'startswith': return val.indexOf(cmp) === 0;
case 'endswith': return val.slice(-cmp.length) === cmp;
default: return false; // fail closed — mirror the CRM shared matcher
}
}

function applyConditionals() {
Object.keys(condMap).forEach(function(fieldId) {
var cond = condMap[fieldId];
var rules = cond.rules || [];
var match = cond.logicType === 'any'
? rules.some(evalRule)
: rules.every(evalRule);
var show = cond.actionType === 'show' ? match : !match;
var wrapper = form.querySelector('[data-field-id="' + fieldId + '"]');
if (!wrapper) {
var el = form.querySelector('[name="' + fieldId + '"], [name="' + fieldId + '[]"]');
if (el) wrapper = el.closest('.crm-field, .crm-half');
}
if (wrapper) wrapper.style.display = show ? '' : 'none';
});
}

form.addEventListener('change', applyConditionals);
form.addEventListener('input', applyConditionals);
applyConditionals();

// ── Multi-page navigation ────────────────────────────────────────────

// ── Submit ────────────────────────────────────────────────────────────
var submitBtn = form.querySelector('button[type=submit]');
var btnText = submitBtn ? submitBtn.textContent : 'Submit';

var crmApiUrl = "https://p118-crm-api.accent.sh";

function collectFormData() {
var data = {};
for (var j = 0; j < form.elements.length; j++) {
var el = form.elements[j];
if (!el.name) continue;
if (el.type === 'file') continue; // handled by uploadFiles()
if (el.type === 'radio' && !el.checked) continue;
if (el.type === 'checkbox') {
if (!el.checked) continue;
var k = el.name.replace('[]','');
data[k] = data[k] ? data[k].concat([el.value]) : [el.value];
} else {
data[el.name] = el.value;
}
}
// GF auto-substituted {user_agent} / {referer} on hidden fields
// at render time. We do the equivalent right before submit so
// fields whose default value carries these placeholders
// resolve to the browser's actual values rather than being
// stored as literal "{user_agent}" / "{referer}" strings.
// The last ARTICLE the visitor read (set client-side on post views by
// P118_Article_Views). Used to attribute the enquiry to the article
// even after navigating away or with a stripped/absent referer.
var lastPost = '';
try {
var lpm = document.cookie.match(/(?:^|;s*)p118_last_post=([^;]+)/);
if (lpm) lastPost = decodeURIComponent(lpm[1]);
} catch (e) {}
var subs = {
'{user_agent}': navigator.userAgent || '',
// Prefer the last article read; fall back to the (lossy) HTTP referer.
'{referer}': lastPost || document.referrer || '',
'{last_post}': lastPost || '',
'{embed_url}': window.location.href || '',
};
for (var name in data) {
if (!data.hasOwnProperty(name)) continue;
var v = data[name];
if (typeof v !== 'string') continue;
for (var tag in subs) {
if (v.indexOf(tag) !== -1) v = v.split(tag).join(subs[tag]);
}
data[name] = v;
}
// Agent/BDM attribution — read LIVE so it works even on a fully cached
// page (the browser always sees the real URL + cookie). URL ?ataid=/?cid=
// first, then the 30-day agent_id/cid cookies set by atat-tracking.php.
var _qp = new URLSearchParams(window.location.search);
var _ataid = _qp.get('ataid') || (document.cookie.match(/(?:^|;s*)agent_id=([^;]+)/) || [])[1] || '';
var _cid = _qp.get('cid') || (document.cookie.match(/(?:^|;s*)cid=([^;]+)/) || [])[1] || '';
if (_ataid) data.agent_id = decodeURIComponent(_ataid);
if (_cid) data.bdm_id = decodeURIComponent(_cid);
return data;
}

function uploadFiles(data) {
var fileInputs = form.querySelectorAll('input[type=file][data-crm-file-field]');
var uploads = [];
fileInputs.forEach(function(el) {
if (!el.files || !el.files[0]) return;
var fd = new FormData();
fd.append('file', el.files[0]);
var fieldName = el.name;
uploads.push(
fetch(crmApiUrl + '/public/forms/' + "b4348f3c-1c58-40d2-a4e1-f5ef3a585dcc" + '/upload', { method: 'POST', body: fd })
.then(function(r) {
if (!r.ok) throw new Error('File upload failed (' + r.status + ')');
return r.json();
})
.then(function(res) {
if (res.path) data[fieldName] = res.path;
else throw new Error(res.error || 'File upload failed');
})
);
});
return Promise.all(uploads).then(function() { return data; });
}

function submitFormData(data) {
var body = new FormData();
body.append('action', 'p118_crm_submit');
body.append('form_id', "b4348f3c-1c58-40d2-a4e1-f5ef3a585dcc");
body.append('data', JSON.stringify(data));
// Embed-page context for GF-style merge tags ({embed_url},
// {embed_post:post_title}, {embed_post:ID}). Captured PHP-side
// at render time, then echoed to JS so the submit fetch can
// forward to V2 as request headers.
body.append('embed_url', "");
body.append('embed_post_id', "0");
body.append('embed_post_title', "");

return fetch("https://www.property118.com/wp-admin/admin-ajax.php", { method: 'POST', body: body, credentials: 'same-origin' })
.then(function(r){ return r.json(); })
.then(function(res){
var p = res.data || res;
if (p && p.success) {
if (p.confirmationType === 'form' && p.nextFormId) {
return swapInNextForm(p.nextFormId, p.prefill || {});
}
if (p.confirmationType === 'redirect' && p.confirmationRedirectUrl) {
window.location.href = p.confirmationRedirectUrl;
} else {
form.style.display = 'none';
msg.className = 'crm-message success';
msg.innerHTML = p.confirmationMessage || 'Thank you for your submission.';
msg.style.display = 'block';
}
} else {
throw new Error((p && p.error) || 'Submission failed.');
}
});
}

// Replace this whole form widget with another form, rendered server-side
// with the carried-over values seeded in. Inline injected via
// innerHTML won’t run, so we re-create each script node to execute it
// (this is what wires up the new form’s submit / conditional logic).
function swapInNextForm(nextFormId, prefill) {
var rbody = new FormData();
rbody.append(‘action’, ‘p118_crm_render_form’);
rbody.append(‘form_id’, nextFormId);
rbody.append(‘prefill’, JSON.stringify(prefill || {}));
return fetch(“https://www.property118.com/wp-admin/admin-ajax.php”, { method: ‘POST’, body: rbody, credentials: ‘same-origin’ })
.then(function(r){ return r.json(); })
.then(function(res2){
var pd = res2.data || res2;
if (!pd || !pd.html) { throw new Error((pd && pd.error) || ‘Could not load the next form.’); }
var frag = document.createElement(‘div’);
frag.innerHTML = pd.html;
var parent = wrap.parentNode;
var nodes = [];
while (frag.firstChild) {
var node = frag.firstChild;
parent.insertBefore(node, wrap);
nodes.push(node);
}
parent.removeChild(wrap);
function reexec(old) {
var s = document.createElement(‘script’);
for (var a = 0; a < old.attributes.length; a++) {
s.setAttribute(old.attributes[a].name, old.attributes[a].value);
}
if (!old.src) { s.textContent = old.textContent; }
old.parentNode.replaceChild(s, old);
}
nodes.forEach(function(n){
if (n.tagName === 'SCRIPT') { reexec(n); }
else if (n.querySelectorAll) {
var scripts = n.querySelectorAll('script');
for (var k = 0; k < scripts.length; k++) { reexec(scripts[k]); }
}
});
var first = nodes[0];
try { if (first && first.scrollIntoView) first.scrollIntoView({ behavior: 'smooth', block: 'start' }); } catch (e) {}
});
}

form.addEventListener('submit', function(e){
e.preventDefault();
var data = collectFormData();
if (submitBtn) { submitBtn.disabled = true; submitBtn.textContent = 'Processing…'; }
msg.style.display = 'none';

// Standard form (no payment)
uploadFiles(data)
.then(function(d) { return submitFormData(d); })
.catch(function(err){
if (submitBtn) { submitBtn.disabled = false; submitBtn.textContent = btnText; }
msg.className = 'crm-message error';
msg.textContent = err.message;
msg.style.display = 'block';
});
});
})();

The post Buy to let lenders widen landlord options appeared first on Property118.

View Full Article: Buy to let lenders widen landlord options

Post comment

Categories

Archives

Calendar

June 2026
M T W T F S S
« May    
1234567
891011121314
15161718192021
22232425262728
2930  

Recent Posts

Quick Search

RSS More from Letting Links

Facebook Fan Page