Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.dualentry.com/llms.txt

Use this file to discover all available pages before exploring further.

Purchase Orders Reference

Purchase orders in DualEntry formalize your commitment to buy goods or services from a vendor before the bill arrives. They give you visibility into upcoming spend, enable three-way matching, and feed into your cash flow forecasts.

Creating a Purchase Order

Navigate to Accounts Payable → Purchase Orders → New PO, or send a POST to /public/v2/purchase-orders/. A purchase order requires a vendor, an order date, and at least one line item. Each line item includes a description, quantity, unit price, account, and optional classification dimensions. You can attach supporting documents - quotes, contracts, scope of work - via the UI or the /public/v2/purchase-orders/{id}/attachments/ endpoint. Attachments follow the same immutability rules as bill attachments. DualEntry validates required fields at submission. The vendor must be active, the order date cannot fall in a closed period, and each line item must reference a valid expense or asset account. If your organization uses budgeting, the system can also check whether the PO amount fits within the remaining budget for the selected account and period.

PO Approval and Receiving

Purchase orders support dedicated approval workflows with the purchase_order record type. A common pattern is to require department head approval for POs under a threshold and executive approval above it. Once all approval stages pass, the PO status moves to approved and it becomes available for receiving and billing. Rejected POs return to the requester with reviewer comments. When goods or services arrive, record a receipt against the PO. Each receipt line references a PO line and specifies the quantity received. DualEntry tracks received vs. ordered quantities, so you can see at a glance what is outstanding. Partial receipts are supported. If a vendor ships in multiple batches, record a receipt for each delivery. The PO status updates to partially_received until all lines are fulfilled, at which point it moves to received. You can also over-receive against a PO line - for example, when a vendor ships a bonus quantity - and DualEntry flags the variance for your review.

Three-Way Match

Three-way matching compares three records before a bill is approved for payment:
  • Purchase order - what you committed to buy (quantity and price).
  • Receipt - what you actually received.
  • Bill - what the vendor is charging you.
DualEntry flags discrepancies automatically. A quantity mismatch (billed more than received) or a price variance (unit price differs from the PO) surfaces as a match exception. You resolve exceptions by adjusting the bill, contacting the vendor, or overriding the match with an explanation that is captured in the audit trail. Match exceptions appear in a dedicated queue under Accounts Payable → Match Exceptions, so you can review and resolve them in bulk rather than opening each bill individually. Each exception shows the PO line, receipt line, and bill line side by side with the variance highlighted.
Three-way match exceptions block bill approval by default. If your organization prefers a softer control, configure the match tolerance percentage under Settings → AP Preferences. Bills within tolerance pass automatically; only those outside tolerance require manual review.

Converting a PO to a Bill

When you are ready to record the vendor’s invoice, you can convert an approved PO directly into a bill. Navigate to the PO and select Convert to Bill, or use the API to create a bill that references the PO ID. DualEntry pre-populates the bill’s line items from the PO, adjusted for any receiving variances. The resulting bill enters the standard bill approval workflow. The link between PO and bill is preserved, so reporting can trace spend from commitment through payment. You can convert a PO to a bill in full or in part - billing only the received lines and leaving the remainder on the PO for a future bill. If the vendor’s invoice differs from the PO - for example, a price increase or additional charges - you can edit the bill after conversion. The three-way match process catches these differences and routes them through your exception handling workflow.

PO Status Tracking

Purchase orders move through these statuses:
  • Draft - created but not yet submitted for approval.
  • Submitted - in the approval workflow.
  • Approved - approved and available for receiving.
  • Partially received - at least one receipt recorded, but not all lines are fulfilled.
  • Received - all ordered quantities have been received.
  • Billed - a bill has been created from this PO.
  • Closed - fully received and billed, or manually closed.
  • Voided - cancelled before receiving.
You can filter POs by status in the list view or via the API’s record_status parameter to monitor open commitments. The PO list also supports filtering by vendor, date range, and amount, which is useful when reconciling outstanding commitments at period end. For cash flow forecasting, open POs feed into the budgeting and forecasting module as uncommitted spend.
Last modified on May 28, 2026