Sales & Agreements
Purchase Order
B2B purchase order — vendor and ship-to blocks, ordered items, totals, terms, and approver.
The contract
Fields your API call provides. Amounts and totals are always computed by the caller — templates only format.
| tax | number | required |
| items[].amount | number | required |
| items[].quantity | number | required |
| items[].unit_price | number | required |
| items[].description | string | required |
| total | number | required |
| vendor.name | string | required |
| vendor.email | string | required |
| vendor.address | string | required |
| ship_to.name | string | required |
| ship_to.address | string | required |
| subtotal | number | required |
| po_number | string | required |
| issue_date | string | required |
| approved_by | string | required |
| delivery_date | string | required |
| payment_terms | string | required |
MCP-ready: forks of this template will expose generate_purchase_order when the MCP server ships.
Generate it (after you fork & publish)
curl -X POST https://your-paperbrain-host/api/generate/gen_<your-id> \
-H "Content-Type: application/json" \
-d '{
"tax": 1432.08,
"items": [
{
"amount": 7680,
"quantity": 12,
"unit_price": 640,
"description": "Height-adjustable desk, walnut"
},
{
"amount": 4620,
"quantity": 12,
"unit_price": 385,
"description": "Task chair, mesh back"
},
{
"amount": 1740,
"quantity": 12,
"unit_price": 145,
"description": "Monitor arm, dual"
}
],
"total": 15472.08,
"vendor": {
"name": "Cascade Office Systems",
"email": "orders@cascadeoffice.example",
"address": "98 Industrial Way, Tacoma, WA 98402"
},
"ship_to": {
"name": "Acme Corp — Receiving",
"address": "1200 Harbor Blvd, Dock 4, Seattle, WA 98104"
},
"subtotal": 14040,
"po_number": "PO-7731",
"issue_date": "2026-06-10",
"approved_by": "M. Okafor, Director of Operations",
"delivery_date": "2026-07-15",
"payment_terms": "Net 45"
}'gen_<your-id>is your generator's id once you fork and publish. The body shown is this template's sample data — the exact shape the contract validates.