Your subs get a login. Not a look at your margin.
Add a subcontractor to a job and the instinct is to keep them in a separate email thread, because putting them in the same system as your numbers feels like showing them your numbers. PieceWrk runs sub work orders, change orders, and payment on the same record your crew uses, with each sub’s login scoped to their own price, not yours.
Work orders
One work order per sub, per project. Never a second one for the same pair.
A subcontractor gets exactly one work order against a project. If the scope or the price moves, it moves through a change order, numbered in order and computed off the original price plus every change ahead of it, not a second work order that leaves two documents both claiming to be the real one.
- 01
Sign the agreement
Before a sub can see a work order, a punchlist, or anything else, they review and e-sign the subcontractor agreement in their own login: consent text, a hashed PDF, IP and timestamp on an audit trail, the same mechanism the customer contract uses.
- 02
Get assigned
A manager assigns the subcontractor to a project. That assignment is the whole scope of what their login can reach; nothing else in the company shows up.
- 03
Set the work order
Scope and price, one record per subcontractor per project. The pairing is locked at the database level, so a duplicate work order for the same sub and project gets rejected, not silently allowed.
- 04
Change it with a change order
Added scope, a price adjustment, extra days: each one is numbered and priced off the work order plus every change order ahead of it, computed server-side, never re-typed by hand.
Price privacy
A sub sees their own price. Not the job’s.
Once a sub has a login, the real question is what it can reach. PieceWrk scopes it two ways: to the projects they’re actually assigned to, and within those, to the numbers that are theirs. What you bid the job at, what you pay a different sub, and what the customer is paying you all live outside that scope.
What reaches a sub’s login
- Their own work order: the scope, the price, and every change order against it (the sub owner’s login only; their crew doesn’t get this screen).
- The punchlist for a project they’re assigned to, once it’s been walked.
- Selections tied to their scope, with the option’s cost and sell price stripped out before the list ever reaches them.
- Production they log themselves, and, for the sub owner, a statement built from their own approved entries.
What stays off it
- The job’s estimate, its markup, or the price the customer signed for.
- What you pay any other subcontractor on the job.
- Anything about a project they aren’t explicitly assigned to. It doesn’t come back as “forbidden”, it just isn’t there.
- For a sub’s crew members: a dollar figure of any kind. They log what got built, not what it’s worth.
That’s checked in the API layer, route by route, as each part of the sub experience has shipped, not by a setting someone has to remember to flip. This is one of the newer parts of PieceWrk, and it’s being hardened the same way: one route at a time, not all at once.
Getting paid
The sub bills you. Not the other way around.
Production against the job gets logged on the sub’s own login, priced off the job’s rate table (fixed, or a percent of what gets billed, set per sub or per service). From their approved entries, the sub owner generates their own statement for a pay period and submits it themselves.
Log production
Crews log what they built against the project’s rate table. A sub’s crew members can log it; they never see what it pays.
Submit the statement
The sub owner rolls their own approved entries into a statement for a date range and approves it themselves. A manager can also approve it in person.
Release it
Manager-only. An approved statement releases into a bill your bookkeeper picks up, with a push to QuickBooks as an explicit opt-in, not automatic.
Worth knowing
What’s built, and what isn’t yet.
The subcontractor agreement is e-signed in the app: hashed and timestamped like the customer contract. A work order’s own status field tracks draft, sent, signed, and void, but getting the work order itself signed happens outside PieceWrk today; that part hasn’t been built yet.
1099 filing is the same story as everywhere else in PieceWrk: the pay is tracked and reconciled here, and the filing itself happens in your accounting system.
Common questions
- Can a sub see what I’m charging the customer?
- No. None of the sub-facing routes return the job’s estimate, proposal, or contract price. A sub’s own login only ever shows their own work order price and their own change orders.
- Can a sub’s crew see what the sub gets paid?
- No. A sub owner’s login and a sub’s crew login are different roles under the same subcontractor record. Dollar figures on work orders, production, and statements are stripped before they reach a crew login; crew members log what got built, not what it’s worth.
- What can a sub do before they sign the agreement?
- Review it and sign it, and nothing else. Every other sub route is gated behind the signed agreement, so an unsigned sub can reach the agreement screen and no further.
- Do subs need a separate app?
- No. Subs log in to the same mobile app your crew uses. Their menu and their screens are scoped to what a sub role can reach (work orders, production, statements, and the punchlist for projects they’re assigned to) rather than a separate product.
Bring us a sub relationship that’s gotten messy.
The clearest test is a subcontractor whose scope has changed twice and whose last payment took three emails to sort out. That’s the one where a work order and a self-bill statement earn their keep.