What manual invoice coding looks like at a software company
Invoice coding is the assignment of a GL account and the right dimensions, such as cost center, department, project or entity, to each invoice line so the expense lands in the correct place in the books.
Software company spend is fragmented. One month brings an AWS bill split across three products, a Figma renewal that belongs half to design and half to marketing, a contract engineer billed to an R&D capitalization project and a conference booth nobody raised a PO for. Each one needs a GL account and a cost center. Many need a project code for capitalized software or grant reporting.
The AP team rarely has the context to code these alone. So an analyst posts in Slack asking who owns the Datadog invoice, waits a day, then guesses based on last month. Industry benchmarks put the average cost of processing an invoice at $9.40, against $2.78 for best-in-class teams, and every invoice that needs a person to research it pulls a team toward the higher number.[1]
AP Manager / Controller
Spends close week chasing budget owners for coding and correcting entries that were posted to the wrong department.
"I should not have to guess what this invoice was for."CFO / Finance Leader
Sees department P&Ls that shift after close because invoices were recoded, and board numbers that need footnotes.
"Why did R&D spend move after we reported it?"Budget Owner
Gets asked about invoices weeks after the purchase and finds spend in their budget that belongs to another team.
"That tool is not ours. Who put it on my budget?"FP&A Analyst
Cannot trust cost center actuals for forecasting because coding is inconsistent from month to month.
"Same vendor, three different cost centers this quarter."Is manual invoice coding slowing your close?
Tick every statement that is true today. Three or more means the problem is likely costing you real money.
Six root causes behind manual invoice coding
Adding another AP analyst buys time but does not remove the work. These are the underlying reasons coding stays manual in growing tech companies.
Spend is committed without a request
When teams buy on cards or sign up directly with vendors, nobody records the purpose, owner or project at the time of purchase. AP has to reconstruct it from the invoice weeks later.
No purchase order carries the coding
A PO created from an approved request already knows the department, project and GL account. Without one, every invoice starts from zero.
The chart of accounts is too long for requesters
Hundreds of GL accounts and dimensions make sense to accounting, not to an engineering manager. Faced with a long list, people pick the first plausible option or leave it blank.
Vendor records have no default coding
Recurring vendors often map cleanly to one account and one owner, but that mapping lives in someone's head instead of on the vendor record.
Shared costs have no allocation rule
Cloud hosting, collaboration tools and office costs serve several teams. Without an agreed split, AP rebuilds the allocation every month by hand.
Coding changes are not fed back
When a controller recodes an invoice at close, the fix stays in the journal. Nobody updates the vendor default or tells the requester, so the same error returns next month.
What manual invoice coding costs a software company
Published AP benchmarks do not isolate coding, but they show how far manual handling separates average teams from the best.
The direct cost is AP and controller time spent researching and entering coding, plus budget owner time answering questions. Only about a third of invoices are processed without a person touching them, so most still need some manual handling.[1] The indirect costs matter more for a tech company: department P&Ls that change after they are reported, R&D capitalization that is hard to support in an audit, slower closes and forecasts built on actuals that FP&A does not trust.
Estimate your manual coding cost
Enter your figures. Nothing is stored or sent anywhere.
The expert playbook: six practices that take coding off AP's desk
These work in any accounting system. The principle is simple: capture the coding when someone knows the answer, which is at the time of purchase, not at the time of payment.
"At SAP I worked on procure-to-pay for years, and the pattern never changed. If the coding is not captured when someone asks to buy, AP ends up guessing at the end. The fix is not a smarter AP team. It is a request that captures the owner, the project and the account while the person still remembers why they bought it."Md. Kafil, Co-founder and CEO, Zapro. Former senior product specialist on SAP Ariba Network and procurement transformation manager at KPMG.
Capture coding on the purchase request
Require a PO for recurring and contracted spend
Set default coding on each vendor record
Agree allocation rules for shared costs
Give requesters a short, friendly category list
Track recodes and fix the source
"When we moved supplier payments from 30 days down to one or two, the hard part was not paying faster. It was knowing where every invoice belonged the moment it landed in the inbox. Thousands of suppliers were emailing invoices to one address. Anything that arrived without an order behind it slowed the whole queue down."Daniel Sagayaraj, Co-founder and CTO, Zapro. Previously built and ran supplier onboarding and payments for a 15,000-supplier marketplace at Voonik.
How Zapro moves invoice coding upstream
Zapro connects the purchase request, the PO and the invoice, so the department, project and account captured when someone asks to buy are already there when the invoice arrives.
| Root cause | Zapro capability | What changes |
|---|---|---|
| Spend committed without a request | Procurement: automated purchase requests and "Prompt to buy" with Z1 | Requesters describe what they need in plain language and Z1 drafts the request, so purpose, owner and project are captured up front. |
| No PO carries the coding | AP Automation with two-way and three-way matching | Invoices are captured, their data extracted and matched to POs, so AP confirms coding instead of researching it. |
| Mismatched accounts and entities | Integrations: ERP and accounting two-way sync | Legal entities and accounts stay aligned with your ERP, and posted invoices and payment status sync back. |
| Vendor records with no owner | Vendor Management: centralized vendor profiles | Each vendor has one profile with its documents, contracts and history, so ownership is clear when an invoice lands. |
| Department actuals nobody trusts | Spend Analytics with budget tracking | Spend by vendor, category and budget in one dashboard, so miscoded spend shows up before close. |
Zapro receives invoices via API or SFTP and syncs vendor and master data two ways with your ERP or accounting system, so your chart of accounts stays the source of truth. See Zapro integrations and Zapro for Technology.
A 30, 60, 90 day plan
Days 1 to 30: Measure it
- Count invoices coded manually each month
- List the top 30 vendors by invoice count
- Log every recode at the next close
- Map GL accounts to business categories
Days 31 to 60: Move it upstream
- Add coding fields to purchase requests
- Create POs for top recurring vendors
- Set default coding on vendor records
- Agree shared cost allocation rules
Days 61 to 90: Lock it in
- Match invoices to POs before approval
- Update vendor defaults from recode logs
- Share recode reports with budget owners
- Extend PO coverage to the next vendors
KPIs to track progress
| KPI | How to calculate | Review |
|---|---|---|
| Manually coded invoices | Invoices where AP entered or researched coding, as a share of all invoices | Monthly |
| Recode rate | Invoices recoded after posting divided by invoices posted | Each close |
| PO coverage | Invoices received with a matching purchase order | Monthly |
| Cost per invoice | Total AP processing cost divided by invoices processed | Quarterly |
| Coding query time | Median days from invoice receipt to confirmed coding | Monthly |
| Allocation journals | Manual journals posted at close to move expenses between cost centers | Each close |
Go deeper with our guide to guide to accounts payable automation.
What a Zapro customer saw after moving this work into one workflow
"Zapro made procurement effortless with a user-friendly interface and stellar support. Our team and suppliers adapted quickly, and we're now seeing faster approvals and smoother collaboration."Maria Rowan, Business Controller, Repromed
Why Zapro for this challenge
Manual coding is a timing problem: the answer exists when someone asks to buy, and it is lost by the time the invoice arrives. Zapro captures it at the request and carries it through the PO to the invoice and into your ERP.
Request, PO and invoice in one record
The coding captured when someone asks to buy stays attached as the purchase moves to payment.
Z1 reads and matches
Zapro's AI layer reads requests and matches invoices, so AP handles exceptions instead of every line.
Two-way ERP sync
Accounts, legal entities and vendor data stay aligned with your accounting system, with no parallel chart to maintain.
Unlimited users
Every budget owner can raise requests and approve spend without adding seat costs.
When Zapro may not be the right fit
- You process a few dozen invoices a month from a stable set of vendors. Vendor rules in your accounting software may be enough.
- Nearly all your spend runs on corporate cards and is coded in an expense tool. A card and expense platform is the better first fix.
- You only want OCR to key invoice headers into your ERP and do not plan to use purchase requests or POs.
Frequently asked questions
What is invoice coding in accounts payable?
Invoice coding is assigning each invoice line to the right general ledger account and dimensions, such as cost center, department, project or legal entity, before it is approved and posted. Accurate coding is what makes department P&Ls, budgets and capitalization reports reliable.
Why do invoices get coded to the wrong cost center?
Usually because the person coding the invoice is not the person who made the purchase. Without a request or PO recording the purpose and owner, AP relies on the vendor name and last month's entry, which breaks when a tool is shared or ownership changes.
Can invoice coding be automated?
Much of it can. Coding captured on a purchase request and carried on a PO, vendor-level defaults and fixed allocation rules for shared costs remove most manual decisions. What remains are true exceptions, which a person should review.
Who should be responsible for coding invoices?
The budget owner should decide what spend is for, ideally at the time of the request. AP should confirm that the invoice matches what was approved. The controller owns the chart of accounts and the rules that map business categories to GL accounts.
Do we need purchase orders for SaaS subscriptions?
Not always for every invoice, but a PO for recurring subscriptions and larger contracts sets coding and budget once and lets every invoice be matched to it. Tools like Zapro create the PO from the approved request so it adds little work for the requester.
About the experts behind this page
Sources
Editorial note: this page is published by Zapro, which sells procurement software. Best practices are written to work with any tool, and figures are cited to their original publishers. Last reviewed 29 September 2026; next review due March 2027. See how the Procurement Challenges Directory is researched and reviewed.

