Finance package

Purchase requisition to PO

Requesters submit a requisition; the purchasing policy sets approvals and quotes, and approved requests become a purchase order sent to the supplier.

Starts from a formIntermediate~15 min setupv1.0.0

About this package

What it does

Purchase requisition to PO takes a request from "I need this" to an issued purchase order. The requester fills in the start form: what they need, quantity, unit price, supplier, category, cost centre, the date they need it and a business justification.

The workflow totals the request, looks the supplier up in the Approved suppliers table (preferred status, payment terms, contract) and evaluates the Purchasing approval decision table, which sets the approver level and how many quotes procurement must collect. The manager approves or rejects with the cost centre and budget line. When quotes are needed, a buyer records up to three quotes and the selected supplier and amount.

The purchase order is then raised in your ERP with the supplier's terms and contract reference. The requester gets a confirmation and the supplier's orders address gets the PO. Edit the suppliers, the policy thresholds and the ERP request to match your purchasing rules.

Starts from a form

Starts from a form: the requester fills in the requisition (Run dialog in the app, or your intranet posting to the start API).

Someone fills in a form to start it: the workflow inputs are the start form (Run dialog in the app, or your own portal posting to the API), and people complete User Task forms along the way.

The flow

Step by step

  1. 1

    Requisition submitted

    The start form collects the item, quantity, unit price, supplier, category, cost centre, needed-by date and justification.

  2. 2

    Check the supplier

    The total is calculated and the Approved suppliers table says whether the supplier is preferred and which terms apply.

  3. 3

    Apply the purchasing policy

    The Purchasing approval decision table sets the approver level and the number of quotes required.

  4. 4

    Manager approval

    The manager approves or rejects, confirming the cost centre and budget line.

  5. 5

    Collect quotes

    When the policy needs quotes, a buyer records them and picks the supplier and amount for the PO.

  6. 6

    Raise and send the PO

    The PO is created in the ERP; the requester gets a confirmation and the supplier gets the order.

Purchase requisition — A requester submits a purchase requisition; the purchasing policy sets the approver level and quotes required, the manager approves, procurement collects quotes when needed, and the PO is raised in the ERP and sent to the supplier. The same canvas you get in the designer after installing.

Forms

The start form and the task forms

The workflow inputs are the start form: the Run dialog renders them, and your own portal can post the same fields. User Tasks show their fields and outcome buttons to the assignee.

Start form

Purchase requisition

Filled in by whoever starts the process

Your email * requester_email · emailname@company.comWho is asking: gets the PO confirmation
Item description * item_description · textWhat you need, e.g. "14-inch laptops for the new support team"
Quantity * quantity · number0Number of units
Unit price * unit_price · number0Expected price per unit, excluding tax
Currency currency · select
NZDAUDUSDEURGBP
ISO currency code
Supplier * supplier · textSupplier name as listed in Approved suppliers, or a new supplier
Category * category · select
it_hardwaresoftwareprofessional_servicesoffice_suppliesfacilitiesmarketing
Spend category
Cost centre * cost_centre · textCost centre to charge, e.g. CC-310 Support
Needed by needed_by · dateYYYY-MM-DDDate you need the goods or service
Business justification * justification · textWhy this purchase is needed and what happens without it
Approver (user id) manager_id · textOptional: user id of the approving manager (overrides the install-time default)
Buyer (user id) procurement_id · textOptional: user id of the buyer who collects quotes

User Task

Approve requisition

Approve {{requisition_ref}}: {{item_description}} ({{currency}} {{amount}})

Cost centre * cost_centre · textPrefilled: {{cost_centre}}
Budget line * budget_line · choice
Opex: plannedOpex: unplannedCapex: plannedCapex: unplanned
Comment comment · text
ApproveReject

User Task

Collect quotes

Get {{quotes_required}} quotes: {{item_description}} ({{requisition_ref}})

Quote 1 amount * quote_1_amount · number0
Quote 2 amount quote_2_amount · number0
Quote 3 amount quote_3_amount · number0
Selected supplier * selected_supplier · textPrefilled: {{supplier}}
Selected quote amount * selected_amount · numberPrefilled: {{amount}}
Selected quote reference quote_reference · text
Selection rationale comment · text
Supplier selectedCancel requisition

From your code

Start a run over the API

Every workflow can be started over REST, MCP or the CLI, whatever its trigger, with the sample input below. Runs start straight away on the published version; replace <workflow id> with the id the install created.

REST

shell
curl -X POST "$USERTASKS_URL/api/v1/workflows/start" \
  -H "Authorization: Bearer $USERTASKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"workflow_id":"<workflow id>","variables":{"requester_email":"alex.morgan@example.com","item_description":"14-inch laptops for the new support team","quantity":10,"unit_price":1450,"currency":"NZD","supplier":"Contoso Computing","category":"it_hardware","cost_centre":"CC-310 Support","needed_by":"2026-11-20","justification":"Five new support hires start in November and five laptops are past their replacement date."}}'

CLI

shell
usertasks workflows inputs <workflow id>          # the start form: keys, types, required
usertasks workflows run <workflow id> --input requester_email=alex.morgan@example.com --input item_description="14-inch laptops for the new support team" --input quantity=10 --input unit_price=1450 … --wait

