<!-- OneTrust Cookies Consent Notice start for lightyear.cloud --> <script src="https://cdn-ukwest.onetrust.com/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="0197a69a-8630-7f3b-bd4c-caeb8c6dff1c" ></script> <script type="text/javascript"> (function () { // --- Script version 2.0 (21/05/2026) --- var RULES = [ { test: /\/\/(?:www\.)?youtube(?:-nocookie)?\.com\//i, groups: ["C0003"] }, { test: /\/\/youtubei\.googleapis\.com\//i, groups: ["C0003"] }, { test: /\/\/[is]\.ytimg\.com\//i, groups: ["C0003"] }, { test: /\/\/yt3\.ggpht\.com\//i, groups: ["C0003"] }, { test: /\/\/(?:player\.)?vimeo\.com\//i, groups: ["C0003"] }, { test: /\/\/[fi]\.vimeocdn\.com\//i, groups: ["C0003"] }, { test: /\/\/munchkin\.marketo\.net\//i, groups: ["C0004"] }, { test: /\/\/(?:cdn\.)?biz(?:ible|ibly)\.com\//i, groups: ["C0004"] }, { test: /\/\/adobedc\.net\//i, groups: ["C0004"] }, // OptinMonster - a, api and cdn subdomains { test: /\/\/(?:a|api|cdn)\.omappapi\.com\//i, groups: ["C0004"] }, { test: /\/\/tracker\.gaconnector\.com\//i, groups: ["C0004"] }, { test: /\/\/static\.hotjar\.com\//i, groups: ["C0004"] }, { test: /\/\/js\.hs-scripts\.com\//i, groups: ["C0004"] }, { test: /\/scripts\/custom-gclid\.js\//i, groups: ["C0004"] }, { test: /\/\/js\.hub(?:spot|sforms\.net|scta\.net|sadspixel\.net|s-analytics\.net|s-banner\.com)/i, groups: ["C0004"] }, { test: /\/\/(?:bat\.|c\.)?bing\.com(?:\/api)?\//i, groups: ["C0004"] }, { test: /\/\/clarity\.ms\//i, groups: ["C0004"] }, { test: /\/\/(?:www\.)?msn\.com(?:\/api)?\//i, groups: ["C0004"] }, { test: /\/\/(?:snap\.|px\.ads\.|www\.)?linkedin\.com(?:\/px)?\//i, groups: ["C0005"] }, { test: /\/\/platform\.linkedin\.com\//i, groups: ["C0005"] }, ]; var IFRAME_RULES = [ { test: /youtube(?:-nocookie)?\.com|youtu\.be/i, groups: ["C0003"] }, { test: /(?:player\.)?vimeo\.com/i, groups: ["C0003"] }, ]; var VIDEO_RULES = [ { test: /youtube(?:-nocookie)?\.com|youtu\.be/i, groups: ["C0003"] }, { test: /vimeo(?:cdn)?\.com|player\.vimeo\.com/i, groups: ["C0003"] }, { test: /(?:fast\.)?wistia\.com/i, groups: ["C0003"] }, { test: /(?:players\.)?brightcove\.com/i, groups: ["C0003"] }, { test: /vidyard\.com/i, groups: ["C0003"] }, { test: /jwp(?:layer|cdn)\.com/i, groups: ["C0003"] }, { test: /cloudinary\.com/i, groups: ["C0003"] }, { test: /streamable\.com/i, groups: ["C0003"] }, ]; var cookiePatterns = { C0003: [ /^YSC|^VISITOR_(?:INFO|PRIVACY)|^PREF|^GPS|^CONSENT|_Secure-ROLLOUT|^LOGIN_INFO|^SIDCC|^[HS]SID|^[AS]?APISID|^DEVICE_INFO|^CONSISTENCY|^(?:use_hitbox|remote_sid)/, /^vuid|^player|^_(?:abexps|gcl|calendly)|^continuous_play|^has_logged_in/, /calendly/, ], C0004: [ /gaconnector|_biz|_BUID|^_biz_(?:uid|nA|pendingA|sid|flagsA)|^m(?:kto|kt)_|^_mkto_trk|^__hs[ctscr]?|hubspot|_uet|MUID|_cl[ck]k|MSN/, // OptinMonster cookies /^_omappv[ps]|^om-|^omSeen-|^omSuccess-|^omFolders(?:Optin|Closed)|^omLast(?:Seen)|^omVisits/, ], C0005: [ /^li_|^lidc|^b[sc]cookie|^lang|^(?:Analytics)?SyncHistory|^UserMatchHistory/, ], }; function matchRule(src, rules) { rules = rules || RULES; for (var i = 0; i < rules.length; i++) if (rules[i].test.test(src)) return rules[i]; return null; } function hasConsent(req) { var g = (window.OneTrustActiveGroups || window.OnetrustActiveGroups || "").split(","); return req.every(function (id) { return g.indexOf(id) !== -1; }); } function isMunchkinNode(node) { return /\/\/munchkin\.marketo\.net\//i.test(node.getAttribute("data-gated-src") || node.getAttribute("src") || ""); } // --- Restore a blocked script element --- function restoreScript(node) { var replayQ = null; if (isMunchkinNode(node) && window.Munchkin && window.Munchkin.__otStub) { replayQ = window.Munchkin.__q ? window.Munchkin.__q.slice() : null; try { delete window.Munchkin; } catch (e) { window.Munchkin = undefined; } } var s = document.createElement("script"); ["src","async","defer","noModule","crossorigin","referrerpolicy","integrity","nonce"].forEach(function (a) { var v = node.getAttribute(a); if (v !== null) s.setAttribute(a, v); }); var t = node.getAttribute("type"); s.type = t && t !== "text/plain" ? t : "text/javascript"; if (node.onload) s.onload = node.onload; if (node.onerror) s.onerror = node.onerror; if (node.onreadystatechange) s.onreadystatechange = node.onreadystatechange; if (node.text && !s.src) s.text = node.text; if (isMunchkinNode(node) && replayQ) { s.addEventListener("load", function () { if (window.Munchkin && typeof window.Munchkin.init === "function") { replayQ.forEach(function (item) { var m = item[0]; if (typeof window.Munchkin[m] === "function") window.Munchkin[m].apply(window.Munchkin, item[1] || []); }); } }); } node.replaceWith(s); } function restoreAllEligible() { document.querySelectorAll('script.optanon-blocked[type="text/plain"][data-gated-src]').forEach(function (n) { var src = n.getAttribute("data-gated-src") || ""; var rule = matchRule(src); if (rule && hasConsent(rule.groups)) restoreScript(n); }); } // --- Video placeholder --- var videoIdCounter = 0; function createPlaceholder(type, uniqueId) { var el = document.createElement("div"); el.className = "optanon-video-placeholder"; if (uniqueId) el.id = "optanon-placeholder-" + uniqueId; el.style.cssText = "position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;padding:20px;background:rgba(0,0,0,0.8);color:white;border-radius:5px;z-index:10;"; el.innerHTML = "<p>Video Consent Required</p><p>This " + type + " requires your consent to load content from third-party providers.</p>" + "<button onclick='window.OneTrust.ToggleInfoDisplay()' style='margin-top:15px;padding:12px 24px;background:#E4173F;color:white;border:none;border-radius:24px;cursor:pointer;font-size:16px;'>Manage Preferences</button>"; return el; } // --- Block / restore HTML5 video --- function blockVideo(video) { if (video.hasAttribute("data-blocked")) return; var src = video.getAttribute("src") || video.getAttribute("data-src") || ""; var sources = video.querySelectorAll("source"); var rule = matchRule(src, VIDEO_RULES); if (!rule) { for (var i = 0; i < sources.length && !rule; i++) rule = matchRule(sources[i].getAttribute("src") || "", VIDEO_RULES); } if (!rule && video.hasAttribute("data-require-consent")) rule = { groups: ["C0003"] }; if (!rule || hasConsent(rule.groups)) return; var uid = ++videoIdCounter; video.setAttribute("data-consent-required", rule.groups.join(",")); video.setAttribute("data-video-unique-id", uid); video.classList.add("optanon-blocked-video"); if (video.src) { video.setAttribute("data-blocked-src", video.src); video.removeAttribute("src"); } if (sources.length) { video.setAttribute("data-blocked-sources", JSON.stringify( Array.prototype.map.call(sources, function (s) { return { src: s.src, type: s.type, media: s.media }; }) )); while (video.firstChild) video.removeChild(video.firstChild); } Object.assign(video.style, { position: "relative", backgroundColor: "#f0f0f0", minHeight: video.style.height || "315px", minWidth: video.style.width || "560px" }); video.removeAttribute("autoplay"); video.removeAttribute("controls"); video.setAttribute("data-blocked", "true"); var ph = createPlaceholder("video", uid); if (video.parentElement) { if (!/(absolute|relative|fixed)/.test(video.parentElement.style.position)) video.parentElement.style.position = "relative"; video.parentElement.appendChild(ph); video.setAttribute("data-placeholder-id", ph.id); } } function restoreBlockedVideos() { document.querySelectorAll("video.optanon-blocked-video").forEach(function (video) { if (!hasConsent((video.getAttribute("data-consent-required") || "").split(","))) return; var phId = video.getAttribute("data-placeholder-id"); if (phId) { var ph = document.getElementById(phId); if (ph) ph.remove(); } video.parentElement && video.parentElement.querySelectorAll(".optanon-video-placeholder").forEach(function (p) { p.remove(); }); var bSrc = video.getAttribute("data-blocked-src"); if (bSrc) { video.src = bSrc; video.removeAttribute("data-blocked-src"); } var bSources = video.getAttribute("data-blocked-sources"); if (bSources) { try { JSON.parse(bSources).forEach(function (sd) { var s = document.createElement("source"); s.src = sd.src; if (sd.type) s.type = sd.type; if (sd.media) s.media = sd.media; video.appendChild(s); }); } catch (e) { console.error("Error parsing video sources:", e); } video.removeAttribute("data-blocked-sources"); } video.setAttribute("controls", "true"); ["data-blocked","data-consent-required","data-placeholder-id","data-video-unique-id"].forEach(function (a) { video.removeAttribute(a); }); video.classList.remove("optanon-blocked-video"); Object.assign(video.style, { backgroundColor: "", minHeight: "", minWidth: "", position: "" }); video.load(); }); document.querySelectorAll(".optanon-video-placeholder").forEach(function (ph) { var uid = ph.id.replace("optanon-placeholder-", ""); var vid = document.querySelector('[data-video-unique-id="' + uid + '"]'); if (!vid || !vid.hasAttribute("data-blocked")) ph.remove(); }); } // --- Block / restore iframes --- function blockIframe(iframe) { var src = iframe.getAttribute("src") || iframe.getAttribute("data-src") || ""; var rule = matchRule(src, IFRAME_RULES); if (!rule || hasConsent(rule.groups)) return; if (iframe.src) { iframe.setAttribute("data-blocked-src", iframe.src); iframe.removeAttribute("src"); } iframe.setAttribute("data-consent-required", rule.groups.join(",")); iframe.classList.add("optanon-blocked-iframe"); iframe.style.cssText += "background-color:#f0f0f0;min-height:" + (iframe.style.minHeight || "315px") + ";"; var ph = createPlaceholder("video"); if (iframe.parentElement) { if (!/(absolute|relative)/.test(iframe.parentElement.style.position)) iframe.parentElement.style.position = "relative"; iframe.parentElement.appendChild(ph); iframe.setAttribute("data-placeholder-id", ph.className); } } function restoreBlockedIframes() { document.querySelectorAll("iframe.optanon-blocked-iframe").forEach(function (iframe) { var bSrc = iframe.getAttribute("data-blocked-src"); if (!bSrc || !hasConsent((iframe.getAttribute("data-consent-required") || "").split(","))) return; var ph = iframe.parentElement && iframe.parentElement.querySelector(".optanon-video-placeholder"); if (ph) ph.remove(); iframe.src = bSrc; ["data-blocked-src","data-consent-required"].forEach(function (a) { iframe.removeAttribute(a); }); iframe.classList.remove("optanon-blocked-iframe"); iframe.style.backgroundColor = ""; iframe.style.minHeight = ""; }); } // --- Dynamic iframe src interception --- var _origCreateElement = document.createElement; document.createElement = function (tag) { var el = _origCreateElement.call(document, tag); if (tag.toLowerCase() === "iframe") { var desc = Object.getOwnPropertyDescriptor(el, "src") || Object.getOwnPropertyDescriptor(HTMLIFrameElement.prototype, "src"); Object.defineProperty(el, "src", { get: function () { return this.getAttribute("src"); }, set: function (v) { var rule = matchRule(v, IFRAME_RULES); if (rule && !hasConsent(rule.groups)) { this.setAttribute("data-blocked-src", v); this.classList.add("optanon-blocked-iframe"); this.setAttribute("data-consent-required", rule.groups.join(",")); } else { desc.set.call(this, v); } }, configurable: true, }); } return el; }; // --- DOM insertion hooks --- ["appendChild", "insertBefore", "replaceChild"].forEach(function (m) { var orig = Node.prototype[m]; Node.prototype[m] = function (child) { if (child) { if (child.tagName === "IFRAME") { try { blockIframe(child); } catch (e) {} } else if (child.tagName === "VIDEO") { try { blockVideo(child); } catch (e) {} } } var result = orig.apply(this, arguments); if (child) { if (child.tagName === "IFRAME") setTimeout(function () { blockIframe(child); }, 0); else if (child.tagName === "VIDEO") setTimeout(function () { blockVideo(child); }, 0); } return result; }; }); // MutationObserver for innerHTML insertions var mediaObserver = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { mutation.addedNodes.forEach(function (node) { if (node.tagName === "IFRAME") blockIframe(node); else if (node.tagName === "VIDEO") blockVideo(node); if (node.querySelectorAll) { node.querySelectorAll("iframe").forEach(blockIframe); node.querySelectorAll("video").forEach(blockVideo); } }); }); }); function startObserving() { mediaObserver.observe(document.body, { childList: true, subtree: true }); blockExistingMedia(); } function blockExistingMedia() { document.querySelectorAll("iframe").forEach(blockIframe); document.querySelectorAll("video").forEach(blockVideo); } document.body ? startObserving() : document.addEventListener("DOMContentLoaded", startObserving); // --- Tracking pixel blocking --- var PIXEL_DOMAINS = /bizible\.com|bizibly\.com|adobedc\.net/; function blockPixel(img) { var src = img.src || img.getAttribute("src") || ""; if (PIXEL_DOMAINS.test(src) && !hasConsent(["C0004"])) { img.setAttribute("data-blocked-src", src); img.removeAttribute("src"); img.style.display = "none"; } } var pixelObserver = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { mutation.addedNodes.forEach(function (node) { if (node.tagName === "IMG") blockPixel(node); }); }); }); if (document.body) { pixelObserver.observe(document.body, { childList: true, subtree: true }); document.querySelectorAll("img").forEach(blockPixel); } // --- Custom video click-to-load interception --- function interceptVideoButtons() { document.querySelectorAll(".js-video[data-video-url], .video[data-video-url]").forEach(function (container) { var videoUrl = container.getAttribute("data-video-url"); if (!videoUrl) return; var groups = /youtube\.com|youtu\.be/.test(videoUrl) ? ["C0003"] : /vimeo\.com/.test(videoUrl) ? ["C0003"] : null; if (!groups || hasConsent(groups)) return; var btn = container.querySelector('.js-videoPlay, button[type="button"]'); if (!btn || btn.getAttribute("data-consent-required")) return; var origOnclick = btn.onclick; btn.setAttribute("data-consent-required", groups.join(",")); btn.onclick = function (e) { e.preventDefault(); e.stopPropagation(); if (hasConsent(groups)) { if (origOnclick) origOnclick.call(this, e); } else showVideoConsentModal(container, groups); return false; }; var _origAEL = btn.addEventListener; btn.addEventListener = function (type, listener, opts) { _origAEL.call(this, type, type !== "click" ? listener : function (e) { if (!hasConsent(groups)) { e.preventDefault(); e.stopPropagation(); showVideoConsentModal(container, groups); return false; } return listener.call(this, e); }, opts); }; }); } function showVideoConsentModal(container, groups) { var existing = container.querySelector(".optanon-video-consent-modal"); if (existing) { existing.style.display = "block"; return; } var modal = document.createElement("div"); modal.className = "optanon-video-consent-modal"; modal.style.cssText = "position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);display:flex;align-items:center;justify-content:center;z-index:1000;"; modal.innerHTML = '<div style="background:white;padding:30px;border-radius:8px;text-align:center;max-width:400px;margin:10% auto;">' + '<h3 style="margin:0 0 15px 0;color:#111;">Video consent required</h3>' + '<p style="margin:0 0 20px 0;color:#111;">This video requires your consent to load content from third-party providers.</p>' + '<button onclick="window.OneTrust.ToggleInfoDisplay()" style="padding:12px 24px;background:#E4173F;color:white;border:none;border-radius:24px;cursor:pointer;font-size:16px;margin-right:10px;">Manage preferences</button>' + '<button onclick="this.closest(\'.optanon-video-consent-modal\').style.display=\'none\'" style="padding:12px 24px;background:#F7F7F7;color:#111;border:none;border-radius:24px;cursor:pointer;font-size:16px;">Cancel</button>' + '</div>'; container.style.position = "relative"; container.appendChild(modal); } function recheckVideoButtons() { document.querySelectorAll("[data-consent-required]").forEach(function (btn) { if (hasConsent((btn.getAttribute("data-consent-required") || "").split(","))) { var container = btn.closest(".js-video, .video"); if (container) { var m = container.querySelector(".optanon-video-consent-modal"); if (m) m.remove(); } } }); } document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", function () { setTimeout(interceptVideoButtons, 100); }) : setTimeout(interceptVideoButtons, 100); setInterval(interceptVideoButtons, 2000); // --- Script blocking via DOM insertion hooks --- function handleScript(node) { var src = node.getAttribute("src") || ""; var rule = matchRule(src); if (!rule || hasConsent(rule.groups)) return; node.setAttribute("data-gated-src", src); node.type = "text/plain"; node.classList.add("optanon-blocked"); } ["appendChild", "insertBefore"].forEach(function (m) { var orig = Node.prototype[m]; Node.prototype[m] = function (child) { if (child && child.tagName === "SCRIPT") { try { handleScript(child); } catch (e) {} } return orig.apply(this, arguments); }; }); // --- Patch document.write / writeln --- function gateHtml(html) { return String(html).replace( /<script\b([^>]*?)\bsrc\s*=\s*(['"])([^'"]+)\2([^>]*)>(?:<\/script>)?/gi, function (_m, pre, q, src, post) { var rule = matchRule(src || ""); if (!rule || hasConsent(rule.groups)) return _m; var attrs = ((pre || "") + " src=" + q + src + q + (post || "")).replace(/\btype\s*=\s*(['"])[^'"]*\1/gi, ""); attrs += ' type="text/plain" class="optanon-blocked" data-gated-src="' + src.replace(/"/g, "&quot;") + '"'; return "\<script " + attrs + "\>\<\/script\>"; } ); } ["write", "writeln"].forEach(function (m) { var orig = document[m]; document[m] = function () { return orig.call(document, gateHtml(Array.prototype.join.call(arguments, ""))); }; }); // --- Cookie blocking --- var _origCookie = Object.getOwnPropertyDescriptor(Document.prototype, "cookie"); var _origPostMessage = window.postMessage; window.postMessage = function (msg, origin) { if (origin && origin.includes("youtube.com") && !hasConsent(["C0003"])) return; return _origPostMessage.apply(this, arguments); }; Object.defineProperty(Document.prototype, "cookie", { get: function () { return _origCookie.get.call(this); }, set: function (value) { var name = value.split("=")[0].trim(); if (name.startsWith("OptAnon")) return _origCookie.set.call(this, value); if (name === "__cf_bm" || name === "_cf_bm") return _origCookie.set.call(this, value); // Allow VWO cookies — consent managed by VWO's built-in feature if (name.startsWith("_vis_opt") || name.startsWith("_vwo")) return _origCookie.set.call(this, value); for (var cat in cookiePatterns) { if (!hasConsent([cat])) { for (var i = 0; i < cookiePatterns[cat].length; i++) if (cookiePatterns[cat][i].test(name)) return; } } return _origCookie.set.call(this, value); }, configurable: true, }); // --- Storylane consent notify --- function notifyStorylaneConsent() { if (!hasConsent(["C0003"])) return; document.querySelectorAll("iframe[name='sl-embed']").forEach(function (sl) { try { sl.contentWindow && sl.contentWindow.postMessage({ message: "storylane-cookie-consent" }, "*"); } catch (e) {} }); } // --- Consent change handler --- window.addEventListener("OneTrustGroupsUpdated", function () { restoreAllEligible(); restoreBlockedIframes(); restoreBlockedVideos(); recheckVideoButtons(); notifyStorylaneConsent(); }); document.querySelectorAll("script[src]").forEach(function (n) { try { handleScript(n); } catch (e) {} }); restoreAllEligible(); notifyStorylaneConsent(); // --- Munchkin stub --- if (!window.Munchkin) { var MK = function () {}; MK.__otStub = true; MK.__q = []; MK.init = function () { MK.__q.push(["init", Array.prototype.slice.call(arguments)]); }; window.Munchkin = MK; } })(); function OptanonWrapper() { } </script> <!-- OneTrust Cookies Consent Notice end for lightyear.cloud --> Fuelsoft Integration with Lightyear
Free trial

