Purchase Orders Reference

Purchase Orders in Fleetio are designed to help standardize parts procurement through a purchasing workflow and vendor history tracking. For more information, check out our help center article.


approved_atN/NDate when the purchase order was approved
approved_byN/NName of the contact/user who approved the purchase order
closed_atN/NDate when the purchase order was closed
closed_byN/NName of the contact/user who closed the purchase order
created_atN/NDate when the purchase order was created
created_byN/NName of the contact/user who created the purchase order
descriptionN/YOpen text field for purchase order description.
discountN/YThe discount amount. This field should be present when discount_type is set to fixed.
discount_percentageN/YThe discount percentage. Should be present when discount_type is set to percentage.
discount_typeN/YValid values are percentage and fixed.
label_listN/YA comma separated list of tags/labels for the work order. The only delimiter allowed is a comma. Please remove any commas from your labels before saving the work order. Sample value: "High Priority,Truck,Repair/Maintenance"
numberN*/YPurchase order number. Must be unique across your account. You can either generate your own or leave it blank and have Fleetio generate one for you. Fleetio will simply use the next number in the sequence based on your existing work orders. This becomes the unique identifier, even in endpoints. Id is never used.
part_location_idN*/YThe part location ID associated with this purchase order. Only optional in draft state.
purchase_order_line_items_attributesN/NLine item data for this purchase order. Note that you can either specify the line item data as a nested attribute, or hit the PurchaseOrderLineItem endpoint independently.
purchased_atN/NDate when the purchase order was purchased
purchased_byN/NName of the contact/user who purchased the purchase order
received_full_atN/NDate when the purchase order was fully received
received_full_byN/NName of the contact/user who fully received the purchase order
received_partial_atN/NDate when the purchase order was first partially received
received_partial_byN/NName of the contact/user who first partially received the purchase order
shippingN/YThe amount for shipping
stateN/NThe state this purchase order is in. This value cannot be edited directly. To change the purchase order's state, you will have to use the appropriate of the API endpoints.

Possible state values are: draft, pending_approval, approved, rejected, purchased, received_partial, received_full, and closed.
tax_1N/YThe amount for the Tax 1 line item. Use this if tax_1_type is set to fixed.
tax_1_percentageN/YThe percentage for tax 1. Use this if tax_1_type is set to percentage.
tax_1_typeN/YCan be either fixed or percentage.
tax_2N/YAmount for the Tax 2 line item. Note that having this field enabled is an account level setting.
tax_2_percentageN/YPercentage for the Tax 2 line item. Note that having this field enabled is an account level setting.
tax_2_typeN/YCan be either fixed or percentage. Note that having this field enabled is an account level setting.
vendor_idN*/YId of the associated vendor. Only optional in draft state.


draftPurchase order is in a draft state, meaning it can be edited.
pending_approvalPurchase order is waiting for a somebody to approve or reject it. It cannot be edited in this state.
rejectedPurchase order has been rejected. It can be edited in this state.
approvedPurchase order has been approved. At this point, it can no longer be edited.
purchasedPurchase order has been purchased
received_partialSome line items has been partially received
received_fullAll line items have been fully received
closedPurchase order is complete. The only editable fields at this point are description and labels.

State Transitions

In order to transition between purchase order states, you must call the appropriate API endpoints with the PATCH method. Currently, we do not support receiving inventory in the purchase orders API.

The table below describes which all possible states and which endpoints you need to call to perform the transition. If you attempt to call an endpoint and the transition is impossible, you will get a HTTP 422 with an error in the response body.

Initial StatePossible Transition StatesEndpoint