Inbound webhook

shell
usertasks webhooks create <workflow id>          # prints the hook slug and secret once
curl -X POST "$USERTASKS_URL/api/webhooks/inbound?hook=<slug>" \
  -H "Authorization: Bearer <webhook secret>" -H "Content-Type: application/json" \
  -d '{"requester_email":"alex.morgan@example.com","item_description":"14-inch laptops for the new support team","quantity":10,"unit_price":1450,"currency":"NZD","supplier":"Contoso Computing","category":"it_hardware","cost_centre":"CC-310 Support","needed_by":"2026-11-20","justification":"Five new support hires start in November and five laptops are past their replacement date."}'

What's included

8 assets, ready to adapt

TypeNameDetails
Email templatePurchase order raisedSent to the requester when the purchase order is issued.
Email templatePurchase order to supplierSent to the supplier orders address with the purchase order.
Email templateRequisition not approvedSent to the requester when the manager rejects the requisition or procurement cancels it.
Data tableApproved suppliersSuppliers procurement has approved, by category, with payment terms and the contract that covers them. Preferred suppliers need fewer quotes.
IntegrationERP
API referenceCreate purchase orderPOST /purchase-orders — Raise an approved purchase order in the ERP and return its number, status and PDF link.
Decision tablePurchasing approval6 rules — Approval level and number of quotes for a requisition, by amount, category and whether the supplier is preferred. First matching rule wins.
WorkflowPurchase requisition23 steps — A requester submits a purchase requisition; the purchasing policy sets the approver level and quotes required, the manager approves, procurement collects quotes when needed, and the PO is raised in the ERP and sent to the supplier.

Approved suppliers · 7 sample rows

SupplierERP supplier idCategoryPayment termsPreferredContract refOrders email

Requirements

What you connect it to

Credentials never travel in a package. The install wizard asks for what your environment must provide, or installs it incomplete until you finish setup.

Needs

  • REST API — A REST API integration: set its base URL and credentials on install.
  • Assignees — People in your workspace to receive the User Tasks (picked on install).
  • Email — Email delivery configured for the instance (EMAIL_PROVIDER), used for notifications.

After installing

  1. ERP integration: set the base URL of your ERP API and an API token. Create purchase order posts to /purchase-orders; map the body and response to your ERP in Integrations.
  2. Assignees: pick the default approving manager and the buyer who collects quotes (runs can pass manager_id and procurement_id).
  3. Edit the Approved suppliers rows (supplier ids, terms, contracts, orders emails) and the Purchasing approval thresholds to your delegation of authority.
  4. Email: configure EMAIL_PROVIDER so the requester and supplier emails are delivered (the steps continue on error).

Asked for on install

  • Integration “ERP”Required

    • Tokenconfig.auth_config.token
    • Base urlconfig.base_urldefault https://erp.example.com/api· optional
  • Workflow “Purchase requisition” assigneesRequired

    • User for step “Approve requisition”nodes.8.config.assignee_id
    • User for step “Collect quotes”nodes.11.config.assignee_id

Install

Install it in your workspace

Works on UserTasks cloud and on any self-hosted instance. Installing creates the assets above; nothing runs until you complete setup and start it.

In the app

  1. Download purchase-requisition-to-po-1.0.0.utpkg.
  2. Open Automations → Packages and drag the file onto the page (or choose Import package). Browse gallery there lists every gallery package without downloading by hand.
  3. Pick the file. The wizard verifies the checksum, every file hash and the signature, and shows the readme.
  4. Review the changes (what is created) and the data rows.
  5. Fill in the requirements, or tick Keep incomplete and finish later with Complete setup.
  6. Done: the workflow is published and active once setup is complete.

With the CLI

shell
curl -fLO https://usertasks.com/gallery/purchase-requisition-to-po-1.0.0.utpkg
usertasks packages inspect purchase-requisition-to-po-1.0.0.utpkg       # offline: checksum, hashes, signature
usertasks packages install purchase-requisition-to-po-1.0.0.utpkg --dry-run
usertasks packages install purchase-requisition-to-po-1.0.0.utpkg       # prompts for each requirement
usertasks packages install purchase-requisition-to-po-1.0.0.utpkg --keep-incomplete --yes   # in CI; finish with:
usertasks packages complete purchase-requisition-to-po -f values.yaml

Verify the download

File SHA-256
2fe74042781807fced832e63a5b6fa828b8a64a186dcb62eecde0e127fb8ad03
Package checksum (what is signed)
sha256:a5f6a9925c3f7005dbddd14b725fcedc9c1e415cae61d1edca6646b01af879fc
Signer
Unsigned preview build — compare the SHA-256 above

shasum -a 256 purchase-requisition-to-po-1.0.0.utpkg should print the file SHA-256. How gallery packages are signed.

Versions

Version 1.0.0

  1. v1.0.02026-10-26First release.

Installing a newer version upgrades in place: local credentials and requirement values are kept, and changes you made are flagged first. How packages work

More packages

Related

Browse the whole gallery