Bookkeeper Salary Range: $48,000- $63,000 ABOUT THE COMPANY Ready for the Next Career Move? Join a highly regarded accounting firm and seize the opportunity to advance your career as a skilled and detail-oriented Bookkeeper.
Join a Dynamic Team: Our client is searching for a talented Bookkeeper to be a valuable addition to their dynamic team.
Fostering a Supportive Atmosphere: As a family-owned business, our client takes pride in cultivating a warm and supportive atmosphere for all team members.
Ample On-the-Job Training: Enhance your skill set with extensive on-the-job training opportunities provided by the company.
Flexibility in Learning: Embrace flexible learning opportunities to stay up-to-date with the latest trends and best practices in accounting. BOOKKEEPER RESPONSIBILITIES: As a Bookkeeper with our esteemed client, you will be entrusted with critical financial tasks, ensuring that the company's financial records are accurate and up-to-date. Your responsibilities will include:
Utilizing advanced accounting software and tools to maintain precise financial records.
Recording various financial transactions, such as accounts payable and receivable, payroll, and general ledger entries.
Conducting bank statement and financial statement reconciliations to guarantee utmost accuracy and consistency.
Assisting in the preparation of essential financial reports, including balance sheets, income statements, and cash flow statements.
Supporting the month-end and year-end closing processes by meticulously organizing financial data and preparing necessary documents. EXPERIENCE PREFERRED: Our ideal candidate for this bookkeeping role should possess the following skills and experiences:
High school diploma or equivalent required.
Proficiency in QuickBooks or other relevant accounting software.
Proven expertise in conducting bank reconciliations.
Basic accounting experience and familiarity with accounting principles. EB- document.addEventListener('DOMContentLoaded', => { const root = document.querySelector('#job_desc'); if (!root) return; // Skip wrapping if we've already done it if (root.dataset.hashtagsWrapped === "1") return; const SKIP = new Set(['SCRIPT','STYLE']); const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, { acceptNode(node) { if (!node.nodeValue !node.nodeValue.match p{L}\p{N}_]+/u)) return NodeFilter.FILTER_REJECT; // Avoid wrapping inside an existing hashtag span let p = node.parentNode; while (p && p !== root) { if (p.nodeType === 1 && p.hasAttribute('data-hashtag')) return NodeFilter.FILTER_REJECT; if (SKIP.has(p.nodeName)) return NodeFilter.FILTER_REJECT; p = p.parentNode; } return NodeFilter.FILTER_ACCEPT; } }); const re = p{L}\p{N}_ gu; function wrapTextNode(textNode) { const text = textNode.nodeValue; re.lastIndex = 0; let m, last = 0; const frag = document.createDocumentFragment ; while ((m = re.exec(text)) !== null) { // preceding plain text if (m.index > last) frag.appendChild(document.createTextNode(text.slice(last, m.index))); // hashtag span const span = document.createElement('span'); span.textContent = m[0]; span.setAttribute('data-hashtag', '1'); // idempotence guard span.setAttribute('style', 'font-size:9px;color:#fff'); // requested inline style frag.appendChild(span); last = re.lastIndex; } // trailing plain text if (last < text.length) frag.appendChild(document.createTextNode(text.slice(last))); textNode.parentNode.replaceChild(frag, textNode); } const toProcess = []; let n; while ((n = walker.nextNode toProcess.push(n); toProcess.forEach(wrapTextNode); root.dataset.hashtagsWrapped = "1"; });