What invoice coding is, and why it is the slow part
The free plan processes 25 invoices a month with unlimited users, takes no credit card and does not expire. You get your own intake address at the end of setup.
The definition, and the distinction that matters
Coding is the translation step between a document somebody else wrote and a ledger you have to defend. Extraction reads what the vendor wrote. Coding decides where it lands.
The two are separate on purpose. A plumber sends the same invoice whether you book it to Repairs and Maintenance or to Capital Improvements, and whether it belongs to one building or four. The document is identical either way; the decision is entirely yours, and it depends on facts the vendor could not know — how your accounts are arranged, who owns which building, and what you did with a similar bill last spring.
This is why capture accuracy, which is what most of this category advertises, does not settle the question. A general ledger code is not printed on a vendor invoice and never has been. You can read a document perfectly and still have no idea which account it belongs to. In inletAP, extraction does not attempt to read GL codes off the page at all — a code arrives from a rule you wrote, from a default set on the vendor or the property, or from a person typing it, and the source is recorded either way.
A coded document ends up carrying more than an account. It carries the property the cost belongs to, the vendor it came from, the tax treatment, a cost center if you use them, and the owning entity — which follows from the property rather than being set per invoice, because an entity is an attribute of a building and not of a bill. Line items sit beneath it, and a line can carry its own account once it is split.
The reason coding is the stage firms automate first is that it is repetitive without being simple. Most invoices in a given month are the same vendors doing the same things at the same buildings, which is standing decisions rather than new ones. But a meaningful minority are genuinely new, and those need a person. A system earns its place by handling the first group silently and being honest about the second, rather than by guessing confidently at both.
Capabilities
What a coded invoice actually carries
The GL account
The line in your chart of accounts the cost belongs to, and the value your income statement is built from. It is never printed on the invoice. In inletAP it is written by a rule, defaulted from the vendor or the property, or typed — and each source is stamped with a different confidence, so a default never looks like a decision.
The property, and the entity behind it
Which building the cost belongs to. Resolved from the property hint on the document, matched against the aliases you keep on each property, and failing that from the intake mailbox the invoice arrived at. The owning entity is inherited from the property rather than coded per invoice, so changing a building's entity moves every future bill with it.
Vendor, tax and cost center
The vendor is matched from the extracted name or from the sender's domain, and carries its own coding aliases and default account. The tax code comes from your workspace default when the invoice states tax, or you type it. A cost center is always typed, never read off the document — a property can hold a default one for your own reference.
Line items, and when they need their own code
Lines are read off the invoice. An invoice you have not split posts every line on the document's own GL code, which is right for the large majority of bills. A roofer billing materials and labor on separate lines is the case where it is not, and that is what splitting a line is for.
Allocations across buildings
One invoice covering five properties becomes five allocations — evenly, by unit count, by square footage, by percent or by typed amounts — each carrying its share to the cent. A split invoice still shows one primary property in the inbox, the one holding the largest allocation, so a queue stays readable.
Rules, for the decisions you have already made
A rule matches on the source email, the vendor, the amount, a keyword in the email subject, a property alias or the intake mailbox, and can set the GL code, assign a reviewer, quarantine the document or mark it ready for approval. Conditions combine with AND. Rules are workspace-wide; to act on one building, match on that building.
Why this one
The limits, stated plainly
- A rule can set the GL code. It cannot set the property, the vendor, the class or the tax code. There are exactly four rule actions — set the coding, assign a reviewer, quarantine, or mark ready for approval — and no others exist.
- Marking a document ready for approval is not approving it. A human still approves. Nothing in the rules engine can pay or post a bill by itself.
- Rules live at the workspace level. A rule cannot be scoped to one property; if you want per-building behavior, you write a condition that matches the building, by property alias or by the mailbox it arrived at.
- A keyword condition reads the email subject only. It does not search the text of the PDF, and a rule written expecting it to will match nothing.
- Conditions combine with AND only. There is no OR, no nesting, no regular expressions, and no condition on a date, a currency or a line item.
- Extraction does not read GL codes off the document. Anything that tells you it reads your chart of accounts off a vendor invoice is describing something else.
- Splitting a property across a QuickBooks Online bill needs class tracking on the line. Properties modeled as QuickBooks Locations cannot be split, because a location is a header field on a bill rather than a line field. Neither limit applies to Xero, which carries tracking on the line.
- No published accuracy rate for automated coding, ours or anyone's. Coding correctness depends on your chart of accounts and your own past decisions, so a vendor-published percentage would describe a test set rather than your books.
Compare
Three ways a GL code lands on an invoice
| Typed by a person | Written by a rule | Defaulted from vendor or property | |
|---|---|---|---|
| Confidence recorded | Full — somebody decided | Full — you decided in advance | 0.5, meaning assumed rather than decided |
| Clears the 0.7 review threshold | Yes | Yes | No — it stops for a human, which is the point of the number |
| Applied when | At review, on the invoice | After extraction, on every matching document | Last, after extraction and rules, so it never overwrites either |
| Good for | The genuinely new bill | The vendor you have already made a standing decision about | A reasonable starting guess that is visibly a guess |
| Recorded in the audit trail | Yes, with the person and the time | Yes, naming the rule | Yes, as a default |
The confidence numbers are product behavior, not marketing: a rule-written or typed code is stamped at 1.0, a vendor or property default at 0.5, and the review threshold is 0.7. The threshold is fixed and is not a setting.
Pricing
Coding rules are on every plan, including the free one
Prices are in US dollars and exclude sales tax, which is added where it applies.
Paid plans renew automatically at the price shown — every month, or every 12 months on annual billing — until you cancel. Cancel any time in billing settings: the next renewal stops and you keep the period you have already paid for.
Invoice coding — common questions
What is invoice coding?
What does it mean to code an invoice in accounts payable?
What is coding in invoice processing?
Is invoice coding the same as OCR or data extraction?
Who codes invoices?
Can invoice coding be automated?
What is a GL code on an invoice?
How do you code one invoice across several properties?
What happens when the software is not sure how to code something?
Keep reading
Code a month of real invoices and see what it gets right
Forward a month of bills from the vendors you know best to your intake address, write one rule for the vendor you code most often, and see how much of the queue codes itself. The free plan covers 25 documents every month and takes no credit card.