For property managers

Furnace replacement invoices: the photo shows a furnace, the permit shows an inspector

A furnace dies in January, the HVAC company swaps it the next day, and the invoice comes with two photos: the old unit and a clean new one in the same closet. The photos may be perfectly real. But a photo of a new furnace shows a furnace. It doesn’t show which building it is in, or that anyone besides the contractor has looked at the work. In many cities a public record does show those things: the permit, kept by the city, not the contractor. This piece covers what that record shows, how to look it up, and what it can’t tell you. Denver and Salt Lake City are the examples because we read their own pages. It is not legal advice.

Why the permit is a different kind of record

Everything else in the file comes from the company sending the bill: the invoice, the photos, the model number. A permit record is kept by the city. It is tied to an address, and it shows whether an inspector came out and passed the work.

Whether a replacement needs one depends on the city, so check yours. Two examples:

We did not find a Salt Lake City page that says whether a like-for-like furnace swap needs a permit there, so we won’t say. Its records are searchable either way, as below.

What the photos can show

What they can’t

Checks before you pay

  1. Ask for the permit number. If the job needed a permit, the company pulled one and has the number. If they say none was needed, ask why. That can be a fair answer, but you should hear it.
  2. Look it up yourself. In Denver, the city says: “You do not need an e-permits account to check the status of permits or inspections.” Search by address or permit number on the Development Services tab. In Salt Lake City, the city’s instructions are to go to SLCPermits.com, choose “Check/Research Permits” under Building, and search by address or permit number.
  3. Match the address and the unit. In a multifamily building, check the record is for the right building and, if the city records it, the right unit.
  4. Match the contractor and the date. If the record names a contractor, it should be the company on the invoice, and the dates should fall around the day of the job.
  5. Check that it was finaled. Denver’s page says the record detail shows “if the permit is in progress, issued, or finaled”, and that “to view inspection results, go to Record Info > Inspections.” An issued permit with no final inspection means the paperwork started and nobody has passed the work yet.
  6. Ask for a photo of the new data plate and match the model to the invoice line.
  7. Ask for the original photo files, not pictures pasted into an invoice PDF, which have usually lost their camera record. Why, and how to ask for the originals.
  8. Drop this job’s photos in with the company’s earlier ones. The checker marks any two files in the same batch that are the same file, even under different names. A “new furnace” photo reused from another unit shows up that way, if it is the same file. A new photo of a different furnace won’t, which is why the permit record matters more than the picture.

If there is no permit on record

That is a question, not a finding. The city may not require one for that work. The record may be filed under a different form of the address; Salt Lake City’s own instructions say that “the less information you enter into the search fields, the better the search will function.” The permit may have been pulled but not finaled yet. Ask the company before you draw a conclusion. If the answer is that a required permit was skipped, that is between you, the company and the city, and it matters for more than the invoice.

Whether someone used AI on the photos

A picture of a new furnace in a closet is easy to generate now, and some generators write a mark into the file saying so. The checker reads those marks in photos, and the notes some phone editors leave when generative AI was used to alter a photo. A file with no such mark is not proven real. Most fakes and most genuine photos look the same to a file reader once they have been through a chat app or a screenshot. And even a perfectly genuine photo doesn’t say which building it was taken in.

The limits, stated plainly

Related: what a contractor’s “after” picture actually proves, and AC recharge invoices and pounds of refrigerant.


ImposterShield reads the evidence inside image and video files. It runs in your browser and uploads nothing. If a file has been stripped, it says so. If it has not read a file, it says that too.

Check the HVAC company’s photos before you pay

Drop this job’s photos on the page together with the company’s earlier ones. It shows what each file says about when it was made, and marks any two that are the same file. A saved report lists each file’s SHA-256.

Open the checker