Fuelsoft's Partnership with Lightyear

Leading software provider to the fuel industry

Fuelsoft are a proudly independent software vendor, established for over 30 years, specialising in scalable Microsoft technology based software applications for the fuel distribution and fuel card industries.

Why Choose Fuelsoft

Fuel Distribution

Fuelsoft forms the backbone of many industry leading operators such as Oilfast, Ford Fuels, Oil NRG, WP Group, Ribble Fuels, Tincknells Fuels and in Ireland, operators such as Carlisle Fuels and Donegal Fuels.

Fuel Card Management

Fuelsoft's Fuel Card Management software is used by some of the industry's pre-eminent suppliers of fuel cards, supplying hundreds of millions of litres per annum.

Fuelsoft CRM

The key differentiator between Fuelsoft and other software developers is that Fuelsoft is now fully integrated into Microsoft Dynamics Customer Relationship Management (CRM). 

Why Integrate Fuelsoft with Lightyear

Increase efficiency

Save your Accounts Payables teams up to 80% of their time with smart automation tools. Lightyear automates the data-entry from all your supplier bills, puts your bills into a digital approvals workflow and stores all your documents for 7 years. 

Real-time and accurate data

Get real-time accurate accounting data in Fuelsoft. Make better business decisions with data that is always accurate. 

Increase collaboration across your organisation

Collaborate with your internal team members, accountants, bookkeepers and suppliers with the digital approvals process in Lightyear. Add notes to bills.  Dispute the bills. Reject them.

What data does Lightyear send to Fuelsoft?

Import your purchase details including AP invoice, GL Codes, Stock reconciliation AP invoices and more.