What is Purchase Order Numbering?
Procurify's purchasing workflow involves two separate records: the Order Request (also called a Request for Order, or RFO) that a requester submits, and the Purchase Order that a purchaser creates from approved order items. Each record gets its own internal identifier and its own human-readable number. Because a Purchase Order Export can show identifiers from both records at once, exports can contain up to four distinct fields: PO ID, PO Number, Order ID, and Order Number.
Why do we use Purchase Order Numbering
Compliance: Distinguishing the PO Number from the Order Number prevents your Accounts Payable team from matching an Invoice to the wrong record during the 3-Way Match process.
Speed: Customizing the PO Number to match your ERP or accounting software's own sequence removes a manual re-numbering step.
Visibility: Knowing which field belongs to which record lets your finance team trace a line item back to its originating Order Request, even when several Order Requests are combined onto one Purchase Order.
How does Purchase Order Numbering work?
Every Order Request and every Purchase Order carries its own pair of identifiers: one internal, system-assigned ID, and one human-readable number. The table below maps each field to its record, its format, and who typically references it.
Field | Belongs To | Format | Customizable | Typical Audience |
PO ID | Purchase Order | "PF"-prefixed (e.g., PF1, PF2) | No | Internal team, Procurify Support |
PO Number | Purchase Order | Configurable prefix + sequence (e.g., PO-1000) | Yes | Vendor, Accounts Payable |
Order ID | Order Request | Internal database number | No | Procurify Support, API integrations |
Order Number | Order Request | Sequential, human-readable (e.g., RFO-1023) | No | Requester, approver, internal team |
Frequently Asked Questions
Why a Purchase Order Export can show all four fields: A Purchase Order can combine line items from more than one Order Request - this is common, not an edge case. When line items from multiple Order Requests land on a single Purchase Order, the Purchase Order Export shows one PO ID and one PO Number per Purchase Order, but the Order ID and Order Number can vary line item by line item, since each line item still points back to the specific Order Request it came from.
Why the numbers can appear to "not match": The PO Number sequence and the Order Number sequence increment independently of each other. If an Order Request is rejected and resubmitted, it typically receives a new Order Number, but this has no effect on the PO Number of any Purchase Order already created from that domain. Treat PO Number and Order Number as two unrelated counters rather than expecting them to stay aligned.
Which number should your team reference? For vendor and Accounts Payable communication, use the PO Number displayed on the Purchase Order document. For internal requester or approver communication about the original request, use the Order Number. Reserve PO ID and Order ID for cases where Procurify Support needs a unique record identifier, since neither is meant for day-to-day reference.
How do I configure a custom PO Number?
Navigate to Procure > Procurement.
Select the checkbox beside each approved item to add to your order.
Click Add to List, then select Create Purchase Order.
Locate the External PO field in the upper-left corner of the page.
Select Custom and enter your desired prefix and number sequence.
Finish creating the Purchase Order.
Best Practice: End a custom PO Number sequence with a number (e.g., PO-1000). The system only auto-increments the final numerical value in the text string.
Configuration notes:
You cannot change or remove the "PF" prefix on the PO ID. You can only customize the PO Number shown to vendors.
If a manually entered PO Number matches an existing Purchase Order, the system displays a warning before you create the document; it does not block the duplicate.
If your domain uses Automatic Purchase Orders (Auto POs), configure your custom PO Number sequence on a standard Purchase Order first. The system then carries that sequence forward once you enable the automation.
