Retrieve a purchase request

Operation ID: getPurchaseRequest

Group: Accounting › Purchase Requests

Open in the interactive reference

GET /accounting/purchase-requests/{id}

Read-only: Reads and returns; changes nothing.

Retrieves a purchase request. Use the purchase request's id, not its purchaseRequestNumber.

A purchase request is an internal request to buy. The response has the request's lines and approval decisions.

POST accounting/purchase-requests/search returns the same fields for many requests, except approvals. GET accounting/purchase-requests returns requests without their lines.

Parameters

Name In Type Required Description
Api-Version header string · v1 yes The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version v1.
id path string yes The unique identifier of the purchase request you want to retrieve. Example: "c464128b-71f9-4de8-973c-14e2c8b3eaac".

Response

200 Success

Under data (getPurchaseRequestOutput):

Field Type Required Description
id string yes The unique identifier for the purchase request.
purchaseRequestNumber string no The purchase request number, for example 'PR-1', unique across purchase requests. Absent until one has been assigned.
description string no A description of what is being requested. It is shown to the vendor.
internalDescription string no Internal notes on the request, not shown to the vendor.
externalMemo string no A memo intended for the vendor.
status string no The lifecycle and approval state, in one field. Possible values: 'pendingApproval', 'approved', 'rejected', 'closed'. This resource has no separate approvalStatus.
currency string no The currency the request is denominated in. Format ISO 4217, for example 'USD'. Governs totalAmount and every line amount.
totalAmount decimal no The total requested amount, the sum of the line totals, in the request currency.
startDate date no The first day of the period the request covers. Format YYYY-MM-DD.
endDate date no The last day of the period the request covers. Format YYYY-MM-DD.
needByDate date no The date the goods or services are needed by. Format YYYY-MM-DD.
paymentTerms string no The payment-terms key requested for the resulting order, for example 'net30'.
externalId string no The identifier this request has in the upstream system that produced it. It is not unique.
vendorId string no The vendor this request is directed at. See id on GET accounting/vendors/:id. Absent when no vendor has been chosen yet.
vendorName string no The name of the vendor this request is directed at.
entityId string no The legal entity this request belongs to. See id on GET base/entities.
entityName string no The name of the legal entity this request belongs to.
departmentId string no The department raising the request. See id on GET people/departments/:id.
departmentName string no The name of the department raising the request.
lastModifiedDate date-time yes The date and time the purchase request last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ.
approvals array<object> no The approval decisions on this request, oldest first. An empty array when no approval policy has matched the request.
approvals[].decision string yes What was decided. Values include 'approve' and 'reject'.
approvals[].employeeName string no The name of the employee who decided.
approvals[].message string no The reviewer's note, where one was given.
approvals[].decidedAt date-time yes The date and time the decision was recorded, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ.
lines array<object> no The request line items, in their order on the request. An empty array when the request has none.
lines[].id string yes The unique identifier for the line item.
lines[].lineNumber string no The line number, for example 'PRL-1'. Unique across purchase request lines.
lines[].description string no A description of the line item.
lines[].isItem boolean no Whether the line references an inventory item. True for an item line, false for a free-text expense line. It is the item-versus-expense discriminator. There is no itemType field on this resource.
lines[].quantity decimal no The quantity requested, as a decimal.
lines[].price decimal no The unit price, in the request currency. Set on item lines. On expense lines the amount is on editableAmount instead.
lines[].editableAmount decimal no The directly entered line amount, in the request currency. Used on expense lines, where there is no unit price to multiply.
lines[].total decimal no The line total, in the request currency. price times quantity on an item line, editableAmount on an expense line.
lines[].currency string no The currency of the line. Format ISO 4217, for example 'USD'. Always the request currency, on each line so the line is self-describing.
lines[].status string no The delivery state of the line. Possible values: 'undelivered', 'delivering', 'delivered'. It is a delivery status, not an approval status.
lines[].priority string no The requested priority of the line. Possible values: 'high', 'medium', 'low'.
lines[].needByDate date no The date this line is needed by, when it differs from the header. Format YYYY-MM-DD.
lines[].deliveryDate date no The date this line was delivered. Format YYYY-MM-DD.
lines[].estimatedDeliveryDate date no The expected delivery date for this line. Format YYYY-MM-DD.
lines[].startDate date no The first day of the period this line covers. Format YYYY-MM-DD.
lines[].endDate date no The last day of the period this line covers. Format YYYY-MM-DD.
lines[].unitOfMeasure string no The name of the unit of measure for the quantity.
lines[].unitOfMeasureId string no The unit of measure for the quantity. See id on GET inventory/unit-of-measures/:id.
lines[].itemId string no The item this line orders. See id on GET inventory/items/:id. Present only on an item line.
lines[].departmentId string no The department this line is charged to. See id on GET people/departments/:id.
{
  "data": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "purchaseRequestNumber": "<purchaseRequestNumber>",
    "description": "<description>",
    "internalDescription": "<internalDescription>",
    "externalMemo": "<externalMemo>",
    "status": "<status>",
    "currency": "<currency>",
    "totalAmount": "19.99",
    "startDate": "2026-01-15",
    "endDate": "2026-01-15",
    "needByDate": "2026-01-15",
    "paymentTerms": "<paymentTerms>",
    "externalId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "vendorId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "vendorName": "<vendorName>",
    "entityId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "entityName": "<entityName>",
    "departmentId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "departmentName": "<departmentName>",
    "lastModifiedDate": "2026-01-15T09:30:00.000Z",
    "approvals": [
      {
        "decision": "<decision>",
        "employeeName": "<employeeName>",
        "message": "<message>",
        "decidedAt": "2026-01-15T09:30:00.000Z"
      }
    ],
    "lines": [
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "lineNumber": "<lineNumber>",
        "description": "<description>",
        "isItem": true,
        "quantity": "19.99",
        "price": "19.99",
        "editableAmount": "19.99",
        "total": "19.99",
        "currency": "<currency>",
        "status": "<status>",
        "priority": "<priority>",
        "needByDate": "2026-01-15",
        "deliveryDate": "2026-01-15",
        "estimatedDeliveryDate": "2026-01-15",
        "startDate": "2026-01-15",
        "endDate": "2026-01-15",
        "unitOfMeasure": "<unitOfMeasure>",
        "unitOfMeasureId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "itemId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "departmentId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      }
    ]
  },
  "diagnostics": [
    {
      "code": "<code>",
      "message": "<message>",
      "severity": "error",
      "path": [
        "<path>"
      ],
      "details": "<details>"
    }
  ]
}

Errors

Code Status
NOT_FOUND 400

Statuses