## TL;DR

Invoices arrive against closed POs when billing lags the close, especially for final adjustments. Verify the invoice is the legitimate tail of the PO (cumulative billed plus this invoice stays within the PO total), then either reopen the PO line for the residual or process as a no-PO invoice linked to the closed PO for history. Do not silently reopen POs without a residual check.

## Error

```text
PO 4500012345 is closed; cannot match
```

## Steps

1. Check cumulative billed against the PO total.
   Expected: Whether this invoice is the legitimate tail.
2. If within total, reopen the PO line for the residual amount.
   Expected: A controlled reopen.
3. If it exceeds the total, route as an exception.
   Expected: No silent overruns.
4. Link the invoice to the closed PO for history.
   Expected: Traceability preserved.
5. Tighten PO close timing if this recurs.
   Expected: Process fix.

## When to use

- Late invoices against closed POs
- Final adjustments and true-ups
- PO hygiene reviews

## When not to use

- POs that never existed
- Open-PO mismatches
- Duplicate invoices

## Compatibility

ERP-agnostic.

## Variant phrasings

### invoice against closed PO

### closed purchase order billing

### reopen PO for invoice

## Root cause

POs close when fully received, but vendor billing and adjustments lag. The close is about receiving completeness, not billing completeness.

## Edge cases

- Auto-close rules that are too aggressive cause this systematically
- Retainage releases always arrive after close; expect them
- Reopened POs need re-approval per policy

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_7MhduymX8M-U-GOiMkH9oQ
