Every PDF-to-ESX converter on the market claims it produces files that import into Xactimate. The question worth asking is not what the file looks like inside, but whether it opens cleanly and reads as the estimate the carrier wrote.
This article covers what an ESX file holds, what Xactimate does with it on import, and how to tell whether a file is ready to send. You do not need the format specification to judge a file. you need the outcome: it opens, the lines are real, and the totals match the source.
1. One File, One Job: An Estimate Xactimate Opens
An .esx file is a single self-contained estimate document. Xactimate either opens it as a working project or rejects it with "Invalid file format" before it looks at a single line. There is no middle ground, which is why how a file is built decides whether it is useful to you.
The file carries the whole estimate, plus any photos or other supporting material that traveled with it. You do not have to inspect it to judge it: it either opens in Xactimate or it does not, and if it opens, the estimate it shows is either the one the carrier wrote or something that drifted. The checks further down cover what that means in practice.
Reading a file without the spec
A real Xactimate file is built to open inside the estimating software, not in a text editor. To a text editor it looks scrambled, and that is by design: it carries the claim's pricing, and it is meant to be read by the program that prices it. A file that reads as clean plain text is not a Xactimate project file, whatever its extension says.
To see this on a real file, walk the sample ESX and SKX walkthrough: the sample is small on disk and opens as a full working document, and sketches and estimates behave the same way.
2. What the Document Carries
The document holds the estimate's identity, its sections, and its line items, and Xactimate reads it as one structured project. Two things show up in a file that will not import:
- A fixed pricing block that should not be there. Real files do not carry a pre-computed totals block; Xactimate prices from its own list on open.
- A line-item structure Xactimate does not expect. A document that groups lines in the wrong shape is rejected by current Xactimate releases.
Both are structural problems a converter either respects or does not. A trusted file is one built the way Xactimate expects, without you having to know the details.
3. Contractor Mode and Carrier Mode
Every Xactimate project is written in one of two pricing contexts, and the file carries which one it is:
- Contractor mode. retail/contractor pricing, where overhead and profit typically apply.
- Carrier mode. insurance context, matching the carrier-approved RCV and excluding O&P.
The mode and the O&P treatment travel together. A file that mixes them prices the claim wrong, so it matters that the converter you use writes the mode the job calls for.
4. Line Items and Their Linkage
The part of a file that fails silently is the linkage between a line on the estimate and the code it prices against. Getting it wrong is the most common silent failure in generated files, and it is invisible until the totals move.
What matters to a buyer, without the element-level detail:
- The line carries no baked-in price. Xactimate prices each line from its own loaded list; a file that writes prices into the line is a known import reject.
- The line links to its code. When the linkage is missing, the line can fail to re-link on import and show up unpriced as "Not in Price List".
- The sketch link survives. A line that belongs to a sketch keeps that classification, or it will not re-link cleanly.
F9-style notes are carried as their own attached elements, which is why "preserves F9 notes" is a real feature rather than a checkbox. a converter that drops them loses the explanation behind the line.
5. CAT|SEL Codes: The Language Xactimate Prices In
A line item's identity is cat|sel. the trade category plus the selector that names the exact item, for example RFG|300S for roofing (architectural shingles). Xactimate prices the line from that code against the list loaded in your copy.
The most common blocking defect in a generated file is a code carrying a character Xactimate does not allow. When catalog data gets corrupted, stray characters can leak into a code, and a file containing one is rejected on import with "Invalid file format". or worse, imports with a broken line. It is worth checking every code before a file goes to an adjuster.
There are dozens of categories (RFG roofing, PNT painting, SFG soffit/fascia/gutter, DRY drywall, DMO demo, INS insulation, WDW/WDA windows/doors, HVC HVAC, ELE electrical, SDG siding, and more). The standard Xactimate code universe covers virtually all of them, and the free code lookup names any code you meet.
6. What Xactimate Does on Import
What happens at import time is what most people actually care about:
- Xactimate reads each line's code and looks it up against the currently loaded price list.
- It reprices against the list loaded in the app, not the one recorded in the file. This is why the same file can show different totals on different machines.
- Any price recorded in the file is history; it does not override the price-list lookup.
- Codes not present in the loaded list show as "Not in Price List" on that line.
In other words: the file is a structure plus an identity, not a priced document. A converter that bakes prices into the file is fighting the platform; one that gets the structure right and leaves pricing to Xactimate is working with it.
7. How to Verify an ESX File Before You Import It
You do not need to be a format expert to catch the common failures. Run these checks on any file before it goes to an adjuster. or paste it into our free ESX File Validator, which automates all of them in your browser.
- Open the file in Xactimate. It either loads as a working project or it does not; if it does not, stop there.
- Check the estimate reads right. The sections, line items, and quantities should be the ones the carrier wrote.
- Confirm the total reconciles with the source document before the file leaves your desk.
- Scan every code. A line carrying a character Xactimate does not allow is a red flag. it is the defect that returns "Invalid file format" on someone else's machine.
- Look at the flagged lines. Anything the converter could not ground keeps its printed price and is marked for review.
- Keep every line priced from your PDF. A file that has changed the numbers silently is the one to walk away from.
8. The Receipt: Where These Rules Come From
This is not theory. The rules above come from real-world conversion work, files that imported cleanly and files that didn't, and the checks that separate them.
The point: anyone can claim to be "accurate." Publishing the failure modes and the import rules is what separates a converter from a format lab, and it is why every ESXPress export runs the structural checks in this article.
9. What This Means for Your Workflow
If you are a contractor or supplementer buying ESX conversion, the format knowledge above is your buying checklist: does the tool preserve the price-list/line-item linkage? Does it price every line for import? Does it keep calc == qty? Does its output match the PDF's RCV on a real claim? Those questions separate tools that ship files from tools that ship headaches.
ESXPress converts carrier PDFs to import-ready ESX files in about two minutes, with every line resolved against the SEL dictionary, automated checks that flag anything it can't resolve, and the structural checks in this article run automatically on every export. The free validator at /tools/esx-validator gives you the same checks on any file, no signup required. Ready to convert a scope instead of checking one? Start at the PDF to ESX converter.
Still choosing between converter tools rather than checking a file? The comparison hub covers each option in turn, the ESXPress vs ClaimsFlow page lays out free tiers, line limits, and what each tool checks after conversion.
Importing the finished file is a step of its own: how to import an ESX file into Xactimate walks the command, the merge-or-open choice, and the reprice prompt, plus what to check before and after.
Want to see the format working on your own scope? Start free, 5 conversions a month, no card, and convert your first estimate in about two minutes →
Related: the ESX file explainer, the PDF to Xactimate walkthrough, and the import into Xactimate guide.