New buy to let mortgage rates from 3.55%
Property118

New buy to let mortgage rates from 3.55%
Landlords buying or refinancing now have new buy to let fixed-rate options, including products at 75% LTV from 3.55%.
Paragon Bank has refreshed its range for individual and limited company borrowers across England, Scotland and Wales.
Its green mortgage rates for single self-contained properties at 75% LTV start at 3.55% for two years and 4.95% for five years, provided the home has an EPC rating of A to C.
Equivalent products on properties below EPC C begin at 3.60% and 5.00%, while rates for HMOs and multi-unit blocks start at 3.70% for two years and 5.10% for five years.
James Harrison, Paragon’s product manager, said: “While swap rates remain volatile, we’ve created efficiencies within our pricing and proposition processes that allow us to respond quickly to market movements when they occur.”
Accord cuts rates
Accord Mortgages is reducing selected two- and five-year BTL remortgage rates at up to 75% LTV by as much as 0.18%, while also extending product end dates.
Its five-year fixed deal at 75% LTV has fallen from 5.09% to 4.91%, with a £995 fee, free standard valuation and remortgage legal work.
A two-year fixed product at the same LTV is now 4.85%, down from 4.98%, and carries the same fee and incentives.
At 60% LTV, Accord has cut its two-year fixed rate from 4.95% to 4.77%, again with a £995 fee, free standard valuation and legal work.
Specialist HMO finance
StrideUp has also reduced rates across its two- and five-year fixed HMO and multi-unit freehold block products.
Brokers submitting cases directly will receive a 0.75% procuration fee, rising to 0.80% for applications made through a network or club by 31 August 2026.
The enhanced payment is available to all FCA-registered broker partners, whether or not they hold home purchase plan permissions.
The Shariah-compliant home finance provider recently doubled its maximum HMO size to 12 bedrooms and its multi-unit freehold block limit to 10 units, with finance available at up to 75% FTV and £2.5 million per property.
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();
// ── Required-field validation (Next + Submit) ────────────────────────
// Validate from the form's field config (id + type), NOT the [required]
// HTML attribute: a checkbox group can't carry a meaningful `required`
// (native means "tick every box"), so attribute checks skip it — which is
// why empty checkbox questions slipped past Next straight to submit.
var crmRequired = [{"id":"11ce13e9-9d53-4c0c-a0a5-82c504570460","type":"name","label":"Name"},{"id":"8afe7e9b-f281-412b-a1a1-9ed1063bc5d6","type":"phone","label":"Phone"},{"id":"7d28ba91-d156-4c86-9f7e-5baadc39a8ac","type":"email","label":"Email"},{"id":"cf88bc81-e55b-4bfd-9686-5f14d963f685","type":"checkbox","label":"Privacy Policy"}];
function crmWrapper(id) {
var w = form.querySelector('[data-field-id="' + id + '"]');
if (!w) { var el = form.querySelector('[name="' + id + '"], [name="' + id + '[]"]'); if (el) w = el.closest('.crm-field, .crm-half'); }
return w;
}
function crmFilled(fld) {
var els = form.querySelectorAll('[name="' + fld.id + '"], [name="' + fld.id + '[]"]');
if (!els.length) return true;
if (['checkbox','radio','product','consent'].indexOf(fld.type) !== -1) { return Array.prototype.some.call(els, function(el){ return el.checked; }); }
return (els[0].value || '').trim() !== '';
}
function crmFirstInvalid(pageIdx) {
for (var i = 0; i < crmRequired.length; i++) {
var fld = crmRequired[i]; var w = crmWrapper(fld.id);
if (!w) continue;
if (w.style.display === 'none') continue;
if (pageIdx != null) { var pd = w.closest('[data-page]'); if (!pd || parseInt(pd.getAttribute('data-page')) !== pageIdx) continue; }
if (!crmFilled(fld)) return fld;
}
return null;
}
// Shows the error in a red box UNDER the field, matching the form's own
// .crm-message error styling, and scrolls to it.
function crmMarkError(w, text) {
if (!w) return;
var e = w.querySelector('.crm-inline-error');
if (!e) { e = document.createElement('div'); e.className = 'crm-inline-error'; w.appendChild(e); }
e.style.cssText = 'background:#fee2e2;color:#991b1b;padding:.55rem .75rem;border-radius:4px;margin-top:.4rem;font-size:.9rem';
e.textContent = text || 'Please answer this before continuing.';
}
function crmClearError(w) { if (!w) return; var e = w.querySelector('.crm-inline-error'); if (e) e.parentNode.removeChild(e); }
function crmReportInvalid(fld) {
var w = crmWrapper(fld.id);
var t = (['checkbox','product'].indexOf(fld.type) !== -1) ? 'Please select at least one option.' : (fld.type === 'radio' ? 'Please choose an option.' : 'Please fill this in.');
crmMarkError(w, t);
if (w && w.scrollIntoView) w.scrollIntoView({ behavior: 'smooth', block: 'center' });
}
form.addEventListener('change', function(e){ var w = e.target && e.target.closest ? e.target.closest('.crm-field, .crm-half, [data-field-id]') : null; if (w) crmClearError(w); });
form.addEventListener('input', function(e){ var w = e.target && e.target.closest ? e.target.closest('.crm-field, .crm-half, [data-field-id]') : null; if (w) crmClearError(w); });
// ── Multi-page navigation ────────────────────────────────────────────
// ── Submit ────────────────────────────────────────────────────────────
var submitBtn = form.querySelector('button[type=submit]');
var btnText = submitBtn ? submitBtn.textContent : 'Submit';
var crmApiUrl = "https://crm-api.property118.com";
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;
}
}
// Repeater fields: sub-inputs are named "[][]”.
// Group those flat keys into an array of row objects under the repeater
// id. Plain fields, checkbox “[]” arrays and single-bracket composites
// (name[first], address[city]) don’t match the double-bracket pattern, so
// ordinary submissions are unchanged.
var _repRe = /^(.+?)[(d+)][(.+)]$/;
var _repIds = {};
Object.keys( data ).forEach( function ( key ) {
var m = key.match( _repRe );
if ( ! m ) { return; }
var rid = m[1], row = parseInt( m[2], 10 ), sub = m[3];
_repIds[ rid ] = true;
if ( ! Array.isArray( data[ rid ] ) ) { data[ rid ] = []; }
if ( ! data[ rid ][ row ] || typeof data[ rid ][ row ] !== ‘object’ ) { data[ rid ][ row ] = {}; }
data[ rid ][ row ][ sub ] = data[ key ];
delete data[ key ];
} );
Object.keys( _repIds ).forEach( function ( rid ) {
if ( Array.isArray( data[ rid ] ) ) {
data[ rid ] = data[ rid ].filter( function ( r ) { return r && typeof r === ‘object'; } );
}
} );
// 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.';
// Carry the calculator’s own results across. A calculator form
// renders its figures into [data-iht-results] as the visitor
// types; hiding the form hid those too, so the completion
// screen went blank and the visitor lost what they had just
// worked out. Nothing happens on forms without that element.
var resultsEl = form.querySelector(‘[data-iht-results]’);
if (resultsEl && resultsEl.innerHTML.trim()) {
var carried = document.createElement(‘div’);
carried.className = ‘crm-message-results';
carried.innerHTML = resultsEl.innerHTML;
msg.appendChild(carried);
}
// Download link for a generated report, present only when the
// API filed the PDF before responding. Built through the DOM
// rather than concatenated into innerHTML so the URL cannot
// inject markup.
if (p.reportDownloadUrl) {
var dlWrap = document.createElement(‘p’);
dlWrap.className = ‘crm-report-download';
var dl = document.createElement(‘a’);
dl.className = ‘crm-report-button';
dl.href = p.reportDownloadUrl;
dl.target = ‘_blank';
dl.rel = ‘noopener noreferrer';
dl.textContent = ‘Download your report (PDF)';
dlWrap.appendChild(dl);
msg.appendChild(dlWrap);
}
msg.style.display = ‘block';
if (msg.scrollIntoView) {
msg.scrollIntoView({ behavior: ‘smooth’, block: ‘start’ });
}
}
} 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();
// Validate required fields before submitting. Next only guards the pages
// before it, so the final page (and single-page forms) are checked here;
// jump to the first page that has a problem.
var vbad0 = crmFirstInvalid(null);
if (vbad0) { crmReportInvalid(vbad0); return; }
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';
});
});
// ── Repeater fields (add / remove rows) ──────────────────────────
form.querySelectorAll( '.crm-repeater' ).forEach( function ( rep ) {
var rowsWrap = rep.querySelector( '.crm-repeater-rows' );
var tpl = rep.querySelector( '.crm-repeater-template' );
var addBtn = rep.querySelector( '.crm-repeater-add' );
if ( addBtn && tpl && rowsWrap ) {
addBtn.addEventListener( 'click', function () {
var idx = parseInt( rep.getAttribute( 'data-next-index' ) || '1', 10 );
var tmp = document.createElement( 'div' );
tmp.innerHTML = tpl.innerHTML.split( '__ROW__' ).join( idx );
var row = tmp.firstElementChild;
if ( ! row ) { return; }
row.setAttribute( 'data-row', idx );
rowsWrap.appendChild( row );
rep.setAttribute( 'data-next-index', idx + 1 );
rep.dispatchEvent( new CustomEvent( 'crm-repeater-change', { bubbles: true } ) );
} );
}
if ( rowsWrap ) {
rowsWrap.addEventListener( 'click', function ( e ) {
var btn = e.target.closest ? e.target.closest( '.crm-repeater-remove' ) : null;
if ( ! btn ) { return; }
if ( rowsWrap.querySelectorAll( '.crm-repeater-row' ).length <= 1 ) { return; }
var r = btn.closest( '.crm-repeater-row' );
if ( r ) { r.remove(); }
rep.dispatchEvent( new CustomEvent( 'crm-repeater-change', { bubbles: true } ) );
} );
}
} );
})();
The post New buy to let mortgage rates from 3.55% appeared first on Property118.
View Full Article: New buy to let mortgage rates from 3.55%
Post comment
Categories
- Landlords (19)
- Real Estate (9)
- Renewables & Green Issues (1)
- Rental Property Investment (1)
- Tenants (21)
- Uncategorized (12,940)
Archives
- September 2026 (23)
- August 2026 (61)
- July 2026 (63)
- June 2026 (70)
- May 2026 (70)
- April 2026 (78)
- March 2026 (72)
- February 2026 (55)
- January 2026 (52)
- December 2025 (62)
- August 2025 (51)
- July 2025 (51)
- June 2025 (49)
- May 2025 (50)
- April 2025 (48)
- March 2025 (54)
- February 2025 (51)
- January 2025 (52)
- December 2024 (55)
- November 2024 (64)
- October 2024 (82)
- September 2024 (69)
- August 2024 (55)
- July 2024 (64)
- June 2024 (54)
- May 2024 (73)
- April 2024 (59)
- March 2024 (49)
- February 2024 (57)
- January 2024 (58)
- December 2023 (56)
- November 2023 (59)
- October 2023 (67)
- September 2023 (136)
- August 2023 (131)
- July 2023 (129)
- June 2023 (128)
- May 2023 (140)
- April 2023 (121)
- March 2023 (168)
- February 2023 (155)
- January 2023 (152)
- December 2022 (136)
- November 2022 (158)
- October 2022 (146)
- September 2022 (148)
- August 2022 (169)
- July 2022 (124)
- June 2022 (124)
- May 2022 (130)
- April 2022 (116)
- March 2022 (155)
- February 2022 (124)
- January 2022 (120)
- December 2021 (117)
- November 2021 (139)
- October 2021 (130)
- September 2021 (138)
- August 2021 (110)
- July 2021 (110)
- June 2021 (60)
- May 2021 (127)
- April 2021 (122)
- March 2021 (156)
- February 2021 (154)
- January 2021 (133)
- December 2020 (126)
- November 2020 (159)
- October 2020 (169)
- September 2020 (181)
- August 2020 (147)
- July 2020 (172)
- June 2020 (158)
- May 2020 (177)
- April 2020 (188)
- March 2020 (234)
- February 2020 (212)
- January 2020 (164)
- December 2019 (107)
- November 2019 (131)
- October 2019 (145)
- September 2019 (123)
- August 2019 (112)
- July 2019 (93)
- June 2019 (82)
- May 2019 (94)
- April 2019 (88)
- March 2019 (78)
- February 2019 (77)
- January 2019 (71)
- December 2018 (37)
- November 2018 (85)
- October 2018 (108)
- September 2018 (110)
- August 2018 (135)
- July 2018 (140)
- June 2018 (118)
- May 2018 (113)
- April 2018 (64)
- March 2018 (96)
- February 2018 (82)
- January 2018 (92)
- December 2017 (62)
- November 2017 (100)
- October 2017 (105)
- September 2017 (97)
- August 2017 (101)
- July 2017 (104)
- June 2017 (155)
- May 2017 (135)
- April 2017 (113)
- March 2017 (138)
- February 2017 (150)
- January 2017 (127)
- December 2016 (90)
- November 2016 (135)
- October 2016 (149)
- September 2016 (135)
- August 2016 (48)
- July 2016 (52)
- June 2016 (54)
- May 2016 (52)
- April 2016 (24)
- October 2014 (8)
- April 2012 (2)
- December 2011 (2)
- November 2011 (10)
- October 2011 (9)
- September 2011 (9)
- August 2011 (3)
Calendar
Recent Posts
- Could a new LLP tax judgment help landlords caught in HMRC’s Spotlight 63?
- Why the nonsense £65 landlord database tax is just the start
- One million landlords set to use tenant deposit alternatives
- Why September could be the month to rethink your property portfolio
- Rents look set to rise as tenant demand grows – RICS

admin