The short answer
You track receipts and expenses by job by moving the coding decision to the register. The job number goes on the purchase at the moment of purchase, as a PO at the counter or as a separate transaction per job, and the itemized copy arrives in your email because you bought on a supplier account. The weekly office session is then verification: confirm every transaction has a receipt and a job, chase the two that do not, done.
Almost every guide on this topic tells you the opposite. Snap a photo, upload it later, categorize it in the app. That advice is why you have tried three apps and quit all three. The photo is not the hard part. The hard part is that by Thursday you no longer remember whether the $86 of PVC on Tuesday's receipt went to the Harrison job or the rental on Elm, and no OCR engine on earth can recover a fact that was never written down.
I searched the exact phrase "how to track receipts and expenses by job" before writing this. Seven of the nine organic results were product pages for receipt scanning software. Not one of them described what to say to the person at the pro desk.
Why does every receipt system I try fall apart?
Because all of them start at the office, and the information you need was lost at the store.
A receipt records four things well: amount, date, vendor, and line items. It records the one thing you actually need, which job it belongs to, not at all. That association lives in your memory, and memory has a half-life measured in hours on a day where you made three supply stops.
This is the exact complaint in a September 2025 r/Contractor thread titled "How's everyone tracking their expenses?" The poster, a solo contractor, had just been through a CRA review. His words: "it took forever to go over the faded receipts, as my bookkeeper had to lean too hard on just my bank/credit card statements, and not the backup." He had the receipts. He had them organized by month in manila envelopes. What he did not have was any link between a receipt and a job, so the whole pile was tax documentation and nothing else.
The same thread produced the single best piece of advice in it, from a contractor running a crew. Asked what he does when one trip covers two jobs, he said: "This is where you get to be the super annoying guy getting three receipts in one trip at Home Depot. It's dumb to everyone around you except anyone who has been in your position."
That is the whole method. Everything below is detail.
By the numbers
IRS Publication 463, chapter 5: "You should record the elements of an expense or of a business use at or near the time of the expense or use and support it with sufficient documentary evidence. A timely kept record has more value than a statement prepared later when there is generally a lack of accurate recall."
The IRS is not making an administrative point there. It is making the same point about memory that your job cost report makes every month.
What does the IRS actually require on a receipt?
Four elements, and most store receipts already carry three of them.
IRS Publication 463 defines the standard directly: "Documentary evidence will ordinarily be considered adequate if it shows the amount, date, place, and essential character of the expense." The IRS small business recordkeeping guidance puts it slightly differently, saying supporting documents should identify "the payee, the amount paid, proof of payment, the date incurred, and include a description of the item."
Run a typical lumberyard receipt against that list. Amount, yes. Date, yes. Place, yes. Essential character, usually yes, because the line items are printed. So a normal receipt clears the bar on its own.
What it does not carry is the job, and that is not an IRS requirement at all. It is a you requirement. The tax authority only wants to know the expense was a business expense. You want to know whether the Harrison bathroom made money, which is a strictly harder question, and one your accountant cannot answer for you from a shoebox. If your job costing is already set up but the numbers look wrong, the cause is usually here rather than in the software, which is why QuickBooks stops reporting job profitability accurately for so many contractors.
Is a business credit card statement enough on its own?
No, and this is the most common shortcut in the trade.
The logic sounds airtight: put every business purchase on one card, keep personal spending off it, and the statement becomes your record. Several commenters in that r/Contractor thread recommended exactly this. IRS Publication 463 closes it: "a canceled check by itself doesn't prove a business expense without other evidence to show that it was for a business purpose."
A card transaction is weaker than a canceled check, not stronger. It shows a merchant name and a dollar amount. It does not show that the $412.86 at Home Depot was 40 sheets of drywall for a client's basement rather than a patio set for your own deck. The Reddit poster above had precisely this exchange with his reviewer, and described being asked to show that a Home Depot line was not a personal furniture purchase hiding inside a business total.
There is a second cost to statement-only tracking that has nothing to do with tax. A statement arrives once a month, 30 days late, sorted by date and merchant. It cannot tell you a job is bleeding while the job is still open, which is the only moment the information is worth anything. That is the same failure mode that makes estimated versus actual job cost comparisons useless when the actuals show up after closeout.
Do I really need a receipt for everything under $75?
Probably, and the famous $75 rule almost certainly does not mean what you have been told.
The rule is real and it is quotable. Publication 463 lists the conditions under which documentary evidence is not needed, and one of them reads: "Your expense, other than lodging, is less than $75." But look at what Publication 463 is. It is titled Travel, Gift, and Car Expenses. It governs a specific category of expenses that Congress singled out for heightened substantiation, which is why the relief valve exists there and not elsewhere. Your material purchases are ordinary business expenses governed by the general recordkeeping standard, where the guidance is simply to keep supporting documents.
Even if the exception did apply, it would be terrible advice for a contractor. Three $60 receipts skipped on a job is $180 of material cost that never lands on the job, which understates your cost, overstates your margin, and teaches you to underbid the next one. If you are already working out how to price materials and markup for customers, a cost base with holes in it poisons the whole calculation.
The threshold worth setting is not a dollar figure. It is: if it was bought for a job, it gets coded to that job.
What exactly do I do at the register?
Seven rules, in the order they happen. None of them take more than a few seconds.
- Buy on a supplier account, not a card, wherever you can. A charge account at the lumberyard, the plumbing house and the electrical house means an itemized invoice arrives by email or in a monthly statement without anyone photographing anything. One contractor described the vast majority of his company's purchases running through charge accounts so "there's a monthly backstop" against anything a crew member forgets.
- Give the job number when they ask for a PO. As a contractor on r/Construction put it: "It makes it faster/easier to enter at self-checkout or when dealing with the counter people 'do you want to put this on a PO?' YES! '2025_job number' or similar. Saves you from having to spell out some long client or project name." Now the job code is printed on the document itself.
- Use a job numbering scheme you can say out loud. Year plus a sequence beats a client surname. It survives two clients named Smith, it fits in a PO field, and a crew member can read it off a job sheet without spelling anything.
- One job per transaction. Ring up the Harrison material, pay, then ring up the Elm material separately. You will look strange. You will also never have to allocate anything.
- Buy tools on a different card than material. Tools are overhead or a depreciable asset depending on cost, not a job cost, and mixing them into job material is how a job looks 6% worse than it was. The same contractor above kept tool purchases on a dedicated card partly for warranty protection and partly so nothing had to be pencil-whipped out of a client's cost breakdown later.
- Capture before the truck moves. The r/Construction habit worth stealing verbatim: "I used to tell myself the truck wasn't loaded until the receipt got scanned in and I also put a label on my dash 'Got Receipts?'"
- Never let a crew member pay with a personal card. More on why in a moment, because the cost of this one is not the receipt.
Watch out
Rule 7 has a hidden price tag. In a July 2025 r/Construction thread, a small operator tried to return unused plumbing parts a former employee had bought. The employee had used his own card and had not given the company's Pro number, so, in the owner's words, there was "no way to connect the sale to us in HD's system." The return was refused outright. Home Depot's own receipt lookup page states the workaround he did not have: a Pro Xtra member who linked the purchase to their account can pull the receipt online and share it. A personal card purchase is not just a missing receipt, it is a material return you can no longer make.
How do I handle one receipt that covers two jobs?
Split it at the register. If you did not, split it at entry into two dated lines, and never let it become one line in a miscellaneous bucket.
The IRS is unusually clear on why the register split is cleaner. Publication 463: "Each separate payment is generally considered a separate expense." Two transactions are two expenses, full stop, each with its own document. One transaction covering two jobs is an allocation, and an allocation is a judgment you have to be able to reconstruct and defend.
When you are stuck with a combined receipt, do this the same day:
- Circle or highlight the line items belonging to each job on the receipt itself before you photograph it.
- Enter two expense lines, same date, same vendor, each coded to its job, with the amounts summing to the receipt total.
- Attach the same receipt image to both lines. Publication 463 notes you do not need to duplicate information already shown on a receipt, "as long as your records and receipts complement each other in an orderly manner."
- If the receipt has consumables that genuinely serve both jobs, such as a box of screws you will burn through on either, put them in overhead rather than inventing a 60/40 split you cannot justify.
The one thing not to do is create a "job TBD" or "shop" bucket with the intention of sorting it later. That bucket is where margin goes to die, and it is the same leak that makes contractors wonder how much profit a job should actually make when the number never matches the estimate.
Which capture channel should I actually rely on?
Rank them by how little human behavior they require. The phone camera, which every software vendor sells you, is the least reliable channel on the list.
| Capture channel | Human steps required | Job code carried? | Fails when |
|---|---|---|---|
| Supplier charge account, emailed itemized invoice | Zero after setup | Yes, if a PO was given | Counter staff skip the PO field |
| Pro account tied to phone number at checkout | One, give the number | No, but purchase is retrievable later | Crew uses a personal card |
| Delivery invoice from the supply house | Zero | Usually, it references the site | Will call pickups instead of delivery |
| Company card feed into your accounting system | Zero for the amount | No, needs coding | Every time, on its own |
| Phone photo of the paper receipt | Two, photo plus code | Only if the person codes it | Any busy day, any tired crew |
| Paper receipt in the truck | One, do not lose it | No | Thermal print fades, jeans go in the wash |
A bookkeeper who works with contractors described the realistic version of the last row in that r/Contractor thread: her clients text her a photo "of it on their front seat or clipboard," and she often has the transaction categorized "before they leave the parking lot and the receipt is destroyed in a pair of work jeans."
Two structural conclusions fall out of this table. First, every purchase you move onto an account is a purchase that no longer depends on anyone remembering anything. Second, the card feed and the receipt solve different halves of the problem, and neither is sufficient alone: the feed gives you the amount with no context, the receipt gives you the context with no guarantee it arrives.
If receipts, job costs and customer records live in four disconnected tools, the coding step never gets easier, it just moves. A custom CRM built around your actual job flow can carry the job number from the estimate through to the purchase and the cost report, so the number your crew reads at the counter is the same one your margin report uses.
Can I throw the paper away once I have a photo?
Yes, and for thermal receipts you arguably should.
IRS Publication 583 sets the standard for electronic records: "The electronic storage system must index, store, preserve, retrieve, and reproduce the electronically stored books and records in legible format. All electronic storage systems must provide a complete and accurate record of your data that is accessible to the IRS." It then says plainly that "the original hard copy books and records may be destroyed provided that the electronic storage system has been tested to establish that the hard copy books and records are being reproduced in compliance with IRS requirements." The detailed requirements sit in Revenue Procedure 97-22, which Publication 583 cites directly.
Publication 583 adds one detail worth knowing: the IRS "may periodically test your electronic storage system, including the equipment used, indexing methodology, software and retrieval capabilities," and that test "is not considered an examination."
Read the requirement list again and notice what it actually demands. Not an app. Not a subscription. It demands that records be indexed, preserved, retrievable and legible. A dated folder per job in cloud storage, with files named by vendor and date, satisfies every word of that. So does your accounting system's attachment feature. What does not satisfy it is a camera roll of 4,000 photos with no index, because "retrieve" is doing real work in that sentence.
The practical argument is stronger than the legal one. Thermal receipt paper darkens and fades with heat and light, and a receipt that has spent a summer on a truck dash can be unreadable within months. That is the literal complaint from the contractor whose reviewer had to work around "faded receipts." A photo taken the day of purchase is a more faithful record than the paper will be by the time anyone asks.
In Canada the CRA sets the same expectation with a different retention clock, requiring that you "keep your records for six years from the end of the last tax year they relate to," and noting that your records "must provide enough detail for the CRA to determine your tax obligations," which is where source documents come in.
How long do I have to keep them?
Longer than three years in several common situations, which is why most contractors just keep seven.
| Situation | Retention period |
|---|---|
| Standard, you owe additional tax (IRS) | 3 years |
| You omit more than 25% of gross income (IRS) | 6 years |
| Employment tax records (IRS) | At least 4 years after the tax is due or paid |
| Bad debt deduction or worthless securities (IRS) | 7 years |
| Fraudulent return, or no return filed (IRS) | No limit |
| Business records generally (CRA, Canada) | 6 years from the end of the last tax year |
| Assets and property | Until the period runs out for the year you dispose of it |
Source: IRS Publication 583, Table 3, and the Canada Revenue Agency's record keeping guidance. Note the asset row, because it catches contractors: records for a truck or a piece of equipment have to survive until the limitations period closes on the year you sell it, not the year you bought it.
What is the one number that tells me the system is working?
Coverage rate: the percentage of business card and account transactions in the last week that have both a receipt attached and a job code assigned.
Not total spend. Not receipts collected. The conjunction, because either one alone is worthless. A receipt with no job code is tax documentation. A coded transaction with no receipt is an assertion. You need both on the same line.
Check it every Friday. Under 90% and your job cost report is fiction, because the missing 10% is not random: it is disproportionately the small cash purchases, the crew runs, and the end-of-week chaos on your busiest jobs, which are exactly the jobs whose margin you most need to be right about.
The economics of doing this weekly rather than annually were put best by an engineering firm owner on r/Construction: "Taking half an hour a week to enter all your receipts from the week is way easier than spending 60 hours every year remembering why you spent $48.67 on ITEM 58385 at Lowe's way back in January." Publication 463 explicitly blesses the weekly cadence too, noting that "if you maintain a log on a weekly basis that accounts for use during the week, the log is considered a timely kept record."
The Friday twenty minutes
The entire office half of this system is one short session, in this order.
- Open the card feed. Every transaction from the last seven days, sorted by date.
- Match receipts to transactions. Emailed supplier invoices first, since those are already itemized, then photos.
- Code each one to a job. Anything that serves no specific job goes to overhead deliberately, not by default.
- List the exceptions. Any transaction without a receipt, and any receipt without a job. This list should be short, and it should be shrinking month over month.
- Chase the exceptions the same day. A crew member can still remember Tuesday on Friday. By the fifteenth of next month, nobody can.
- Glance at the three biggest open jobs. Material spend to date against the material line in the estimate. Not a full variance analysis, just a look.
- Fix the cause, not the instance. If the same supplier keeps producing uncoded purchases, the fix is a PO requirement on that account, not a reminder to yourself.
If step 4 is consistently long, the problem is upstream at the register and no amount of Friday discipline will solve it. Go back to the seven rules and find out which one is not happening.
What this buys you beyond a clean audit
A job coded receipt is the raw material for every useful number in a contracting business.
It gives you real material cost per job, which turns your estimating from a guess plus padding into a comparison against history. It gives you the ability to answer a client's change order question with the actual invoice rather than a recollection. It lets you spot a supplier price drift across jobs before it eats a season. And it is the input that makes job costing in QuickBooks Online or any other system produce numbers you trust rather than numbers you argue with.
None of that comes from the app. It comes from the 90 seconds at the counter where you say a job number out loud and ask for two receipts instead of one.
