Purchasing & Vendors
Raise purchase orders, receive against them, manage vendors and vendor SKUs, and track payables with vendor invoices, payments, and AP aging.
The Purchasing module covers procure-to-pay: order from vendors, receive the goods, and settle the bills.
In this section #
Detailed guides for everything covered here:
- Purchase Orders — A purchase order records a request to procure goods from a vendor and tracks the full lifecycle from draft through line-item receiving to vendor invoice creation.
- Vendors & Contacts — The supplier directory — name, contact info, linked Products, and purchase history — shared by purchasing, inventory, and AP.
- Vendor Invoices & Payments — Track bills received from suppliers — with line items, tax, PO matching, and payments — from draft through to fully paid.
- Vendor Returns — Track goods sent back to a supplier — from the initial RMA draft through submission, shipment, and completion — with a full line-item breakdown, and each unit you name taken out of stock when the return ships.
Vendors #
Maintain vendor records with contacts and custom fields, and link vendor Products — the vendor's part number, pack size, minimum order quantity, and lead time. Those details feed reorder suggestions and pack rounding. You can bring an existing list in with Import CSV.
Currency #
Purchase orders, vendor bills and vendor returns are made in their vendor's currency: your home currency, US dollars (USD), or another one the vendor is set to. A document in another currency is converted to US dollars at its exchange rate for limits, approvals, reports and totals. See Currency.
Purchase orders #
Raise a purchase order, then track it through draft → submitted → partially received → received. You can email the PO to the vendor with a PDF attachment straight from the order. Freight, duty and other charges you expect go on the order's Charges tab; see Charges.
Approvals #
Each person has a purchase limit (what they may commit on their own) and an approval limit (what they may approve for others). An order within your purchase limit goes to the vendor when you submit it; above it, the order waits for an approver and is not sent. While it waits, and once it is approved, the vendor, tax rate, lines and charges are locked. See Spend approval.
Receiving #
Receive against a PO as stock arrives, tracking received quantities per line. Partial receipts are first-class, and inventory updates as you go. Each receipt creates inventory units in the bin you choose; the receive screen, serial and lot numbers, and receiving over the API are covered in Receiving stock.
What the stock cost #
When goods are received, each unit's cost is the line's unit cost plus its share of the order's charges, its landed cost. When the vendor's bill for the order is approved, the charges on the bill replace the order's expected charges of the same type. Units still in stock take the difference into their cost; a unit that has already gone keeps the cost it left with. The prices on the bill's lines don't change a unit's cost; only its charges do. See Charges and A unit's cost. The Gross Margin report uses that cost.
Payables #
Record vendor invoices and payments, handle vendor returns, and watch outstanding payables with the AP aging report. The purchasing dashboard and vendor performance report round out the picture.
- Approving a bill is separate from entering one, and the person who raised a bill can't approve it when somebody else could. See Who may approve a bill.
- Holds. A bill against a purchase order is held out of payment when a line is billed for more than was received or above the order's price (beyond the small differences your tolerances absorb), when it asks for more than its own lines come to, or when it has no lines. Held bills are listed under Purchasing → Bills on Hold. See Bills held out of payment.
- Returns. A vendor return takes the units you send back out of stock when it ships.
- Reports. AP aging is explained under The aging reports.
- QuickBooks. An approved bill can be sent to QuickBooks as a bill; see QuickBooks.
Doing it from the API #
# List purchase orders
curl "https://your-domain.com/api/v1/purchasing/purchase-orders" \
-H "Authorization: Bearer $TOKEN"