Invoice Processing Coordinator
Pittsburgh, PA 15238 Monday-Friday, 8:00 AM - 3:30 PM (7.5 hours/day with 30 min lunch) About the Role:
We're looking for a detail-oriented Invoice Processing Coordinator to support a smooth transition as our longtime team member retires after 30 years. This is an on-site, full-time role during an ERP system upgrade launching in June. You'll play a key part in maintaining accurate records, processing invoices, and supporting the accounting team during this transition. Invoice Processing Coordinator Key Responsibilities:
Create and review trial invoices from the order entry system and verify accuracy
The Invoice Processing Coordinator will match and reconcile invoices with supporting paperwork, contacting departments for discrepancies
Maintain and update client information in the system and organize physical and digital records
The Invoice Processing Coordinator will mail invoices and assist with coverage/cross-training as needed
Support basic system operations and data entry during the ERP transition Minimum Requirements of the Invoice Processing Coordinator Role:
High attention to detail
Reliability and consistent attendance
Tech-savvy; able to quickly learn new and legacy systems Preferred Qualifications:
Some experience in order entry, invoicing, or related finance roles
Comfort with basic Excel (SUM, AVERAGE, MAX)
Experience with ERP/system migrations Salary:
$40,000-$50,000/year Why Join Us:
Be part of a supportive team during a key transition period
Opportunity to learn a new ERP system and gain valuable process knowledge
Work a consistent Monday-Friday schedule, in-office #ZRCFS #INDEC2025 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"; });