Match subcontract processing bills to the right quantity and operation
For finance, costing and accounts teams · Compare approaches
TL;DR — what you’ll learn
- Reconcile subcontract job-work invoices against both the contracted billing basis (e.g., gross dispatched weight, net received weight, or accepted good pieces) and the physical challan material balance before approving payment.
- Never allow an accounts-payable clerk to pay a per-kilogram heat-treatment or galvanising invoice on raw outbound dispatch weight when the contract specifies accepted post-process net weight or inspected good pieces (M007).
- Separate three distinct financial streams on every subcontract reconciliation worksheet: (1) undisputed processing service charges, (2) pre-authorised extra operations (such as shot-blasting or straightening), and (3) disputed rework or abnormal material loss held for commercial review (M044).
- Keep physical material custody open until every dispatched kilogram or piece is accounted for across good returns, rejected returns, recoverable scrap, and agreed process loss (M006).

Illustrative manufacturing inspection room and machine shop floor; not a client facility.
Why three-way matching breaks on subcontract processing invoices
In forging, metal fabrication, heat treatment, electroplating, and surface-coating plants, raw or semi-finished components are sent to external job-work processors under an outward material challan and returned days later with a processing service invoice. Standard ERP three-way matching (PO price × Goods Receipt quantity) fails routinely on subcontract bills because four different quantities exist on the same job-work lot:
- Outward dispatched quantity/weight (
Challan_Out): The gross weight or piece count shipped from your stores to the processor (for example,200 rough forgingsweighing2,460.0 kgincluding forging flash and scale). - Gross returned quantity/weight (
Gate_Receipt_In): The physical weight or piece count received back at your weighbridge after heat treatment and shot-blasting (for example,198 forgingsweighing2,415.4 kgafter scale loss, with2 piecesmissing or scrapped at the vendor). - Quality-accepted good quantity/weight (
Accepted_Good_Qty): The net quantity that passes incoming hardness and crack inspection (M007) on the first pass (for example,185 good forgingsweighing2,257.0 kg, while13 piecesrequire re-tempering due to low hardness). - Re-processed or reworked quantity (
Rework_Cycle_Qty): The13under-hardened pieces sent back for re-tempering—which the vendor sometimes bills a second time if AP does not link the rework challan to the original quality rejection.
Direct answer: To pay subcontract processors accurately without leaking margin or losing stock custody, your AP matching workflow must bind each subcontract purchase order line to an explicit Billing Basis Rule (Per_Accepted_Good_Piece, Per_Accepted_Net_Kg, or Per_Dispatched_Input_Kg_With_Cap), verify the physical challan mass balance (S02, M006), deduct vendor-caused rework cycles (M007), and route any abnormal material shortage or unapproved extra-operation surcharge to the Subcontract Buyer before posting the invoice (S18).
As documented in ERPNext subcontracting workflows, a subcontracting cycle tracks raw material transfers to the supplier warehouse separately from service receipts and material consumption. Meanwhile, Microsoft Dynamics 365 accounts payable invoice matching enforces price and quantity matching tolerances against product receipts. For Indian operations, CBIC Circular No. 38/12/2018-GST on job work procedures provides historical regulatory context on challan tracking and return timelines under GST; because tax circulars and filing rules (such as ITC-04 and e-waybill rules) are periodically amended, always verify current statutory GST compliance and tax-invoice/debit-note rules with your qualified tax advisor.
Subcontract Job-Work Invoice Reconciliation and Material-Balance Gate
Follow the workflow below, or open its complete text version.
Read the complete workflow as text
- Receive Subcontractor Service Invoice + Return Challan Refe... → Reconcile Physical Material Balance: Dispatched vs Good + R...
- Reconcile Physical Material Balance: Dispatched vs Good + R... → Hold Unreconciled Shortage Quantity & Escalate to Subcontra...
- Hold Unreconciled Shortage Quantity & Escalate to Subcontra... → Look Up Contracted Billing Basis (Accepted Piece vs Accepte...
- Look Up Contracted Billing Basis (Accepted Piece vs Accepte... → Filter Out Vendor-Responsible Rework Cycles & Unapproved Ex...
- Filter Out Vendor-Responsible Rework Cycles & Unapproved Ex... → Compute Verified Payable Service Amount = Eligible Qty/Weig...
- Compute Verified Payable Service Amount = Eligible Qty/Weig... → Approve & Post Undisputed AP Service Invoice
- Approve & Post Undisputed AP Service Invoice → Split Invoice: Release Undisputed Portion / Hold Disputed D...
Worked example: heat-treatment and shot-blasting bill with dispatch-vs-accepted weight variance
The following scenario, challan numbers, forging weights, processing rates, and invoice lines are explicitly illustrative and use assumed values to demonstrate quantity/weight basis reconciliation and AP variance partitioning.
Suppose a closed-die forging plant dispatches Lot FG-LOT-908 consisting of 200 alloy-steel gear blanks (Part GB-450) to external processor HT-VEND-12 on Outward Job-Work Challan JWC-2026-1405 against Subcontract Purchase Order SPO-2026-312.
1. Contract terms on SPO-2026-312
- Operation 10 (
OP-HT: Quench & Temper Heat Treatment): Contract rate = ₹18.00 per kg of quality-accepted net returned weight (Basis: Accepted_Net_Kg), with an allowed non-recoverable scale/oxidation loss allowance of up to 1.00% of dispatched weight. - Operation 20 (
OP-SB: Shot-Blasting): Contract rate = ₹12.00 per quality-accepted piece (Basis: Accepted_Good_Pieces). - Pre-approved extra operation (
OP-STR: Hydraulic Press Straightening on shafts exceeding runout): Authorised via written engineering/buyer amendmentAMD-312-Aon a maximum of 30 pieces at ₹25.00 per piece (₹750.00ceiling). - Rework & abnormal scrap policy: Re-tempering of pieces failing hardness spec (
280–320 HBW) is at the subcontractor's expense (₹0.00service charge). Irreparable vendor-scrapped pieces above0pieces are held for commercial replacement/debit review (M044, standard forging blank cost = ₹650.00 per piece).
2. Physical weight and piece reconciliation across Challan JWC-2026-1405
- Outward dispatch (
JWC-2026-1405):200 piecesat12.30 kg/piecegross weight =2,460.0 kgdispatched.
- Inward return & incoming metallurgical inspection (
GRN-JW-881&INS-JW-409):- Accepted first-pass good pieces (
Accepted_Good):185 piecesat12.20 kg/piecenet post-scale weight =2,257.0 kg. - Rejected for low hardness (
Sent_For_Vendor_Rework):13 piecesat12.20 kg/piece=158.6 kg(later re-tempered and accepted on Rework ChallanJWC-2026-1405-R1, bringing total eventually accepted pieces to185 + 13 = 198 piecesweighing2,257.0 + 158.6 = 2,415.6 kg). - Cracked during improper quench at vendor (
Vendor_Damaged_Scrap):2 piecesreturned as cracked scrap weighing24.4 kg. - Physical scale / furnace oxidation weight loss (
Process_Scale_Loss):2,460.0 kg (dispatched) minus (2,257.0 kg + 158.6 kg + 24.4 kg) = 2,460.0 minus 2,440.0 = 20.0 kg(20.0 ÷ 2,460.0 = 0.813%, which is within the1.00%scale allowance). - Piece count conservation check:
185 (first-pass good) + 13 (reworked good) + 2 (cracked vendor scrap) = 200 pieces dispatched.
- Accepted first-pass good pieces (
3. Reconciling the subcontractor's submitted invoice (INV-HT-7741) against verified entitlement
When HT-VEND-12 submits Invoice INV-HT-7741 for ₹50,955.00 (before GST), AP runs the four-line reconciliation bridge:
Scroll horizontally to see all columns.
| Invoice line | Operation / charge description | Vendor billed basis & calculation (INV-HT-7741) |
Vendor billed amount (₹) | Contract-verified basis & calculation (SPO-2026-312) |
Verified payable amount (₹) | Variance (₹) & disposition reason |
|---|---|---|---|---|---|---|
| Line 1 | OP-HT Quench & Temper |
Billed on 2,460.0 kg gross outward dispatch weight + 158.6 kg rework re-run = 2,618.6 kg × ₹18.00/kg |
₹47,134.80 (rounded by vendor to ₹47,135.00) | 198 total accepted pieces (185 + 13) net weight = 2,415.6 kg × ₹18.00/kg (rework cycle free; excludes 24.4 kg cracked & 20.0 kg scale) |
₹43,480.80 | −₹3,654.20 disallowed (₹2,854.80 double-billed rework weight + ₹799.20 scale/cracked weight + ₹0.20 rounding) |
| Line 2 | OP-SB Shot-Blasting |
Billed on 200 dispatched pieces × ₹12.00/pc |
₹2,400.00 | 198 accepted pieces × ₹12.00/pc (excludes 2 cracked scrap pieces) |
₹2,376.00 | −₹24.00 disallowed (2 cracked pieces × ₹12.00/pc) |
| Line 3 | OP-STR Press Straightening |
Billed on 42 pieces × ₹25.00/pc |
₹1,050.00 | Authorised cap on AMD-312-A = 30 pieces × ₹25.00/pc (12 extra pieces unapproved) |
₹750.00 | −₹300.00 held (12 unapproved pieces × ₹25.00/pc routed to Buyer) |
| Line 4 | Fuel / furnace surcharge | Uncontracted ad-hoc surcharge | ₹370.00 | Not in SPO-2026-312 |
₹0.00 | −₹370.00 rejected (uncontracted fee) |
| Total | Service invoice reconciliation | Submitted invoice total | ₹50,955.00 | Verified contract entitlement | ₹46,606.80 | −₹4,348.20 total invoice overcharge blocked |
Check every arithmetic component of the variance:
- Line 1 (
OP-HTweight variance breakdown):- Disallowed rework second-pass billing:
158.6 kg × ₹18.00/kg = ₹2,854.80. - Disallowed billing on
20.0 kgfurnace scale loss +24.4 kgcracked scrap (44.4 kgtotal non-good weight):44.4 kg × ₹18.00/kg = ₹799.20. - Exact Line 1 check:
₹43,480.80 (verified) + ₹2,854.80 (rework) + ₹799.20 (scale + cracked) + ₹0.20 (vendor rounding) = ₹47,135.00.
- Disallowed rework second-pass billing:
- Total service invoice check:
₹43,480.80 + ₹2,376.00 + ₹750.00 + ₹0.00 = ₹46,606.80verified payable vs₹50,955.00billed (₹50,955.00 minus ₹46,606.80 = ₹4,348.20overcharge). - Separate commercial material claim for the 2 cracked forgings (
CLM-JW-1405):- In addition to blocking the
₹4,348.20service overcharge, the2cracked gear blanks (2 × ₹650.00 = ₹1,300.00raw forging value) remain open on Material Exception RecordMEX-1405. - Under the approval boundary rule (
M044), AP does not blindly auto-deduct₹1,300.00from the₹46,606.80service bill without commercial sign-off; instead, AP holds payment of the disputed portion or links the buyer-approved debit note (DN-2026-091 = ₹1,300.00) once Supplier Quality and the Subcontract Buyer confirm vendor quench liability.
- In addition to blocking the
Governance matrix: who owns each subcontract exception
Scroll horizontally to see all columns.
| Exception type | Accountable owner | System hold behaviour | Resolution path |
|---|---|---|---|
Challan quantity / weight imbalance (Unexplained_Shortage) |
Subcontract Buyer & Stores Lead | Blocks final closure of the outward challan (M006) and holds corresponding invoice lines |
Physical recount, supplemental return challan, or formal shortage debit note (M044). |
Billing basis mismatch (Dispatched_Kg vs Accepted_Kg) |
Accounts Payable (S18) |
Calculates payable strictly from the PO's configured Billing_Basis_Field |
Vendor issues revised invoice or credit note matching the contracted basis. |
| Vendor-caused rework re-billing | Supplier Quality & AP | Flags any return challan linked to an NCR rework loop (M007) at ₹0.00 processing rate |
Only buyer-approved engineering changes (Customer/Plant-Caused Rework) can carry a positive rework PO rate. |
| Unapproved extra operation or surcharge | Subcontract Buyer & Production Lead | Places the extra line in Pending_Commercial_Amendment |
Buyer either approves a formal PO amendment after verifying technical necessity or rejects the line. |
Acceptance criteria for subcontract invoice reconciliation
- Dual-unit challan preservation (
TEST-M066-01): Every subcontract receipt records both piece count and measured weight alongsideAccepted_Good,Rework_Required,Returned_Scrap, andProcess_Lossbuckets soDispatched = Good + Rework + Scrap + Loss. - Contract basis enforcement (
TEST-M066-02): When a subcontract PO specifiesBasis = Accepted_Net_KgorAccepted_Good_Pieces, the AP matching engine computes payable entitlement from inspected good receipts rather than raw outward dispatch weight. - Rework double-billing block (
TEST-M066-03): Return receipts linked to a vendor-fault rework challan increment physical stock custody recovery without generating a second payable service accrual. - Separated service variance vs material loss liability (
TEST-M066-04): Disputed material scrap liability (M044) is tracked as an explicit commercial claim record rather than silently altering the unit service rate or closing an unbalanced material challan.
Synthesis and next actions
Matching subcontract processing bills requires connecting three records that most plants keep in separate silos: the contracted rate basis on the PO, the physical weight/piece balance on the challan, and the incoming quality disposition on the return lot.
- Add an explicit
Billing_Basis_Codeto every subcontract PO line: Specify on the purchase order whether the processor is paid perDispatched_Input_Kg,Returned_Net_Kg, orAccepted_Good_Piece, along with the maximum allowable process-loss percentage (S02,S18). - Record both pieces and weight at outward dispatch, inward gate receipt, and quality acceptance: Ensure weighbridge and inspection screens capture net post-process weight on
Accepted_Goodlots separately from rejected or scrapped returns (M006,M007). - Tag rework return challans to the originating
NCR: Configure the ERP so parts sent back to the vendor to rectify a processing defect are tracked for material custody without creating a duplicate billable service receipt. - Reconcile open challan ageing and tax timelines monthly: Review open job-work challans with Stores, Procurement, and Finance each month to verify physical stock reconciliation and compliance with current GST job-work return rules (
S21).
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.


