Sandspit

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

  1. Open Direct Cost Import from the task pane home
  2. 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.

ColumnRequiredNotes
Invoice NumberYesGroups lines into one direct cost with the vendor
VendorYesDropdown of project vendors
StatusSet for youAlways draft
Direct Cost DateYes
Received Date, Payment Date, Terms, DescriptionNoPayment Date is the date paid, not the due date
Budget CodeYesDropdown. The Procore WBS code, so there is no separate cost code or cost type column
Budget DescriptionNoFills from the budget code
Line Item DescriptionNo
Quantity, Unit Cost, AmountAmount, or both quantity and unit costIf all three are present they must agree
Unit of MeasureNoDropdown
Sync Status, Sync Message, Procore LinkComputedWritten by Sandspit

Add rows from invoices

  1. Open the AI Extraction tab
  2. Drop files on Drop invoices here. PDF, PNG, JPG, WEBP, CSV, and Excel files are accepted, up to 25 MB each
  3. Pick a Line item format. Grouped rolls charges up by budget code, then vendor. Detailed keeps every invoice line
  4. 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].

Previous
Change Events

Schedule a Demo

See how Sandspit helps construction teams review budgets, forecasts, and change-event intake before it syncs to Procore.