You converted the carrier's PDF, imported the ESX into Xactimate, and the total came back… different. Sometimes higher. Sometimes brutally lower. If it's ever happened to you, you know the feeling: did I do something wrong? Is the file broken?
I've been on both sides of this. And after months of working with ESX exports, I can tell you exactly what's happening — with real numbers, not vibes.
Key Insight: Xactimate reprices every imported line against the price list currently loaded in your copy of Xactimate. The price-list stamp inside the file (e.g., OKAD8X_SEP24) records what the file was priced on — it does not control the reprice. Predicted reprice swings reach +34% in one direction and -31.5% in the other, depending on the file and the codes.
The Mechanism: It's the Price List, Not Your File
Here's the sequence every imported ESX goes through:
- Xactimate reads the line items and their CAT|SEL codes (e.g., RFG|300S for laminated shingles).
- For each code, it looks up the price in the price list currently loaded in your copy — not the list the file was priced on.
- It applies the price variant for the line's activity code: install (+), removal (-), or add (&).
- It writes the new unit prices and recalculates the total.
That's the whole mechanism. It's not corruption, not a converter bug, not Xactimate being out to get you. It's a repricing event, and it happens on every fresh import. The file's own priceList stamp (plus its plModifiedDateTime) is metadata about the past — Xactimate prices for the present.
What a Reprice Actually Does
We ran a local reprice simulation — exports parsed line by line, with every line compared against current price-list data. Here's what it predicted:
| Example | Price-list stamp | Predicted reprice |
|---|---|---|
| Example A — priced on a September 2024 list | OKAD8X_SEP24 | +34% |
| Example B — priced on a December 2023 list | OKAD8X_DEC23 | -31.5% (comparable subset) |
Percentages are computed on the comparable subset — the lines where both the file price and a current list price were known. In Example A every line was comparable (+34.0%); in Example B the comparable subset moved -31.5%, with the remaining lines unpriced in the current catalog.
Two files, two directions, one mechanism. Example A was priced on a September 2024 list; reprice it on current data and it climbs 34%. Example B was priced on a December 2023 list — with the same codes — and the current list actually prices many of its lines lower, so the file would drop 31.5%. Same mechanism, opposite outcomes. That's why "reprice" feels random when you don't know what's happening under the hood.
(For the record: this was a local simulation using the exports' actual contents and current price-list data — we did not run Xactimate itself on these files. The point is the mechanism, and the direction of the moves is consistent with the price-list math.)
Where the Big Moves Come From
Repricing isn't uniform — it's driven by a handful of line types. The biggest movers in our simulation:
- Chimney flashing: one example file priced it at $1,250.00/EA while the current list prices it at $403.79/EA — a single line moved by more than $800. If your old file has hand-keyed or inflated prices on specialty items, the reprice clamps them to list.
- Laminated shingle removal: one example file priced removal at $287.07/SQ while the current list prices the removal activity (-) at $59.58/SQ — labor only. Removal and install are not the same price, and the activity code decides which one you get.
- Steep roof, drip edge, vents: these move between list editions as labor and material components update monthly.
Pro tip: The single most common cause of a "wrong" reprice is an activity-code mismatch — a removal line coded as an install prices at $251.75/SQ instead of $59.58/SQ (4.2x). Check the activity code before you import, not after.
What to Do About It
You can't stop Xactimate from repricing on import — it's how the platform works. But you can stop being surprised:
- Know what list you're on. Check the price list loaded in your copy of Xactimate. If you're importing files priced months ago on older editions, expect movement.
- Compare before you ship. After import, run the line-by-line comparison against the PDF total. Every line that moved, and why, should be explainable — list edition, activity code, or a flagged "not in price list" line.
- Fix activity codes first. If a tear-off priced as an install, that's the biggest single-line error available to you. Get removals as removals.
- Check the current list prices before you quote. Our free Xactimate Reprice Check lets you paste a few lines and see what they'd price at against current-list data — before you import anything.
- Use a converter that verifies. ESXPress surfaces the PDF-verified totals (RCV, O&P, tax, depreciation, ACV) from every conversion, so you have the before-picture locked in before Xactimate ever touches the file.
The Bottom Line
Repricing on import is Xactimate working as designed. The file's price-list stamp is a record of the past; the reprice is the present. Know your list, check your activity codes, compare before you ship — and when a total moves by tens of thousands of dollars, you'll know exactly which lines did it and why.
Want to see the mechanism on your own numbers? Try the free Reprice Check, then convert your full scope with ESXPress — free 14-day trial, card required, no charge until it ends. Plans and details on the pricing page.