Lead #1672
Best Contact
—
Email
()
Override
Captured Pages
https://faradaykeynes.co.uk/staff
Status: 404
Emails:
View text
https://faradaykeynes.co.uk/our-team
Status: 404
Emails:
View text
https://faradaykeynes.co.uk/meet-the-team
Status: 404
Emails:
View text
https://faradaykeynes.co.uk/team
Status: 404
Emails:
View text
https://faradaykeynes.co.uk/about
Status: 404
Emails:
View text
https://faradaykeynes.co.uk/contact
Status: 404
Emails:
View text
https://faradaykeynes.co.uk/
Status: 200
Emails:
View text
Home Services AccountsBookkeepingCorporation TaxPayrollPersonal TaxVAT Reviews AI Automation Software About Us Prices Contact Blog Advisory vs Non‑AdvisoryDirectors’ ResponsibilitiesGDPRNews FeedSwitching Accounting SoftwareWhat is IR35? VAT - Articles ⮯VAT RegistrationVat RatesGeneral Rule for VATVAT DisaggregationCIS & Domestic Reverse Charge (DRC) Tax - Articles ⮯Business Expenses for TaxMTDP11DTax-Free trivial benefitsTax Calculators Advisory vs Non‑Advisory Directors' Responsibilities Expenses for Tax GDPR Making Tax Digital (MTD) News Feed P11D Switching Accounting System Tax Calculators Trivial Benefits VAT Rates VAT Registration VAT Rules on Goods & Services What is IR35?Vat Disaggregation Trusted, Fixed Fee Ltd Company Accountant for SME Tax, Payroll & VAT Faraday Keynes is your cost-effective partner for limited companies, start-ups and SMEs across the UK—specialising in payroll, VAT, corporation tax and bookkeeping. Transparent fixed pricing Qualified, experienced accountants Cloud experts: Xero, QuickBooks, Sage, FreeAgent Nationwide and local support SME focusedBuilt for small businesses Fixed feesNo hidden costs Cloud firstXero • QBO • Sage UK-wideOnline + local Why Choose Us? Fixed fees Know your costs upfront. Qualified specialists Ltd accounts, payroll, VAT, tax. Online & paperless Secure, cloud-based workflow. Nationwide & local Work with us anywhere in the UK. Our core services Ltd Company Accounting & Tax Statutory accounts (Companies House & HMRC) Corporation tax returns – calculate, prepare, file Management accounts – monthly/quarterly insights Personal Tax & Self-Assessment Tax returns for directors & individuals Self-assessment planning & compliance IR35 advice for contractors & consultants Bookkeeping & Payroll SME bookkeeping for limited companies Accurate, timely & compliant payroll Outsourced payroll across the UK VAT Consultancy VAT registration, compliance & advice VAT return preparation for small businesses Additional services Company formation & annual returns (Companies House) Business start-up advice & consultancy Cashflow & profit forecasting Business data analysis for SMEs Guide: Business expenses for tax Common deductible costs explained: entertainment, clothing, training, donations, travel & subsistence, use of home, equipment & devices, pensions, repairs, shed office, trivial benefits, and more.Open the guide Your Local & Online Accounting Partner Serving clients across the UK with a special focus on the North East region North East Coverage Durham Northumberland Tyne & Wear North Yorkshire Newcastle Sunderland Middlesbrough Darlington Gateshead Hartlepool Peterlee Wheatley Hill Switching to Us is Easy 1. Tell us about your business A short call or form to understand your needs and current accounting setup. 2. We handle the handover We contact your current accountant and request all necessary records with your authorization. 3. Smooth onboarding We set up payroll, VAT and bookkeeping with minimal disruption to your business operations. Start the switch today What Our Clients Say Sarah JohnsonDirector, Tech Solutions "Faraday Keynes made our VAT and payroll effortless. Their fixed fee structure means we never have surprise bills, and their support is always fast and friendly." Michael ThompsonOwner, Thompson Consulting "Switching to Faraday Keynes was seamless. They handled the entire handover process with our previous accountant with no downtime or disruption to our business." Emma WilsonFounder, Wilson Design Studio "As a small business owner, having fixed fee accounting services has been a game-changer. I can budget accurately and focus on growing my business." James AndersonFreelance Consultant "The IR35 advice I received was invaluable. Faraday Keynes helped me navigate the complexities and ensure I was compliant while maximizing my take-home pay." Read more success stories Latest from HMRC: For the 2024/25 tax year, file by 31 Oct 2025 (paper) or 31 Jan 2026 (online). Regulatory information Faraday Keynes Ltd is authorised and regulated by the Institute of Financial Accountants (IFA). The IFA, established in 1916, is part of the Institute of Public Accountants (IPA) of Australia Group, the world's largest SME-focused accountancy group with 35,000 members and students in 80 countries. The IFA is a full member of IFAC, recognised by Ofqual, and by HM Treasury to regulate its members for the purposes of the Money Laundering Regulations. Faraday Keynes Ltd 7 Rock Farm MewsFront Street, Wheatley HillDurham, DH6 3NG Company No. 07914968 Stay in the loop Monthly tips on VAT, payroll and tax deadlines. Subscribe to Newsletter Quick links Cookie preferences Expenses Guide Contacts Call us Now for free initial30 mins meeting 01908 410 845 Click to Reveal Email Copyright © 2012- document.getElementById('current-year').textContent = new Date().getFullYear(); *Faraday Keynes Ltd* Webmaster - Omer /* Ensure the widget is fixed and layers above other content */ #chatToggle, #chatWidget { position: fixed; right: 20px; bottom: 20px; z-index: 1050; /* Above Bootstrap Modals (1040) */ font-family: 'Inter', sans-serif; } /* Styling for the main chat window container */ #chatContainer { width: 350px; height: 500px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25); border-radius: 12px; overflow: hidden; display: flex; flex-direction: column; } /* Styling for the chat messages area */ #chatBody { flex-grow: 1; overflow-y: auto; padding: 15px; background-color: #f7f9fc; display: flex; flex-direction: column; } /* FIX: Style for the close button icon (btn-close) */ /* When inside the light header, we force the icon color to be dark grey for visibility. */ #chatContainer .btn-close { filter: invert(0.5) sepia(0.5) saturate(1) hue-rotate(180deg); /* Makes the white icon dark grey */ opacity: 0.8; /* Keeps it slightly subdued */ } #chatContainer .btn-close:hover { opacity: 1; } /* End Fix for Close Button */ /* Bot Message Bubble (Left/Received) */ .bot-message { background-color: #e9eef6; color: #333; align-self: flex-start; border-radius: 15px 15px 15px 5px; max-width: 85%; margin-bottom: 10px; padding: 10px 15px; font-size: 0.95rem; line-height: 1.4; white-space: pre-wrap; /* Allows PHP's \n to render newlines */ } /* User Message Bubble (Right/Sent) */ .user-message { background-color: #007bff; /* Bootstrap primary color */ color: #fff; align-self: flex-end; border-radius: 15px 15px 5px 15px; max-width: 85%; margin-bottom: 10px; padding: 10px 15px; font-size: 0.95rem; } /* Styling for the Read More Link */ .bot-link-container { align-self: flex-start; margin-top: 5px; margin-bottom: 15px; } .bot-link { font-weight: 600; color: #007bff; text-decoration: underline; display: block; } /* Input Form and Send Button */ #chatForm { padding: 10px; /* Ensure the form background is explicitly white to prevent any black leakage */ background-color: #fff !important; border-top: 1px solid #dee2e6; display: flex; align-items: center; } /* Input field background, text color, and border to look like a standard light input */ #userInput { border-radius: 50px; padding: 10px 15px; flex-grow: 1; border: 1px solid #ced4da; background-color: #f8f9fa; /* Light gray input background */ color: #212529; /* Dark text color */ } /* Style for the floating toggle button */ #chatToggle { width: 60px; height: 60px; border-radius: 50%; background-color: #007bff; color: #fff; border: none; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); cursor: pointer; display: flex; justify-content: center; align-items: center; transition: transform 0.2s; } #chatToggle:hover { transform: scale(1.05); } Faraday Keynes AI Assistant Hello! I'm the Faraday Keynes AI Assistant. How can I help you with your accounting or tax query today? document.addEventListener('DOMContentLoaded', () => { const chatContainer = document.getElementById('chatContainer'); const chatToggle = document.getElementById('chatToggle'); const closeChatBtn = document.getElementById('closeChatBtn'); const chatForm = document.getElementById('chatForm'); const userInput = document.getElementById('userInput'); const chatBody = document.getElementById('chatBody'); const sendBtn = document.getElementById('sendBtn'); const CHAT_HANDLER_URL = 'chat_handler.php'; // --- Core Chat Visibility Toggle --- const toggleChat = () => { // Toggle the visibility of the main container chatContainer.classList.toggle('d-none'); // Toggle the visibility of the floating button (hides when chat is open) chatToggle.classList.toggle('d-none'); // Focus on input when opening the chat if (!chatContainer.classList.contains('d-none')) { userInput.focus(); } }; // --- Event Listeners --- chatToggle.addEventListener('click', toggleChat); closeChatBtn.addEventListener('click', toggleChat); /** * Renders a message bubble to the chat window, applying **bold** formatting. * @param {string} text - The message content. * @param {boolean} isBot - True if the message is from the bot. * @param {string | null} url - Optional URL to display as a separate link. */ const addMessage = (text, isBot, url = null) => { const messageBubble = document.createElement('div'); messageBubble.classList.add(isBot ? 'bot-message' : 'user-message'); // Use innerHTML and parse **bold** text to <strong> const formattedText = text.replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>'); messageBubble.innerHTML = formattedText; chatBody.appendChild(messageBubble); // If a URL is provided, render it as a link below the message if (isBot && url) { const linkContainer = document.createElement('div'); linkContainer.classList.add('bot-link-container'); const link = document.createElement('a'); link.classList.add('bot-link', 'd-block'); link.href = url; link.target = '_blank'; link.innerText = 'Read More Here'; linkContainer.appendChild(link); chatBody.appendChild(linkContainer); } // Scroll to the bottom of the chat window chatBody.scrollTop = chatBody.scrollHeight; }; /** * Adds a simple visual loading indicator to the chat body. */ const showLoadingIndicator = () => { const loadingMessageId = 'bot-loading-indicator'; if (document.getElementById(loadingMessageId)) return; const loadingBubble = document.createElement('div'); loadingBubble.id = loadingMessageId; // Use bot-message styling for appearance loadingBubble.classList.add('bot-message'); // Added dots for visual animation feedback loadingBubble.innerHTML = 'Thinking<span class="dot-1">.</span><span class="dot-2">.</span><span class="dot-3">.</span>'; // Inject temporary CSS for dot animation const style = document.createElement('style'); style.type = 'text/css'; style.id = 'loading-style'; style.innerHTML = ` .bot-message span { animation: blink 1s infinite; opacity: 0; } .bot-message .dot-2 { animation-delay: 0.2s; } .bot-message .dot-3 { animation-delay: 0.4s; } @keyframes blink { 0% { opacity: 0; } 50% { opacity: 1; } 100% { opacity: 0; } } `; document.head.appendChild(style); chatBody.appendChild(loadingBubble); chatBody.scrollTop = chatBody.scrollHeight; }; /** * Removes the loading indicator from the chat body. */ const hideLoadingIndicator = () => { const loading = document.getElementById('bot-loading-indicator'); if (loading) { loading.remove(); } const style = document.getElementById('loading-style'); if (style) { style.remove(); } }; // --- Form Submission Handler --- chatForm.addEventListener('submit', async (e) => { e.preventDefault(); const query = userInput.value.trim(); if (!query) return; // 1. Display user message addMessage(query, false); userInput.value = ''; // Disable input and button, show loading indicator userInput.disabled = true; sendBtn.disabled = true; showLoadingIndicator(); try { // 2. Send query to PHP backend const formData = new FormData(); formData.append('query', query); const response = await fetch(CHAT_HANDLER_URL, { method: 'POST', body: formData }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); // 3. Display bot response addMessage(data.message, true, data.url); } catch (error) { console.error('Error fetching chat response:', error); // Fallback message for connection errors addMessage("Sorry, I'm having trouble connecting right now. Please try again later.", true); } finally { // Re-enable input and hide loading regardless of success/fail userInput.disabled = false; sendBtn.disabled = false; hideLoadingIndicator(); userInput.focus(); } }); });