Costs & changes
Direct Cost Import
Direct Cost Import takes a stack of vendor invoices and creates them as direct costs in Procore. Each invoice becomes one direct cost. Each invoice line becomes one line item against a budget code.
Note
Draft invoices only
Everything this tool creates is an invoice-type direct cost in Draft status. Expense and payroll types, and other statuses, are set in Procore.
What it does
- Extracts invoice lines from PDFs, images, CSVs, and spreadsheets with AI
- Puts them on the Direct Cost Import sheet with dropdowns for vendor, budget code, and unit
- Validates every row against the project as you edit, and catches duplicate invoices
- Creates the direct costs in Procore and writes a link back to each row
Prerequisites
- The Sandspit Excel add-in installed and signed in, with a project selected
- Standard or Admin on the project's Direct Costs tool. Read Only shows Needs Standard on Direct Costs
- Vendors and budget codes set up on the project. Sandspit validates against them and can't create them from this tool
- A workbook bound to one project. See Workbooks and projects
Set up the sheet
- Open Direct Cost Import from the task pane home
- Click Set up Direct Cost Import
Sandspit adds the Direct Cost Import sheet and fills the shared Picklists sheet. The task pane has three tabs: Bulk Import, AI Extraction, and History.
The sheet
The first eight columns describe the invoice. The rest describe one line. Rows with the same vendor and invoice number become one direct cost.
| Column | Required | Notes |
|---|---|---|
| Invoice Number | Yes | Groups lines into one direct cost with the vendor |
| Vendor | Yes | Dropdown of project vendors |
| Status | Set for you | Always draft |
| Direct Cost Date | Yes | |
| Received Date, Payment Date, Terms, Description | No | Payment Date is the date paid, not the due date |
| Budget Code | Yes | Dropdown. The Procore WBS code, so there is no separate cost code or cost type column |
| Budget Description | No | Fills from the budget code |
| Line Item Description | No | |
| Quantity, Unit Cost, Amount | Amount, or both quantity and unit cost | If all three are present they must agree |
| Unit of Measure | No | Dropdown |
| Sync Status, Sync Message, Procore Link | Computed | Written by Sandspit |
Add rows from invoices
- Open the AI Extraction tab
- Drop files on Drop invoices here. PDF, PNG, JPG, WEBP, CSV, and Excel files are accepted, up to 25 MB each
- Pick a Line item format. Grouped rolls charges up by budget code, then vendor. Detailed keeps every invoice line
- Click Add items to sheet
Rows are appended below what is already on the sheet. Every file type goes through extraction, including spreadsheets.
Add rows by hand
Type or paste into the sheet. Give each line the invoice number and vendor, and Sandspit groups them. A pasted copy of an already-synced row is treated as a new invoice.
Fix what the review flags
The Bulk Import tab reviews the sheet continuously. The card at the top counts direct costs and lines, and totals amount, vendors, and budget codes. Rows with a problem are grouped by issue:
- Vendor not in Procore and Budget code not found: use Map to existing to search and pick the right value. Creating them happens in Procore
- Duplicate invoice: the same vendor and invoice number appears twice on the sheet
- Line amount is required, Invoice number is required, Direct cost date is required, Unit of measure not allowed: fix the cell
Sync
The sync button is disabled while any issue remains, so a batch goes as a whole. Click Sync 12 changes to Procore. Sandspit creates the direct costs in the background and shows Creating in Procore with a count. On success each row shows Synced and a Procore Link, and the task pane lists the created direct costs with Open links. Already-synced rows are never sent again. After a clean run the button reads Check for new rows.
If Procore already has an invoice with the same vendor, number, and date, the row fails with that message rather than creating a duplicate. Edit a failed row and its status clears so you can retry.
Limits
- Creates only. Editing an existing direct cost happens in Procore
- Invoice type and Draft status only
- Source files are not attached to the direct cost
- Up to 1,000 direct costs per sync
- No inline vendor or budget code creation. Add them in Procore, then refresh Direct Costs picklists
Troubleshooting
- "Vendor does not match this project": the vendor is missing from the project directory, or the name is ambiguous. Map it, or pick the dropdown value that ends in the vendor ID
- "Amount must match Quantity × Unit Cost": clear one side or correct the arithmetic
- "An invoice with this vendor, invoice number, and Direct Cost date already exists in Procore": Procore rejected a duplicate. Find it in Procore
- Submitted with no result: the batch reached Procore but the reply was lost. Refresh results before retrying
- "Direct Cost Import sheet is missing": the sheet was renamed or deleted. Run setup again
Note
Have questions? Reach out to our support team at [email protected].