Procure-to-pay process

A procure-to-pay process flowchart shows how an organisation buys goods or services and pays for them. A requisition is approved by the budget holder, or also by finance above a spend threshold. A purchase order goes to the supplier, the goods are received and recorded, and the supplier’s invoice is matched against the order and the receipt before it is scheduled for a payment run. The same page serves anyone looking for a procurement process flowchart or a purchase order process.

Finance and procurement teams draw this to agree approval rules, to show auditors how spending is controlled, and to find where invoices get stuck. The three-way match compares the purchase order, the goods receipt and the invoice, so the business only pays for what it ordered, at the agreed price, and actually received. A mismatch is investigated and resolved with a credit note, a corrected invoice or an approved variance, never paid as it stands.

Procure-to-pay process Team needsgoods orservices Raise apurchaserequisition Above thespendthreshold? Budget holderapproves Budget holderand financeapprove Approved? Requesterrevises orcancels Issue thepurchase order Supplierconfirms? Amend thepurchase order Record thegoods receipt Supplier invoicearrives Three-waymatch? Schedule in thepayment run Investigate theexception Resolution Supplierpaid,remittancesent No Yes No Yes Price or datechanged Yes Mismatch Varianceapproved Matches Credit note orcorrectedinvoice
Open in editor

Mermaid source

---
title: Procure-to-pay process
---
flowchart LR
  need([Team needs goods or services]) --> req[Raise a purchase requisition]
  req --> threshold{Above the spend threshold?}
  threshold -->|No| holder[Budget holder approves]
  threshold -->|Yes| finance[Budget holder and finance approve]
  holder --> approved{Approved?}
  finance --> approved
  approved -->|No| revise[Requester revises or cancels]
  revise --> req
  approved -->|Yes| po[Issue the purchase order]
  po --> confirm{Supplier confirms?}
  confirm -->|Price or date changed| amend[Amend the purchase order]
  amend --> confirm
  confirm -->|Yes| receipt[Record the goods receipt]
  receipt --> invoice[Supplier invoice arrives]
  invoice --> match{Three-way match?}
  match -->|Matches| run[Schedule in the payment run]
  match -->|Mismatch| exception[Investigate the exception]
  exception --> cause{Resolution}
  cause -->|Credit note or corrected invoice| invoice
  cause -->|Variance approved| run
  run --> paid([Supplier paid, remittance sent])

Stock Mermaid vs Line9 on this procure-to-pay process

Run the same source through the stock Mermaid engine and it often will not look as good. In some cases, Mermaid is able to deliver a usable graph, but not always. On this one:

The same procure-to-pay process through stock Mermaid — a strip about nine times wider than it is tall, with small labels
Stock Mermaid · same source View full size ↗

Stock Mermaid draws this process as a single strip about nine times wider than it is tall, so to fit into a page or screen it has to be scaled down and the labels become very small. Line9 lays out the same source in a more compact shape, with the approval, amendment and exception loops kept close to the steps they return to, so it can be shown at a size where every label is readable.

For a fuller product comparison — layout, export, CLI, and pricing — see Line9 vs mermaid.live.

Render your own

Paste any Mermaid flowchart into the free online editor — no account needed. Prefer the terminal? Install the line9 CLI (free for personal use).

More scenarios on the Mermaid examples hub.