Key Takeaways
- Accounting approves an invoice when it matches records already on file: contract or SOW, signed acceptance, valid tax form. Formatting isn't part of the check.
- Three binary conditions do the actual gating: a valid tax form on record, a contract or PO reference, and a dated acceptance record kept separate from the invoice.
- Skip the tax form and the invoice doesn't just get delayed. A missing or invalid TIN triggers 24% federal backup withholding on the payment.
- Most breakage in the invoice-to-books pipeline is a timing problem, not a missing field: the invoice shows up before the deliverable has a formal acceptance record behind it.
- A spreadsheet and a shared folder work fine for a solo contractor or a one-off project. Past a certain contractor count, country count, or audit exposure, that same process becomes the risk.
An Invoice Gets Approved by Matching, Not by Looking Right
A contractor invoice is a payment request tied to specific work: payer, payee, amount, and what was delivered. That's the full definition, and it says nothing about whether accounting will approve it.
Approval runs on a different check: does this invoice match something else already on record. Accounts payable (AP) lines it up against a contract or purchase order (PO), against the statement of work (SOW) describing the deliverable, and against proof the deliverable was actually accepted. With a PO in play, that's a three-way match. Without one, it's two-way. Either way, the invoice is only one leg of the comparison, not the whole decision.
This is where invoice-template advice gets it backwards. It treats "did I fill in every field" as the bar. The real bar is narrower and less visible: does a contract or PO reference exist for AP to match against in the first place. An invoice with every line filled in but no reference back to a contract has nothing to match, so it sits. An invoice with a typo in the mailing address but a valid PO number and a signed-off deliverable can clear the same day.
The Decision Table Accounting Actually Runs on a Contractor Invoice
Strip away the advice-column framing and what AP actually runs looks closer to a truth table than a checklist. Three conditions, each yes or no, resolve to one of four actions.
| Tax form on file | Contract/PO reference | Acceptance record | AP action |
|---|---|---|---|
| Yes | Yes | Yes | Accept — pay per the agreed terms |
| Yes | Yes | No | Hold — get sign-off on the deliverable before releasing payment |
| Yes | No | Yes | Hold — request a contract or PO reference; there's proof of work but nothing to match it against |
| Yes | No | No | Reject — kick back for resubmission; nothing ties the invoice to a contract, a deliverable, or a sign-off |
| No | Yes | Yes | Withhold — for a US person, pay net of 24% federal backup withholding until a valid W-9 is on file; for a non-US contractor, hold the payment until a W-8BEN establishes foreign status and any treaty rate |
| No | Yes | No | Hold — get the acceptance record first; a withholding flag still applies once it clears |
| No | No | Yes | Hold — request the contract/PO reference; withholding applies too if the invoice gets paid before a tax form lands |
| No | No | No | Reject — same as row four, plus a withholding flag on any resubmission |
A perfectly formatted invoice with no contract or PO reference doesn't outrank a messy one backed by a reference and a signed acceptance. Reference and acceptance carry the weight here, not presentation. And a missing tax form doesn't stop payment outright; it just moves the invoice from accept to withhold, a quieter failure mode than most contractors expect.
The Fields That Let an Invoice Enter the Matching Queue
Every field on a contractor invoice exists to make one of the three matches above possible.
| Field | Why AP checks it | What breaks if it's missing or wrong |
|---|---|---|
| Payer/payee legal name | Has to match the entity named on the contract and the tax form, not a nickname or a DBA | Blocks the match even when the contract, PO, and acceptance are all in order |
| Tax ID (TIN/EIN, or foreign equivalent) | Ties the payment to a specific taxpayer for 1099 reporting | Triggers the withhold row above; the W-9 behind it also needs to stay on file for around four years |
| Invoice number | Unique per contractor across every period, never reused; a dated scheme like 2026-07-001 makes duplicates obvious on sight | A reused number is the exact pattern automated AP checks and auditors flag as a duplicate-payment risk |
| Invoice date and service date | Service date maps the invoice to a period and to an acceptance record; invoice date alone doesn't prove when the work happened | An invoice dated before the service period, or before acceptance exists, fails the timing check regardless of anything else |
| Line items mapped to a SOW deliverable | "Consulting services" matches nothing. "Sprint 14 deliverable per SOW section 3.2" matches a specific contract line, whether billed as one deliverable or a milestone on a progress schedule | Vague line items can't be checked against scope, so AP either bounces the invoice or approves it blind |
| Currency | Has to match the currency the deliverable was priced in under the contract | Forces a manual FX conversion and risks posting the wrong amount to the general ledger |
| Contract/PO reference | The anchor the whole match runs against | No reference means no match, no matter how complete the rest of the invoice is |
| Tax-form-status flag (W-9/W-8BEN on file: yes/no) | Determines whether the payment goes out clean or net of withholding | The exact field the withhold row in the decision table runs on |
Payment terms or a due date matter here only as one more field AP checks against the contract, confirming nobody quietly changed net-30 to net-15. How the contractor gets paid — wire, ACH, or a platform — is a separate concern and out of scope here.
Where the Pipeline Breaks Between Invoice, Approval, and the Books
Every row in that decision table assumes the three conditions are true or false at the moment AP looks at them. In practice, most failures aren't a condition flipping to false — they're timing, a mismatched reference, or a number that's been reused. Five patterns cover most of what actually breaks between an invoice landing in the inbox and it clearing the books.
- The invoice is dated before the deliverable has a formal acceptance record. Nothing else on it is wrong, but the acceptance condition reads "no" as of that date. Consequence: an automatic Hold, the same outcome the decision table already assigns to a missing sign-off, no matter how complete the rest of the invoice looks.
- No valid W-9 or W-8BEN is on file when payment is due. Consequence: the payment drops into the withhold row instead of clearing in full. That exposure got wider this year: a 2025 tax-law change raised the cumulative reporting floor from $600 to $2,000 a year, effective for payments made after 2025, per RSM's tax alert on the change. Below that floor there's no 1099 obligation yet. Cross it without a tax form on record and 24% backup withholding applies to the whole payment, not just the amount over the line.
- The line-item description doesn't map to anything in the SOW. "Consulting services, July" isn't checkable against a contract. Consequence: AP either bounces it for a rewrite or reads it as scope creep, since nothing on the invoice ties the charge to a specific deliverable anyone actually signed off on.
- The invoice number gets reused or duplicated across billing periods. Consequence: this is the exact pattern behind duplicate-payment fraud. Billing schemes, including duplicate and inflated invoices, accounted for 22% of asset-misappropriation cases in 2024, with a median loss of $100,000 per incident, per ACFE's Report to the Nations. An AP process that doesn't check invoice numbers against history has no defense against that pattern beyond luck.
- The invoice currency doesn't match the currency the deliverable was priced in under the contract. Consequence: someone converts it by hand, and the general ledger ends up with an FX gain or loss booked against a figure nobody actually agreed to.
Four of these five are catchable before a human ever looks at the invoice: dates, tax-form status, SOW references, invoice-number history, and currency can all be checked against the contract automatically. The exception is #1, because it depends on whether an acceptance record exists at all — a process gap, not a data-validation one.
What Counts as Acceptance Evidence, Not Just an Approval Click
A Slack thumbs-up or a manager saying "looks good" on a call isn't an acceptance record an auditor can work with. It isn't written down anywhere durable, it isn't tied to a specific version of the deliverable, and there's usually no reliable way to prove who said it or when.
What an auditor wants is narrower and less exciting: who accepted the work, when they accepted it, and against which specific deliverable or version. That record needs to come from someone other than whoever submitted the invoice. If the same person requests the work, signs off on it, and approves the invoice for payment, there's no segregation of duties left in the chain — a finding on its own, independent of whether the invoice turns out to be legitimate.
This is also why failure mode #1 shows up so often. An acceptance that exists only as a memory or a verbal yes has no timestamp to check the invoice date against. The invoice can predate the acceptance, or the acceptance can predate the actual deliverable, and neither gets noticed until someone asks for the paper trail and finds there isn't one.
What Changes When the Contractor Is Not a US Taxpayer
For a non-US contractor, the gating document swaps from a W-9 to a W-8BEN, and the withholding logic behind it changes with it. Treat these as two separate systems, not one with an exception carved out.
A foreign contractor isn't subject to the same 24% backup withholding described earlier; that's a US-person mechanism tied to a missing or invalid TIN. What applies instead is a separate regime built around nonresident-alien withholding, and the W-8BEN is the document that manages it: it establishes foreign status and lets the contractor claim a reduced or exempt rate under a tax treaty, where one exists. Without a completed W-8BEN on file, AP has no basis to treat the payment as anything other than fully subject to that regime. The form doesn't remove withholding by default; it's the paperwork that lets a lower rate apply. The $2,000 reporting threshold from the 1099-NEC rules doesn't factor into this at all, since that's a US-domestic reporting floor. For a foreign contractor, the W-8BEN itself is the gate, present or not, regardless of payment size.
A few jurisdictions add a second document layer on top of the W-8BEN. Depending on where the contractor is registered, the payer may also need a local VAT invoice in the contractor's home format, or a self-invoicing arrangement where the payer generates the tax document on the contractor's behalf under a reverse-charge convention. The specifics vary by country enough that they belong in a review with local counsel, not a general checklist — but the pattern is common enough to expect, not an edge case.
Currency gets sharper too. A domestic invoice only has to match the currency the deliverable was priced in. A cross-border contract often carries a separate currency of record for tax and FX purposes, and that figure doesn't automatically match whatever currency the contractor bills in. AP needs to know which one governs the books before either number reaches the general ledger. None of this touches how the money moves. Payment rails are a separate question from whether the documents on file are correct.
When a Spreadsheet Is Enough, and When It Breaks
A spreadsheet and a shared folder are a fine system for a solo contractor or a one-off project: one invoice, one contract, one person checking both by hand. Nothing in the matching logic above requires software when there's this little to check.
The break point is volume and variance, not invoice complexity. Monthly retainers running alongside one-off project invoices, ten or more contractors spread across different countries and pay cycles, or an audit or fundraising round that suddenly asks for supporting documentation on every payment made in the past year — any of these turns manual matching from a shortcut into the actual risk. Nothing stops working overnight. A duplicate invoice number goes uncaught, a W-8BEN lapses without anyone noticing, an acceptance record sits in an inbox that no longer exists by the time someone asks for it.
For a sense of how much slips through even with people paying attention: best-in-class accounts payable teams run invoice exception rates around 9-11% with automation, versus roughly 22% for teams still doing this by hand. That's an automated team catching about one invoice in ten, and a manual team catching closer to one in four or five. Run that rate across dozens of contractor invoices a month in several currencies, and a shared folder stops being a place to store documents and starts being a place documents get lost.
This is the gap a contractor-operations platform is built to close once the manual version stops holding up under audit — one that keeps the contract, the acceptance record, and the supporting documentation matched to each invoice as a default rather than a task someone has to remember, 4dev.com being one example of that category.
FAQ
What should a contractor invoice include for accounting to accept it, not just for it to look complete?
The fields only matter because they feed three conditions: a valid tax form on record, a contract or PO reference, and a dated acceptance record kept separate from the invoice. An invoice with every field filled in but no reference to match against sits in the same queue as one with a typo in the address. The decision table earlier in this piece maps exactly how those three conditions resolve to accept, hold, reject, or withhold.
What happens if a contractor invoice arrives without a W-9 or W-8BEN on file?
It doesn't get rejected outright. For a US contractor, it moves into the withhold row: the payment goes out net of 24% federal backup withholding instead of in full. For a foreign contractor, there's no W-8BEN to establish the separate regime built around nonresident-alien withholding, so the payment sits blocked until that document lands and treaty status, if any, gets claimed.
Do you need a purchase order to approve a contractor invoice, or is the contract enough?
The contract alone is enough to run a two-way match. A PO adds a third reference point and turns it into a three-way match, but its absence isn't disqualifying on its own. What actually blocks approval is having no contract or PO reference at all for AP to match against.
What's the difference between an invoice being "approved" and the deliverable being "accepted"?
Approval is the invoice clearing the match against a contract, tax form, and acceptance record. Acceptance is a separate, dated sign-off on the actual work, ideally from someone other than whoever submitted the invoice. An invoice can have every field correct and still fail if that acceptance record doesn't exist yet.
How long should contractor invoices and their supporting documents be kept for audit purposes?
The W-9 itself should stay on file for around four years, as noted in the fields breakdown earlier. Keeping the invoice, the acceptance record, and the underlying contract together for that same window is the simplest approach in practice, since an auditor asking about one of the three usually asks for the others in the same request.
Can a contractor invoice be paid before the statement of work is signed?
It can be submitted before then, but paying it early skips the acceptance condition the decision table runs on. Without a signed SOW or acceptance record to match against, that invoice lands in a hold or reject row rather than an accept, no matter how correct every other field is.
What if a contractor's invoice line items don't match the contracted scope?
AP either bounces it for a rewrite or reads the extra charge as scope creep, since nothing on the invoice ties it to a deliverable anyone signed off on. A line item like "consulting services, July" fails this check the same way a missing contract reference does: there's nothing on record to check it against.
Top comments (0)