Return rejected subcontract work without losing its original identity
For procurement, stores and subcontract operations teams · Compare approaches
TL;DR — what you’ll learn
- Keep rejected subcontract receipts tied to the original parent heat or batch ID and outward dispatch reference instead of issuing a fresh raw-material transfer.
- Distinguish first-pass accepted pieces, rework-return pieces in vendor custody, and irrecoverable scrap across every return cycle.
- Require a linked nonconformance reference and reinspection record before reworked pieces enter unrestricted stock.
- Prevent rework return receipts from triggering a duplicate subcontract service invoice.

Illustrative factory raw-material stores and receiving counter; not a client facility.
A factory sends 150 machined valve bodies (parent heat lot HT-884, outward dispatch JW-301) to a subcontractor for hard-chrome plating. The subcontractor delivers all 150 pieces on inward receipt GRN-712. Incoming inspection accepts 134 pieces, scraps 4 pieces due to handling damage, and rejects 12 pieces for insufficient coating thickness under NCR-119. If stores returns the 12 pieces to the subcontractor using a standard raw-material issue, the ERP deducts 12 more raw castings from factory inventory, loses the link to HT-884, and allows a second plating charge on reinward receipt.
This guide covers a closed-loop custody and identity ledger for subcontract rejections. Technical rework procedures, strip-and-replate limits, and commercial debit policies remain with quality engineering and procurement.
Reconcile parent custody across first receipt, rework return and reinspection
Consider an original illustrative ledger for outward dispatch JW-301 (150 pieces of valve body VB-90, parent heat HT-884).
Scroll horizontally to see all columns.
| Event step & document | Event date | Factory unrestricted stock (pcs) | Quarantined / QC hold at factory (pcs) | At subcontractor: primary queue (pcs) | At subcontractor: rework loop (pcs) | Confirmed scrap (pcs) | Total accounted pieces | Payable plating service qty (pcs) |
|---|---|---|---|---|---|---|---|---|
1. Outward dispatch (JW-301) |
2026-10-03 | 0 | 0 | 150 | 0 | 0 | 150 | 0 |
2. First inward receipt (GRN-712) & QC (QI-501) |
2026-10-09 | 134 | 12 (NCR-119) |
0 | 0 | 4 | 150 | 134 |
3. Rework return dispatch (RTV-301A linked to JW-301) |
2026-10-10 | 134 | 0 | 0 | 12 | 4 | 150 | 134 |
4. Rework inward receipt (GRN-749) & reinspection (QI-538) |
2026-10-14 | 145 (+11) | 0 | 0 | 0 | 5 (+1) | 150 | 145 (+11) |
At every step, the five state columns sum to exactly 150 pieces:
- After Step 2: 134 accepted + 12 on QC hold + 4 scrapped = 150 pieces.
- After Step 3: 134 accepted + 12 in subcontractor rework custody + 4 scrapped = 150 pieces (no additional raw castings consumed).
- After Step 4: 11 of the 12 reworked pieces pass reinspection
QI-538and join unrestricted stock (134 + 11 = 145 pieces), while 1 piece fails strip-and-replate and moves to confirmed scrap (4 + 1 = 5 pieces; 145 + 5 = 150 pieces). Payable plating service quantity is capped at the 145 net accepted pieces, preventing a 161-piece billing error (150 first receipt + 11 rework receipt).
Product documentation for ERPNext subcontracting, quality inspection and nonconformance tracking outlines standard document types; verify how your deployed version handles rework returns without consuming new raw stock.
Return rejected subcontract work without losing its original identity — reporting workflow
Follow the workflow below, or open its complete text version.
Read the complete workflow as text
- Record inward subcontract lot and QC split → Link rejected pieces to NCR and parent dispatch
- Link rejected pieces to NCR and parent dispatch → Issue rework return reference without new issue cost
- Issue rework return reference without new issue cost → Track vendor rework custody balance separately
- Track vendor rework custody balance separately → Capture reinspection decision against original NCR
- Capture reinspection decision against original NCR → Reconcile cumulative yield and billable service qty
Block second-cycle returns from bypassing disposition review
If a part has already been stripped and replated once under RTV-301A, a second rejection on QI-538 should not automatically generate RTV-301B. Carry a rework_cycle_count on the lot record so any repeat failure routes to quality engineering for material disposition rather than looping indefinitely between stores and the vendor.
Audit five recent subcontract rejections from NCR to invoice
Pick five recent job-work rejections and trace whether the returned pieces kept their original parent heat number, whether stores inventory remained balanced at 100% of the initial dispatch, and whether accounts payable settled only the net accepted quantity.
Compare this workflow with your current setup
Share the step that takes the most manual work, the systems involved and the exceptions your team handles. That gives us a concrete starting point for comparing approaches.
Sources and further reading
Sources checked 15 October 2026. Worked examples and workflow diagrams are original illustrations, not reported client results.
