Export Profiles (CSV for POS & ERP upload) Coming
ComingThis feature is designed but not in DimSum yet. This page describes how it will work.
Save an export layout once (which rows, which columns in which order, header names, delimiter, number and unit formats, file name) and produce the exact CSV file your POS or ERP system expects, on every job, in one click.
Overview
Many lumber yards and contractors do the same thing with BisTrack, Agility, Spruce, QuickBooks or similar systems: the takeoff software isn't the final system, it feeds one.
Exports happen only on the Reports page — including these.
An Export Profile is a saved recipe for that file. Unlike a report, it isn't about looks; it's about getting exactly the columns, order, headers, delimiter and formats the other system accepts, with no manual cleanup in Excel.
- Any number of profiles per company (one per system, or one per customer's system).
- Stored in your
.tsumtool libraries and shareable, and saved as a file inside the.dsumof every project that uses one, like report templates, so the same file comes out on any machine. - Built on the same data, filters, grouping and combine options as the Report Designer.
- Direct "connections" to specific POS/ERP systems (sending the data without a file) come later, as plugins. For now, DimSum writes the file and you upload it.
Where to find it
| Place | What it does |
|---|---|
| Reports tab → Export Profiles | Create, edit, run and preview profiles |
| Removed — exports leave only from the Reports tab | |
| Run report set | Include a profile in your "End of job" set with your marked-up plan and count sheet |
Tool Designer / .tsum libraries | Where profiles are saved and shared |
How to use it
Create a profile for your POS (walkthrough)
- Reports → Export Profiles → New. Name it, e.g. "POS Upload – Yard".
- Rows (data source): Parts. Filter:
{Type} = "Material" AND {Qty} > 0. - Combine: On, by Item #, so each SKU appears once with its total quantity across all levels and pages.
- Columns: add them in the order the POS expects. For each column set:
- Header text, exactly as the POS wants it (e.g.
SKU, notItem #), - Source: a property (
{Item #}), a project value ({Job > Job #}), a fixed value ("LUMBER"), or a formula, - Format: number of decimals, no thousands separator, dates as
YYYY-MM-DD, lengths as decimal feet or inches (never12'-6"unless wanted), - Value map (optional): translate DimSum values to the POS's codes, e.g.
sht → SH,ea → EA.
- File settings: delimiter (comma, tab, semicolon, pipe), header row on/off, text quoting, encoding (UTF-8 or Windows-1252), line endings (CRLF/LF), file name pattern.
- Preview the first rows exactly as they'll be written. Rows that are missing a required value (e.g. no Item # because a part never list-matched) are shown in red.
- Save. From now on: Export → POS Upload – Yard writes the file to the
Exports/folder, ready to upload.
Handle rows the POS can't accept
- Mark a column Required (e.g. SKU). Rows without it are skipped and listed in a warning, or block the export, your choice per profile.
- The warning links to the Estimating tab's Needs attention list. (That prompt belonged to the old List Matching design; List Matching is now the Advanced Part — — which flags No material matches these conditions there instead.)
*Dropped — There is no Format = Excel (.xlsx); every profile writes CSV.
Options & settings
Profile settings
| Setting | Options | Default |
|---|---|---|
| Format | CSV | CSV |
| Data source | Parts, Instances, Assembly Layers, Members, Materials… (as in the Report Designer) | Parts |
| Filter | Expression or Condition Builder | None |
| Group / Sort | Any properties | Item # |
| Combine | Off / by Item # / by any properties | By Item # |
| Missing required values | Skip and warn / Block export | Skip and warn |
| *Dropped — |
Column settings
| Setting | What it does |
|---|---|
| Header | Exact header text |
| Source | Property, project/settings value, fixed text, or formula |
| Format | Decimals, rounding (only if you ask for it), thousands separator, date format, length/area units (decimal ft, inches, ft-in) |
| Value map | Lookup table from DimSum values to the target system's codes (can be a Dynamic List) |
| Required | Row is invalid without it |
| Max length | Truncate or warn for fields with a size limit |
File settings
| Setting | Options | Default |
|---|---|---|
| Delimiter | Comma, Tab, Semicolon, Pipe | Comma |
| Header row | On / Off | On |
| Quoting | Quote text only / all / none (with escaping) | Text only |
| Encoding | UTF-8, UTF-8 with BOM, Windows-1252 | UTF-8 |
| Line endings | CRLF (Windows) / LF | CRLF |
| Decimal separator | . / , | . |
| File name | Pattern with properties, e.g. {Job > Job #}_POS_{TODAY()}.csv | {Job > Name}_{Profile Name}.csv |
| Folder | Exports/ next to the .dsum, or any folder | Exports/ |
Examples
Changed. Parts no longer have a built-in Item #, Report Section, Material Unit Cost or Material / Labor Type. In the example below read
{Item #}as your own Item # property (or{Product Number}),{Material Unit Cost}as{Cost Each},{Report Section}as{Division}, and the{Type} = "Material"filter as a filter on{Trade}or{Division}.
Worked example: "POS Upload – Yard"
Profile columns:
| # | Header | Source | Format / map |
|---|---|---|---|
| 1 | SKU | {Item #} | Required |
| 2 | Description | {Name} | Max 40 characters |
| 3 | Qty | {Qty} | 0 decimals, no thousands separator |
| 4 | UOM | the part's unit | Value map: ea → EA, sht → SH, tube → TB, box → BX. folded Qty Unit into Qty, so the unit is set on the part rather than being a property of its own; how a report or profile spells that reference is to confirm |
| 5 | Price | {Material Unit Cost} | 2 decimals, no $ |
| 6 | Job | {Job > Job #} | Text |
| 7 | Section | {Report Section} | Text |
Settings: CSV, comma, header row on, quote text only, UTF-8, CRLF, combine by Item #, filter {Type} = "Material" AND {Qty} > 0, file name {Job > Job #}_POS_{TODAY()}.csv.
Using the Material List data from the Report Designer (Example A), job # 24-118, exported, the file 24-118_POS_2026-09-22.csv contains:
SKU,Description,Qty,UOM,Price,Job,Section
210-12,2x10x12 #2 SPF,2,EA,17.40,24-118,Main Level Floor
SF-34,"3/4"" T&G Subfloor 4x8",43,SH,38.50,24-118,Main Level Floor
ADH-01,Subfloor Glue,11,TB,6.25,24-118,Main Level Floor
NL-8D,Nails 8d,3,BX,42.00,24-118,Main Level Floor
26-09,Studs 2x6x104 5/8,118,EA,4.85,24-118,Main Level Walls
26-16,Plates 2x6x16',27,EA,19.60,24-118,Main Level Walls
HGR-210,Face-mount hanger 2x10,2,EA,2.15,24-118,HardwareNotes:
- The inch mark in
3/4" T&Gis inside a quoted field, so it's written as""(standard CSV escaping). Descriptions without quotes or commas aren't quoted. - Quantities are exactly what the part formulas produced (43 sheets, 11 tubes). The profile doesn't round; if a Qty were 42.8 and the POS needs whole numbers, set the column's format to "round up to 0 decimals" in the profile or fix the part formula (better, so reports and exports agree).
- Check: 7 rows; quantity × price sums to the same $2,990.85 material total as the report (34.80 + 1,655.50 + 68.75 + 126.00 + 572.30 + 529.20 + 4.30).
- The column set above is an example. the real POS headers will replace it once a sample CSV is available.
Tab-delimited ERP import with lengths
Profile "ERP – Beams": data source Members filtered to beams, columns ITEM, QTY, LEN_IN ({Ordered Length} in inches, 0 decimals), PLIES. A 2-ply LVL ordered at 16' exports as LVL-1.75x11.875 2 192 2 (16 × 12 = 192 inches).
Tips & shortcuts
- Match headers character for character with what the POS import screen expects; most import failures are header typos.
- Use Combine by Item # so each SKU appears once.
- Keep Item # / SKU values in your Dynamic Lists identical to the POS item codes. List Matching — an Advanced Part — then fills them in automatically.
- Add the profile to your End of job report set with the marked-up plan and count sheet.
- Use a value map list for units of measure instead of changing units on every part.
Rules, limits & edge cases
- Rows without a required value are skipped (and listed) or block the export, per profile.
- Exports never change project data.
- Trial exports carry a leading "DimSum Trial" row; remember to delete it before uploading, or wait until the license is activated.
- A CSV can't hold formatting.