## TL;DR

The initialize operation transforms a purchase order into a vendor bill draft, carrying over lines, quantities, and references correctly. Call initialize with the PO internal ID and type purchaseOrder, targeting vendorBill; then adjust quantities to invoiced amounts and post. This is the reliable path for 3-way-match-driven billing.

## Steps

1. Call initialize with InitializeType vendorBill and the PO reference.
   Expected: A bill draft with PO lines carried over.
2. Adjust line quantities to the invoiced quantities.
   Expected: Matching quantities.
3. Verify pricing, tax, and subsidiary carried correctly.
   Expected: A correct draft.
4. Post the bill.
   Expected: A PO-linked vendor bill.
5. Record the PO-to-bill link for the audit trail.
   Expected: Traceability.

## When to use

- Building PO-to-bill automation
- 3-way match flows in NetSuite
- Receiving-driven billing

## When not to use

- Non-PO (expense) bills
- UI bill entry
- Non-NetSuite ERPs

## Compatibility

NetSuite SuiteTalk SOAP initialize operation.

## Variant phrasings

### initialize vendor bill from PO

### transform purchase order to bill

### NetSuite PO billing

## Root cause

Manually recreating PO lines on a bill invites mismatches. Initialize copies the authoritative PO data, so matching starts from a correct baseline.

## Edge cases

- Partial receipts need quantity adjustment before posting
- Drop-ship POs initialize differently; check the flow
- Multi-PO bills need one initialize per PO

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_7z8K_SDGRWNeuAWd-J9_dg
