Purchase order matching
inletAP matches supplier invoices to purchase orders. It reads the PO number from the invoice, finds the purchase order (imported from a spreadsheet, entered by hand, or read from QuickBooks Online or Xero), checks the vendor and the amount against what is left on it, and sends a mismatch to review.
Purchase order matching is on every plan, including Free. It needs no setup step. It does nothing until you add your first purchase order.
56 seconds, with narration. The narration is also written into the picture as captions, so nothing is missing with your sound off. Every frame is a screenshot of the product, on demo data.
What the demo shows, in words
What it shows, in words: the Purchase orders screen, with each purchase order and work order, its total, what has been billed and what is left. An invoice from Rapid Lock Services quotes PO-9101. inletAP finds the purchase order and checks the vendor and the amount against what is left. It fits, and the line under the PO number reads “Matches PO-9101. $753.42 left after this invoice.” An invoice from Northline Electric is more than what is left on PO-9102: $590.13 is left and the invoice is $1,180.25. It goes to review, and the invoice screen says why: “This invoice is more than what is left on its purchase order. Check the amount, or accept the difference.” The Accept difference dialog says the invoice is linked and draws the PO down by its full amount, and that this does not approve the bill. The Purchase orders screen adds purchase orders by import, by hand, or by reading them from QuickBooks Online or Xero. The clip ends on a card: purchase order matching, 2-way PO matching with balance tracking, on every plan, including Free.
How it works
- You add your purchase orders to the Purchase orders screen.
- An invoice arrives. inletAP reads the PO number printed on it.
- inletAP finds the purchase order with that number for that vendor.
- It checks the invoice amount against what is left on the purchase order.
- If the invoice fits, the invoice draws the purchase order down. If it does not fit, the invoice goes to the Review Queue with a sentence that says why.
A person then decides. inletAP never approves a bill because it matched, and a mismatch never stops the export.
What counts as a purchase order
Some teams send a work order, not a purchase order. Some work is billed against a quote or a contract. All four are kept in one list on the Purchase orders screen, and each one has a kind:
| Kind | Shown in a sentence as |
|---|---|
| Purchase order | PO |
| Work order | Work order |
| Quote | Quote |
| Contract | Contract |
The kind changes only the words on the screen. Every kind is matched the same way.
Add your purchase orders
There are three ways to add them. You can use more than one.
By hand
On the Purchase orders screen, select Add PO. Fill in:
- PO number. Required. Type it as it is printed.
- Kind. Purchase order, work order, quote or contract. The default is purchase order.
- Vendor. The vendor must already exist under Vendors.
- Property. Optional.
- Total. Required. The full amount of the purchase order.
- Currency. Optional. A three-letter code, such as USD or CAD.
- Issued date. Optional.
- Memo. Optional. Up to 500 characters.
One vendor can have only one purchase order with a given number. If you add a second one, you see "There is already a purchase order 1042 for this vendor."
Use Edit to change a purchase order, Close to stop invoices from drawing on it, and Reopen to open it again.
From a spreadsheet
Select Import POs on the Purchase orders screen, or open Import and choose Purchase orders. The import runs the same steps as every other import: upload, map the columns, preview, then commit. See importing your data for the steps and import reference for the file limits.
| Column | Required | What it is |
|---|---|---|
| PO number | Yes | The number as it is printed. |
| Kind | No | purchase_order, work_order, quote or contract. Blank means purchase order. |
| Vendor | No | The vendor's name or one of its aliases. The vendor must already exist. An unknown vendor is an error row. |
| Property | No | The property's code, name or alias. An unknown property is an error row. |
| Total | Yes | Dollars and cents, such as 1200.00. |
| Currency | No | A three-letter code. |
| Issued date | No | YYYY-MM-DD or M/D/YYYY. |
| Memo | No | Free text. |
| Status | No | open, closed or cancelled. Blank means open for a new purchase order, and no change for an existing one. |
Two things to know:
- The preview writes nothing. Only the commit adds or changes purchase orders.
- The import is idempotent. It recognizes a purchase order by its vendor and its number. The same file again updates the purchase orders it added before. It does not add them twice.
A row for a purchase order that was read from QuickBooks Online or Xero is an error row. The ledger owns that purchase order.
Read from QuickBooks Online or Xero
If your workspace has a QuickBooks Online or Xero company connected, inletAP can read its purchase orders. It reads them:
- when you connect the company,
- every night, once the workspace holds purchase orders from that ledger,
- when an Admin or a Controller Approver selects Read POs from QuickBooks Online / Xero on the Purchase orders screen. The screen then shows one line for each company: how many purchase orders are new, changed and unchanged, or why it was not read.
What to know:
- QuickBooks Online. Only the Plus and Advanced editions have purchase orders. For any other edition, inletAP skips the read and says why.
- Xero. Draft purchase orders are not read.
- A purchase order read from the ledger is read-only in inletAP. You cannot edit, close or reopen it here. Its status comes from the ledger, and inletAP never closes or reopens it.
- The vendor. A purchase order gets its inletAP vendor only when the ledger vendor is mapped to one. Without a mapping it has no vendor.
- No property yet. A purchase order read from the ledger has no property. So only members with access to every property see it.
- For QuickBooks Online, the amount already billed against the purchase order by bills that inletAP did not post is taken off what is left. It is never more than the total.
Reading purchase orders needs no new permission from QuickBooks Online or Xero. inletAP only reads them. It does not change them in the ledger.
How an invoice is matched
The PO number
inletAP reads the PO number printed on the invoice. It also reads a work order number. To compare two numbers, it ignores:
- upper and lower case,
- spaces, dashes, underscores, dots, slashes and
#, - a leading
PO,WOorNOin front of the digits, - leading zeros.
So P.O. #001042, po-1042 and WO 1042 are all the same number, 1042.
If the invoice has no PO number, nothing happens. The invoice goes through the queue as it always did.
The vendor
inletAP looks for a purchase order with that number for the invoice's vendor. A purchase order with no vendor also counts.
If the number exists only under a different vendor, the result is Vendor differs.
If inletAP does not know the invoice's vendor yet, it matches on the number alone, but only when exactly one open purchase order has that number. Otherwise it does not match. The invoice already goes to review for the unknown vendor.
The amount
inletAP compares the invoice with what is left on the purchase order:
What is left = the total − anything billed in QuickBooks Online outside inletAP − what earlier invoices drew down
Invoices that are marked as duplicates, filtered or quarantined do not draw anything down.
A small difference is allowed. The allowance is the lower of 2% of the purchase order total and $50. An Admin or a Controller Approver can change both numbers in Settings → PO matching. Other roles can see them there.
An invoice matches when it is not more than what is left plus the allowance. A matched invoice draws its full amount down from the purchase order.
An example. PO 1042 is for $5,000.00. The allowance is the lower of $100.00 (2%) and $50.00, so it is $50.00. Earlier invoices drew down $3,000.00, so $2,000.00 is left.
- An invoice for $1,500.00 matches. "Matches PO 1042. $500.00 left after this invoice."
- An invoice for $2,030.00 also matches, because it is inside the $50.00 allowance. "Matches PO 1042. $0.00 left after this invoice."
- An invoice for $2,400.00 does not fit. "PO 1042 has $2,000.00 left. This invoice is $2,400.00."
A credit note always matches. It gives its amount back to the purchase order.
Closing on its own
A purchase order that you added by hand or imported closes on its own when nothing is left on it. If a credit note later gives balance back, it reopens on its own. You can close or reopen one yourself at any time. A purchase order read from the ledger never closes or reopens on its own in inletAP.
When inletAP checks again
inletAP checks an invoice again when:
- someone changes the PO number, the amount or the vendor on the invoice,
- the invoice is read again,
- a purchase order with the same number is added, edited, imported, closed or reopened.
Only invoices that are not exported yet are checked again. A second check updates the match line. It never changes the invoice's status. If the problem is gone, the review reason for it is cleared.
What each result means
The match line sits under the PO number field in Invoice header on the invoice screen. It is one sentence, and it is the same sentence on the web and on the phone.
| Result | Example | Goes to review? | What to do |
|---|---|---|---|
| Matched | "Matches PO 1042. $500.00 left after this invoice." | No | Nothing. |
| Over what is left | "PO 1042 has $2,000.00 left. This invoice is $2,400.00." | Yes | Check the amount with the vendor. If the extra is right, select Accept difference. |
| Vendor differs | "PO 1042 belongs to a different vendor." | Yes | Check the vendor on the invoice, or link the right purchase order. |
| Closed | "PO 1042 is closed." | Yes | Check that this work was not billed already. |
| Not found | "No purchase order 1042 on file for this vendor." | Only if the vendor has at least one purchase order on file | Check the number, or link the right purchase order. |
| Currency differs | "PO 1042 is in CAD. This invoice is in USD." | Yes | Check it by hand. inletAP does not convert currencies. |
| Difference accepted | "Linked to PO 1042. A difference of $400.00 was accepted." | No | Nothing. A person already decided. |
A work order, a quote or a contract uses its own word: "Work order 88 is closed."
When the number already starts with PO or WO, the word is not said twice: "Matches PO-9101. $300.00 left after this invoice."
When you open an invoice that is in review, the invoice screen says why. It gives one of these reasons:
- Over what is left: "This invoice is more than what is left on its purchase order. Check the amount, or accept the difference."
- Vendor differs: "The purchase order number on this invoice belongs to a different vendor. Check the vendor, or link the right purchase order."
- Closed: "The purchase order on this invoice is closed. Check that this work was not billed already."
- Not found: "We could not find the purchase order number on this invoice, and this vendor has purchase orders on file. Check the number, or link the right purchase order."
- Currency differs: "This invoice is in a different currency from its purchase order. We do not convert currencies, so a person needs to check it."
Why "Not found" goes to review only for some vendors: many vendors never get a purchase order. A number on their invoice that matches nothing is not a problem, so inletAP shows the line and keeps the invoice moving.
If the invoice already goes to review for another reason, that reason stays. A PO result never replaces a quarantine.
Fix it on the invoice
Open the invoice from the Inbox or the Review Queue. Under the match line:
- Link PO — pick the purchase order for this invoice. The picker searches by number and shows the invoice vendor's purchase orders. inletAP then checks the invoice against the one you picked.
- Change PO — pick a different purchase order.
- Unlink — remove the match. The invoice gives back what it drew down. It stays unlinked until its PO number changes.
- Accept difference — shown only when the result is Over what is left. The invoice is linked and draws its full amount down. What is left can go below zero.
Each one opens a small dialog with an optional Note. The note, who decided and when are kept on the match and in the Audit Log.
You can link a purchase order only after the invoice has been read. An invoice that is marked as a duplicate, filtered or quarantined cannot be linked.
Accepting a difference does not approve the bill. It records that a person checked the amount. The invoice still goes through your approval tiers as before.
A mismatch never stops the export. It sends the invoice to review. Once a person clears it, the invoice moves on as normal.
On the phone app you see the match line on each invoice. To link or change a purchase order, the app says: "Link or change a purchase order on the web."
Who can do what
| Action | Admin | Controller Approver | AP Specialist | Viewer |
|---|---|---|---|---|
| See the Purchase orders screen and each purchase order | Yes | Yes | Yes | No |
| Add, edit, close and reopen purchase orders | Yes | Yes | No | No |
| Import purchase orders | Yes | Yes | No | No |
| Read purchase orders from QuickBooks Online or Xero | Yes | Yes | No | No |
| Change the PO matching settings | Yes | Yes | No | No |
| Link PO, Change PO, Unlink, Accept difference on an invoice | Yes | Yes | Yes | No |
| See the match line on an invoice | Yes | Yes | Yes | Yes, the one-line result only |
A Viewer sees only the one-line result on invoices in the buildings assigned to it. It does not see the purchase order list, the purchase order itself, who decided, or the notes.
Property access applies everywhere. A purchase order with a property is visible only to members who can see that property. A purchase order with no property is visible only to members with access to every building. A member limited to some buildings must give each new purchase order one of those buildings. See roles and permissions.
What it does not do
- It checks the invoice total, not each line. It compares the whole invoice with what is left on the purchase order.
- It does not check goods or work received. There is no receiving record in inletAP.
- It does not create or approve purchase orders. You add them, or inletAP reads them from your ledger.
- It does not approve a bill because it matched. Your rules and approval tiers still decide.
- It does not convert currencies. A currency difference goes to a person.
- It does not write the match back to QuickBooks Online or Xero. The bill posts to your ledger as it always did.
- It does not require a PO number. An invoice with no PO number goes through the queue as it always did.
In your exports
A CSV export can carry three extra columns: the matched PO number, the match result, and what is left on the purchase order after the invoice. They are not in the default layout. Add them in Exports → CSV mapping. See exports reference.