How to record it: a journal entry library for contractors
Plain-English journal entries for the transactions contractors actually have: deposits, subs, materials, trucks, owner money. Every entry shown in full, with the debits and credits.
The short answer
A journal entry records one transaction as two equal halves: what your business received (the debit) and where it came from (the credit). Every entry on this page is shown in full, balanced, with the accounts a small contractor actually uses, so you can copy the shape of the entry into whatever system you keep your books in.
Most bookkeeping guides explain the theory of debits and credits. Contractors do not have a theory problem. They have a what do I do with this specific receipt problem, usually at 9pm, usually with the truck still loaded.
So this section is a library of real transactions. Each page takes one thing that happened, shows the exact entry, explains why each side is what it is, and flags the mistake people usually make with it.
The one rule underneath all of them
Every transaction has two sides, and they are always equal. That is not a formality, it is the error check. If you can name what the business got and what it gave up, you have the entry.
Take the simplest case. You pay $540 for lumber. The business got lumber for a job, which is the debit. The business gave up $540 of cash, which is the credit. Two sides, equal amounts, done. The complications in the pages below are only ever about which account each side belongs to, never about whether there are two sides.
| Account type | A debit | A credit | Examples |
|---|---|---|---|
| Assets | Increases | Decreases | Bank, receivables, work in progress, trucks |
| Liabilities | Decreases | Increases | Payables, loans, customer deposits |
| Equity | Decreases | Increases | Owner's capital, owner's drawings |
| Revenue | Decreases | Increases | Job income |
| Expenses | Increases | Decreases | Cost of goods sold, insurance, fuel |
You do not have to memorize that table. It is here because when an entry in one of these guides looks backwards, this is the thing to check it against.
The four entries contractors get wrong most often
- Customer deposits booked as income. The money is in the account, so it feels like revenue. It is a liability until the work is done, and treating it as income inflates the profit you pay tax on.
- Loan payments booked entirely as an expense. Only the interest is a cost. The rest is repaying debt, and getting this wrong leaves a loan on your books that never goes down.
- Business costs paid personally, never recorded at all. The most expensive habit in the trades, because the deduction you never recorded is the deduction you cannot take.
- Job costs that never get tagged to the job. They do not disappear, they just make the job look more profitable than it was, and then you bid the next one at that number.
Guides in this section
How to record a customer deposit
A customer deposit is not income yet. Here is the exact journal entry, why it goes to a liability account, and what happens to it when the job finishes.
Updated July 27, 2026
How to record a payment to a subcontractor
The journal entry for paying a sub, how it differs when the cost belongs to a job, and what you have to track during the year so 1099 time is not a scramble.
Updated July 27, 2026
How to record materials bought for a specific job
The journal entry for job materials, why the receipt should hit the job and not a general supplies account, and how to handle materials you buy but do not use.
Updated July 27, 2026
How to record a work truck bought with a loan
The journal entry for a financed vehicle, why the loan payment is not an expense, and how to split each payment between principal and interest.
Updated July 27, 2026
How to record a business expense you paid for personally
You grabbed job materials with your personal card. Here is the journal entry, why it goes to owner's equity, and how to keep business and personal money straight without a second bank account.
Updated July 27, 2026
Back to all guides, or see how job costing works in WIPKeep.