Skip to main content
Schoolyi
School librarian arranging books and planning cards in a bright library

Browse docs

Operations

Procurement setup and usage

Vendors, purchase orders, GRN receiving, inventory, and vendor bills.

Operations guide for day and boarding schools.

Last updated August 29, 2026

Procurement is the longest handoff chain in the product: a vendor record feeds a purchase order, receiving that order writes a goods receipt, the receipt creates stock and an expense, and the vendor bill is matched back against both. Each link is created by the step before it, so an order raised against a vendor with no email cannot later be given portal access, and a bill submitted before receiving has nothing to match against and lands as unlinked.

Setup workflow

  1. Create vendors at /vendors with contact and GST.
  2. Create vendor user for portal access if they submit bills online.
  3. Define inventory items at /inventory for stock tracking.

Inviting a vendor to the portal

  • The vendor must be active and must have an email address on the vendor record; the invite is refused otherwise.
  • A Vendor role has to exist and be active in the roles list, or the invite fails with a configuration error.
  • A new login is created with a generated username and a temporary password returned once in the response, with a forced password change on first sign-in.
  • If that email already belongs to a non-vendor user the invite is refused rather than converting the account.
  • Revoking deactivates the login and unlinks it from the vendor, so the same email can be invited again later.

Purchase order lifecycle

FromAllowed nextNotes
PENDINGAPPROVED, REJECTED, CANCELLEDThe only state where items, vendor, and budget can still be edited, and the only state where the order can be deleted
APPROVEDORDERED, CANCELLEDApproval stamps the approver and the time
ORDEREDRECEIVED, CANCELLEDSent to the vendor and awaiting goods
RECEIVEDCANCELLEDCancelling reverses stock, expense, and budget

Usage workflow

  1. Purchasing: create PO at /procurement → send to vendor.
  2. Vendor: view PO at /vendor-portal; submit bill at /finance/vendor-bills.
  3. Receiving: open GRN on the PO - enter quantities received; updates inventory; print GRN from PO detail.
  4. Finance: three-way match PO + GRN + invoice → approve payment.

How the three-way match is decided

  • A bill with no purchase order and no goods receipt is marked UNLINKED and there is nothing to compare.
  • Otherwise the bill total is compared against the order total and the received value, and the larger of the two differences is recorded as the variance.
  • Within two percent of the reference amount the bill is MATCHED; above that it is VARIANCE, and the match notes spell out both totals, the amount, and the percentage.
  • A portal submission arrives as SUBMITTED and is auto-linked to the receipt for its order; a bill keyed in by finance starts as DRAFT.
  • Duplicate submissions of the same bill number for the same vendor are rejected before anything is written.

Where it goes wrong

  • Receiving before quantities are confirmed. Receiving is idempotent, so a second attempt will not correct the first - the numbers have to be fixed by cancelling the order and reversing everything.
  • Expecting a receipt to top up an existing stock item. It does not. Each received line creates a brand new inventory row in the OTHER category with the vendor name as supplier, so an unattended catalog fills with near-duplicates.
  • Editing items after approval. Line items and the vendor are locked once the order leaves PENDING.
  • Asking a vendor to submit before the goods are received. With no goods receipt to link to, the bill is matched against the order total only, and any short delivery shows up as a variance later.

Common questions

Quick answers in plain language.

Why can I not approve the purchase order I raised?+

The finance money gate blocks the creator from approving or rejecting their own request. Approval also needs leadership, and an order at or above the high-value threshold - 25,000 rupees unless FINANCE_HIGH_VALUE_INR says otherwise - needs Principal or Vice Principal specifically.

What actually happens when I mark a purchase order received?+

One transaction writes a goods receipt numbered GRN-<order number> with a line per item, commits the received value against the linked budget, creates a paid expense titled Procurement · <order number>, and adds one inventory row per line for the quantity that was stocked. Running it again is safe: an existing receipt and an existing expense are both detected and skipped.

Receiving is refused with a closed-period error. What does that mean?+

The calendar month of the order date has been closed in finance. Receiving would post spend into a closed period, so it is blocked until finance reopens that month or the order date is corrected.

Can I cancel a purchase order after it has been received?+

Yes, and the reversal is automatic. The linked expense is deleted, the budget commitment is given back, and each stock line created by that order gets a disposal movement and is zeroed and deactivated. It is the only status change allowed out of RECEIVED.

Related searches

School leaders and IT teams often search for: how to procurement workflows in school management software, best school transport software for K-12 schools, Schoolyi procurement workflows guide, procurement workflows step by step, school bus tracking app, library management software, and school inventory management.