Bulk edit a Procore subcontractor invoice from Excel
Have you ever re-keyed a sub’s fifty-line invoice into Procore, one schedule of values line at a time?
The sub sends their invoice as a spreadsheet, and Procore wants it entered one schedule of values line at a time. Put both in the same workbook and let a lookup do the typing.
Procore has no import for the amounts on a subcontractor invoice. The schedule of values card is entered line by line, so an invoice the sub exports from their own billing system gets re-keyed. The shortest path that holds: pull the Draft invoice into Excel, paste the sub’s export on a sheet beside it, match the lines with a lookup, paste the amounts into the editable columns as values, review, sync.
Pull the Draft subcontractor invoice into Excel
Open Subcontractor Invoices in the Sandspit task pane, pick the invoice, and click Pull into Excel. Every schedule of values line comes across, including change order lines, with the scheduled value, what was completed and stored previously, and the four amounts Procore lets you edit.
Watch out: the invoice has to exist in Procore first. Sandspit updates lines on an existing Draft or Revise and Resubmit invoice, it does not create one.
Put the sub’s export on its own sheet
Paste the spreadsheet the sub sent into a new sheet in the same workbook, not into the Subcontractor Invoice sheet. You need three columns from it: the line description, work completed this period, and materials presently stored.
Match the sub’s lines to the Procore lines
The sub’s line numbering rarely matches Procore’s, so add a helper column beside the Subcontractor Invoice table that looks up each Procore line in the sub’s sheet by description or scheduled value and returns the this-period amount. Change order lines carry the CCO number in the Change Order column, which is usually how the sub labels them too.
Watch out: a line the sub billed that finds no match is scope that is not on the commitment yet. That is a change order conversation, not a typing job.
Paste the amounts in as values
Copy the helper column and paste it as values into Work Completed This Period, then do the same for Materials Presently Stored and, if the sub shows it per line, Work Retainage Held This Period. Enter plain numbers, and zero rather than blank to clear a value. Locked cells are grey, and every cell you change turns yellow.
Watch out: completed and stored to date has to stay between zero and the line’s scheduled value. A sub who bills past what is left on a line is refused at sync.
Review and sync to Procore
The task pane lists each changed line with before and after values. Click Sync 24 lines to Procore. Sandspit first checks every changed field against Procore and refuses the whole run if anything moved since your pull, then sends the lines, reads the invoice back, and the totals on the sheet become Procore’s totals.
Why this one hurts
A subcontractor invoice is fifty lines of someone else’s numbers. The sub already decided what to bill and sent it in a format that is nearly right. Then it gets typed into Procore’s schedule of values card one line at a time, with the export open in another window, on a commitment where the line numbers do not match the sub’s.
What Procore supports natively
- Invite to Bill. The invoice contact enters and submits their own invoice in Procore. The right answer when the sub will do it.
- Create on behalf of the invoice contact. An invoice administrator creates the invoice and fills the schedule of values card by hand.
- CSV import for the Subcontractor SOV. Loads the line breakdown on the commitment, not the amounts on an invoice.
None of them take a spreadsheet of billing amounts. Checked against Procore’s support documentation on September 10, 2026.
Frequently asked
Can I import a subcontractor invoice into Procore from a spreadsheet?
Not the billing amounts. Procore’s CSV import on a commitment loads the Subcontractor Schedule of Values, which is the line breakdown on the contract, not the amounts billed on an invoice. The invoice’s schedule of values card is entered one line at a time while the invoice is in Draft or Revise and Resubmit. Checked against Procore’s support documentation on September 10, 2026.
Shouldn’t the sub just submit the invoice in Procore themselves?
When they will, yes. Procore’s Invite to Bill lets an invoice contact enter and submit their own invoice for the billing period. Many subs bill from their own system and send the export anyway, and Procore’s own guidance describes invoice administrators gathering those and creating the invoice on the contact’s behalf. This guide is for that case.
Which fields can I edit on a subcontractor invoice line?
Four: Work Completed This Period, Materials Presently Stored, Work Retainage Held This Period, and Work Retainage Released This Period. Materials retainage columns are read-only for now, and unit-based lines are fully locked. Editability follows your Procore permissions per field, so a cell Procore would not let you edit is locked in the sheet rather than failing at sync.
The sub’s line numbers do not match Procore’s. How do I match them?
Match on what both sheets share. The Subcontractor Invoice sheet carries Line, Budget Code, Description, Scheduled Value, and the change order reference for every row, so a lookup on description or scheduled value lands most lines, and the CCO number catches the change order lines. Anything left over is worth a look before you sync.
Can I add a line the sub billed that is not on the invoice?
No. An invoice’s lines are the commitment’s schedule of values plus its approved change orders, so a missing line means the commitment change order behind it has not been approved. Sandspit does not add or remove lines, change status, or add comments. It updates amounts on lines that already exist.
Procore Project Financials, commitments with a schedule of values. Needs Standard or Admin on the Commitments tool. Only the latest invoice on a commitment accepts line updates. Beta, enabled per company.
Step-by-step mechanics, every column, and every error message are in the documentation.

