<!-- 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 AP Automation | Lightyear Integration
Free trial

Fuelsoft AP Automation Through Lightyear

Eliminate 90% of manual data entry with the Lightyear-Fuelsoft integration. Built to handle the invoice volume and complexity for the fuel industry, it exports clean and accurate AP data from Lightyear to Fuelsoft through a CSV export.

Why Lightyear for Fuelsoft Invoice Automation

  • Removes manual data entry across a high volume of supplier invoices
  • Lightyear extracts and codes data from supplier invoices, then pushes it to Fuelsoft as a CSV file
  • Faster, more accurate invoice processing with a 7-year document archive 
  • Get 80% time back, 2k+ savings every month with an audit trail for every invoice
  • For finance teams at fuel distribution and fuel card businesses managing invoices across multiple suppliers and sites

Benefits of the Lightyear-Fuelsoft Integration

How to Implement AP Automation for Fuelsoft

Connect to Fuelsoft

Start your Lightyear free trial, and our onboarding team will help you get set up and connect Lightyear with Fuelsoft.

Import your settings

Bulk upload your suppliers, nominal codes, tax rates, and departments or cost centres, so setup takes only a few minutes.

Process supplier invoices

Invoices are extracted, coded, and routed through approval in Lightyear before export.

Review and post in Fuelsoft

Once the invoice is approved, you can export the clean data to Fuelsoft via a CSV export.

Join the 9500+ businesses already using Lightyear

FAQs

How does Lightyear connect to Fuelsoft?

Lightyear exports invoices as a CSV file in a pre-set format designed for Fuelsoft. Fuelsoft is configured to automatically pull new files from a designated folder every 5 minutes, so no manual upload is needed once it's set up.

What do I need to set up before I can start exporting to Fuelsoft?

You'll need to import your suppliers, nominal codes, and tax rates into Lightyear, plus departments or cost centres, if you use them. All of this can be uploaded in bulk in one go, so setup takes just a few minutes.

How does Lightyear help me in fraud prevention?

Lightyear automatically checks the bank details on the invoice against your existing records. If there is a mismatch, the system flags it. 

Does Lightyear support departments or cost centres for Fuelsoft?

Yes. Departments and Cost Centres work the same way in Lightyear. You can apply either at the line-item level and set rules to have them assigned automatically.

Can I use more than one tax rate?

Yes, you can add as many tax rates as you need in Lightyear, though only one default taxed and one default tax-free rate can be set at a time.

What happens if there's an error in my export to Fuelsoft?

If an error occurs, such as a missing supplier, missing GL code, or duplicate invoice, you'll receive an email outlining the issue. You can correct the error in Lightyear and re-export.

See more Lightyear integrations