Actions and results
What each Purchasing button and automatic behaviour does, with worked numbers and what the system refuses.
On this page (57)
Purchase dashboardPurchase requisitionsPurchase requisitionRequisitions to orderRequests for quotationPurchase orderProcurement panelGoods receiptCalls for tendersCall for tenders recordSupplier's quote dialogAuction record dialogSupplier portal auctionPunch-out cataloguesShop a catalogueCart dialogAgreement dialogPurchase agreementsSupplier rebatesShipping notice dialogInbound shipmentsVendor billsBill matching panelBills on holdThree-way match exceptionsDebit notesRetentions heldEarly paymentsPayment holdsSuppliersSupplier recordOpen purchase ordersOverdue supplier receiptsSupplier spendSupplier performanceReceived not invoicedConsignment stockPurchase settingsReceipt tolerancesBill matching policiesApproved suppliersSupplier portal loginsSupplier applicationsSupplier registration formSupplier changesPortal homePortal loginPortal purchase ordersPortal shipping noticesShipping notices (staff)Portal invoicesPortal bills and paymentsPortal tenders and auctionsPortal early payment offersPortal My detailsPurchasing > FeaturesPurchasing > Features > Fields
Purchase dashboard
| Action | When | What you do | What happens |
|---|---|---|---|
| Figures match the documents | Posted bills and debit notes, draft RFQs, confirmed POs this month | Open Purchase > Dashboard with MTD; compare Purchase with bills less debit notes (net of tax), RFQs with draft purchase documents dated this month | Figures equal the hand count; Open PO value equals the Open purchase orders report total |
| Vendor, buyer and period filters | Two suppliers with documents | Pick one vendor; then switch period Today / QTD / YTD / Custom | Figures narrow to that vendor; the date range shown changes; Custom shows MTD figures |
| Alerts | A submitted requisition, a receipt waiting more than 3 days | Read the alert list | 'PR pending approval' and 'Receipts waiting > 3 days' counts match; other alerts (agreements ending, notices late, retentions) are counts of real records |
Purchase requisitions
| Action | When | What you do | What happens |
|---|---|---|---|
| Create and save a requisition | User with purchase.requisition.create | New; purpose, needed by, department; two lines (one catalogue, one non-catalogue); Save | Saved as Draft with a number; Estimate = sum of lines; chatter shows the save |
Purchase requisition
| Action | When | What you do | What happens |
|---|---|---|---|
| Edit only by the requester while draft or returned | Requisition of user A in Draft | As user B (also with create right) open it and Edit; Save | Server refuses 'Only the requester edits their requisition.'; once submitted even A gets 'Only a draft or returned requisition can be edited.' |
| Submit within budget | No blocking budget, or budget large enough | Open the draft; Submit | Status 'Waiting for approval'; Budget smart button 'Within' (or '-' with no budgets) |
| Submit over a blocking budget | Budget 1,000 with a blocking control on the expense account; requisition of 1,200 | Submit | Status 'Held by budget'; red message with the budget text; Approve is not offered; Return is |
| Approve by another person | Submitted requisition of user A; user B holds purchase.requisition.approve | As B: Approve | Status Approved; decided by B; a budget commitment is recorded for the estimate where budgets are active |
| Requester cannot approve | User A holds both create and approve rights | As A submit and then Approve your own requisition | Refused 'Somebody other than the requester must approve this requisition.' |
| Budget re-checked at approval | Submitted within budget; then another posting uses the budget up | Approver: Approve | Refused 'The budget no longer covers this requisition; it is held. ...' and status becomes Held by budget |
| Return with a reason | Submitted or budget-held requisition | Approver: Return; type the reason; Confirm | Status Returned; message shows 'Returned: <reason>'; requester can edit (back to Draft on save) and Submit again |
| Cancel | Draft or approved requisition not yet on any order | Cancel | Status Cancelled; any budget commitment released; a requisition with lines on an order is refused 'Part of this requisition is already on an order; cancel those lines on the order instead.' |
Requisitions to order
| Action | When | What you do | What happens |
|---|---|---|---|
| Consolidate lines into one RFQ | Two approved requisitions for the same product and the same estimated price | Tick both lines; choose supplier; Create RFQ (2) | One draft RFQ opens with ONE line for the summed quantity at the estimated price; 'Purchase requisition' field lists both numbers; both requisitions show Ordered and the RFQ under Ordered on |
| Different estimates stay separate | Same product on two requisitions at 100 and 110 | Tick both; Create RFQ | Two RFQ lines (one per price); queue empties for those lines |
| Non-catalogue line | Approved requisition with a line that has no product | Tick it; Create RFQ | Refused '<description> has no product. Choose the product to order it as.' (the screen offers no product picker |
Requests for quotation
| Action | When | What you do | What happens |
|---|---|---|---|
| Create an RFQ | Supplier Test Supplier LLC, purchasable product with VAT 5% | New request; supplier; date; line 10 x 450, discount 5%; Save | Draft number issued; totals 4,275.00 + VAT 213.75 = 4,488.75; shown under Requests for quotation |
| Supplier price fills the line | Product has a supplier price row for this supplier (tiered or per carton) | Add the product without typing a price | Price is the supplier's price for that quantity and date; a per-carton quote shows the line in cartons; empty supplier row -> product cost |
| Print and email attachment | A saved RFQ | Print > Request for quotation; Download PDF; Download email attachment | PDF of the RFQ (draft only); copy label Original/Duplicate; 'PDF downloaded and archived. Attach it to your email; no email has been sent.' |
| Edit, delete a draft | Draft RFQ | Edit lines; Save; then Actions > Delete and confirm | Saved with revision; Delete removes it ('Only a draft can be deleted. Cancel it, or archive it.' for anything later) |
Purchase order
| Action | When | What you do | What happens |
|---|---|---|---|
| Approve order (confirm) with no tier | No approval tiers set; RFQ with lines | Approve order | State Confirmed; the record moves to Purchase orders; a draft receipt is raised into the order's warehouse; Receipts smart button = 1 |
| Supplier field settings at approval | Purchase field settings: Supplier reference = Required, Requested receipt date = Required | Approve an order with both empty; fill them; Approve | Refused 'Supplier reference is required by this company before this step.' (then the receipt date one); confirms once both are filled |
| Hidden supplier reference | Supplier reference = Hidden | Create an order and type a supplier reference (or send one by API) | Refused 'Supplier reference is turned off for this company.'; the field is not shown on new orders |
| Framework agreement ceiling | Active agreement PA-0001 ceiling 1,000 with this supplier; one confirmed call-off of 700 | New order naming PA-0001 with net 400; Approve order | Refused 'PA-0001 has 300.00 of its 1000.00 ceiling left; this call-off is 400.00.' |
| Amend a confirmed order (revision) | Confirmed order, nothing received or billed | Procurement > Amend; reason; Confirm | Version 1 kept under Earlier versions; unstarted receipt cancelled; order back to draft as version 2; needs its approvals again |
| Amend refused after receipt or bill | Receipt validated (or a bill raised) | Amend | Refused 'Goods were received on <REC>; correct the order with a return, a debit note or a new order, not an amendment.' / 'Bill <no> bills this order; it cannot be amended.' |
| Reset to draft | Confirmed order whose receipt is still open | Reset to draft | Refused 'Cancel receipt <REC> before returning this order to draft.'; after cancelling the receipt it returns to draft |
| Cancel | Draft RFQ and a confirmed order | Cancel on each | State Cancelled; listed under Purchase orders with Closed stage; no reason is asked |
| Receive & bill in one step | Confirmed order with no receipt (no warehouse) | Receive & bill in one step | Goods and the payable post together; button disappears; Journal entry smart button shows the entry |
| Duplicate | A confirmed order | Actions > Duplicate | New draft RFQ with the same supplier, header and lines, today's date, own number; no receipts or approvals |
| Call-off inside the ceiling uses the agreement price | Agreement PA-0001 in force, product at 45.00, ceiling 100,000.00, supplier S | New PO for S with Purchase agreement = PA-0001; add the product (price fills 45.00); Approve order | Confirmed; the agreement shows Called off = the order's net and Left = ceiling less that |
| Value ceiling stops a call-off | Agreement ceiling 100,000.00; live call-offs net 70,000.00 | Confirm an order with net 35,000.00 naming it | Refused 'PA-0001 has 30000.00 of its 100000.00 ceiling left; this call-off is 35000.00.' |
| Quantity ceiling stops a call-off | Agreement allows 500 of product; 450 already called off | Confirm an order of 100 of it | Refused 'PA-0001 allows 500 of <code>; 450 is already called off.'; a product not on the agreement: '<code> is not on PA-0001.' |
| Retention terms validated | Draft PO | Save with Retention % 150; with Retention due after -5 days | 'Enter at most 100.'; 'Enter the number of days after the bill that the retention falls due.' |
Procurement panel
| Action | When | What you do | What happens |
|---|---|---|---|
| Approval tiers: one approval | Tier from 10,000 needs 1 approval; RFQ total 12,000 (incl. VAT) raised by user A | A presses Approve order; B (purchase.order.approve) presses Approve this version; A presses Approve order again | First refused '<PO> needs 1 approval at 12000.00; it has 0 for this version.'; badge 'Approvals 1 of 1' after B; then confirms |
| Approval belongs to a version | Approved draft with 'Approvals 1 of 1' | Edit a line price; Save; read the approvals table | Old approval shows 'No - the order changed'; badge back to 0 of 1; confirm refused until approved again |
| Two approvals by different people | Tier needs 2 approvals | B approves; B approves again; C approves | B's second refused 'You have already approved this version of the order.'; after C badge 2 of 2 |
| Acknowledgement and delivery schedule | Confirmed order, line of 10 | Record acknowledgement with reference; Delivery schedule 6 + 4 on two dates; Save schedule | Acknowledgement listed against the version; schedule shows two drops; drops not adding up are refused |
Goods receipt
| Action | When | What you do | What happens |
|---|---|---|---|
| Partial receipt with backorder | Confirmed order for 10, no tolerance | Open Receipts; set done 7; Validate | 7 into stock at the order cost; a backorder receipt for 3 is created; order stays Confirmed |
| Short within under-tolerance closes the line | Receipt tolerance for the supplier: 5% over, 2% under; order 100 | Receive 98.5; Validate | Receipt closes short with no backorder for 1.5; 97 instead leaves a backorder for 3 |
| Over-receipt tolerance and approval | Same tolerance; order 100 | Receive 104; then on a second order receive 106 without, then with 'Approve over receipt' and a reason | 104 taken; 106 refused with the tolerance message; approved by a holder of inventory.receipt.exception.approve with a reason it is taken |
Calls for tenders
| Action | When | What you do | What happens |
|---|---|---|---|
| Create a draft call for tenders | User with purchase.tender.manage; 2 suppliers, 1 purchasable product | New; title, closing in 5 days, Sealed; one line 100 units; tick both suppliers; Save | Saved as Draft with a number (own sequence); Suppliers shows 0 / 2; smart buttons Quotes in 0 / 2, Bids Sealed |
| Concurrent edit | Same draft tender open in two browsers | Save in the first; Save in the second | Second: 'This record changed; reload it and try again.' (409) |
Call for tenders record
| Action | When | What you do | What happens |
|---|---|---|---|
| Issue | Draft with a line, two suppliers invited, future closing time | Press Issue | Status 'Open for quotes'; revision up; draft quote record exists for each supplier; lines and suppliers can no longer be edited ('Only a draft call for tenders can be edited.') |
| Issue refused when incomplete | Draft without lines; draft without suppliers; draft whose closing time is now past | Press Issue on each | 'Add what is asked for before issuing.'; 'Invite at least one supplier before issuing.'; 'The closing time has already passed.' |
| Sealed tender hides prices until closing | Sealed tender with one submitted quote | As buyer open the tender before the closing time; look for the Comparison card and any price; call the comparison by API | No Comparison card, no price shown anywhere (prices are absent, not blanked); API answers 403 'This call for tenders is sealed until it closes: no price is shown before <time> UTC.'; red notice 'Sealed until ... UTC: no price is shown before then.' |
| Open tender shows offers as they arrive | Tender with Bids = Open and one submitted quote | Open the record | Comparison card is visible immediately, cheapest valid offer first with an award icon |
| Comparison normalises units | Closed tender for 24 units; A: carton of 12 at 1,200.00; B: unit price 110.00 | Close for quotes; read the comparison | A per base unit 100.00, for 24 units 2,400.00 (cheapest); B 110.00, 2,640.00. A is marked cheapest |
| Comparison total is worked from the unrounded unit price | Quote line priced per Box of 12 at 1,000.00 for 24 units | Read the comparison | Per base unit shows 83.33; for the quantity asked 2,000.00 (83.3333 x 24), not 1,999.92 |
| Submit a new version of a submitted quote | Submitted quote v1 from A while the tender is open | Press New version; change price; Save and submit | v1 becomes Superseded, v2 Submitted; only v2 is compared; Quotes in stays 1 / 2 |
| Quotes refused after closing time | Issued tender whose closing time has passed | Try Enter quote and Save / submit (and by API) | 'Quotes are recorded while the call for tenders is open, before its closing time.' / 'The call for tenders is closed; no quote is submitted after its closing time.'; a tender past its time already reads Closed |
| Close for quotes by hand | Issued tender | Press Close for quotes | Status Closed; quotes stop; the comparison and Award appear even if the time has not come |
| Award the cheapest offer | Closed tender, 100 units; A quote 100.00 (cheapest) valid; award by user C who did not raise it (C holds the manage and award rights) | As C type Award quantity 100 against A; Award | Status Awarded; one draft PO for A: 100 x 100.00 = 10,000.00 + 5% VAT 500.00 = 10,500.00; A's quote Awarded, B's Lost; PO number under Purchase orders smart button; supplier reference is A's quote reference |
| Split award across two suppliers | Closed tender 100 units; A offers 60 at 100.00; B offers 100 at 110.00 | Award A 60 (no reason) and B 40 with reason 'A cannot supply more'; Award | Two draft POs: A 60 x 100.00 = 6,000.00 + 300.00 VAT = 6,300.00; B 40 x 110.00 = 4,400.00 + 220.00 VAT = 4,620.00; award quantities stored per quote line; both quotes Awarded |
| Award rules | Closed tender, A cheapest, B dearer, one expired quote C | Award B without reason; award more than offered; award more than asked; award the expired quote; award a supplier that declined the line | '<description>: give the reason for not taking the cheapest valid offer.'; 'The supplier offered only <n>.'; '<description>: more than the <n> asked for would be awarded.'; 'C's quote expired on <date>.' (the input is disabled on the screen); 'The supplier declined that line.' |
| Whoever raised the tender cannot award it | Closed tender raised by user B who holds both the manage and award rights | As B press Award | Refused 'Somebody other than whoever raised this call for tenders must award it.' (403) |
| Award is refused for a disqualified supplier | Company setting 'Require qualified suppliers' on; supplier A not qualified for the product | Award A | Refused with the supplier-qualification message for the award line; nothing created |
| Award feeds the requisition | Tender line came from an approved requisition line of 100 | Award 100 to A | The requisition line shows 100 ordered and links to the new PO; requisition status follows (Ordered) |
| Cancel a tender | Draft, issued or closed tender | Cancel; give a reason; Confirm | Status Cancelled with the reason added to the notes; an awarded or cancelled tender: 'An awarded call for tenders cannot be cancelled.' |
Supplier's quote dialog
| Action | When | What you do | What happens |
|---|---|---|---|
| Record and submit a quote with a carton price | Open tender for 24 units; supplier A | Enter quote for A: priced per Carton, base units 12, price 1,200.00, tax 5%; Save and submit | Quote state Submitted; Quotes in 1 / 2; the line is stored in cartons |
| Submit an empty quote | Open tender, supplier draft quote with no lines saved | Submit it (API) | 'Enter the supplier's prices before submitting the quote.' |
Auction record dialog
| Action | When | What you do | What happens |
|---|---|---|---|
| Create, then publish an auction | Issued tender with lines and invited suppliers; user with manage right | New; pick the tender; start in 5 min, end in 65; opening price 2,500; Save as draft; open it; Publish | Draft, then Published (shows Scheduled before the start time, then Live); only one auction per tender |
| Ranking and what bidders see | Three suppliers bid | Open the auction as staff; open as a bidder with 'rank only' and with 'rank and best price' | Staff see rank, lot totals and per-line prices, and the full bid history newest first; the screen refreshes every 5 seconds; bidders see only their rank (or rank plus best price) |
| Close now | Live auction | Close now; leave the reason empty, then type one | Empty refused 'This field is required.'; with reason the auction closes at once and its end time becomes now |
| Award the lowest bidder | Ended auction; ranking A 1,990.00, B 2,100.00; user C holds manage and award rights, did not raise it | Open; Award with the default (lowest) winner | Draft PO for A: every tender line at A's bid price and the quote's tax; auction Awarded with winner and PO link; tender Awarded; A's quote Awarded, others Lost |
| Award a higher bid needs a reason | Same auction | Choose B in Award to; Award; leave reason empty then fill | 'Give the reason for not awarding the lowest bid.' then success with the reason stored on the auction |
| Award rules | Auction not yet ended; auction raised by the awarder; auction with no bid | Award each | 'An auction is awarded after it ends.'; 'Somebody other than whoever raised this auction must award it.'; 'Nobody bid; cancel the auction instead.' |
| Cancel an auction | Draft, published or closed auction | Cancel auction; give a reason | Status Cancelled; reason required ('This field is required.'); an awarded one: 'This auction can no longer be cancelled.'; the tender stays open for another auction |
Supplier portal auction
| Action | When | What you do | What happens |
|---|---|---|---|
| Bidding arithmetic and minimum drop | Live auction; lines 10 x A and 5 x B; drop 0.5%; opening price 2,500.00 | Supplier bids line prices 100 and 200 (lot 2,000.00); then 1,995 total; then 1,990.00 total | First bid ranked; the 1,995.00 bid refused 'Each bid must be at least 0.5% below your last (2,000.00): 1,990.00 or less.'; 1,990.00 accepted |
| Opening price, completeness, timing | Live auction | Bid with total 2,600; bid leaving a line blank; bid before start / after end | 'The opening price is 2,500.00; bid at or below it.'; 'Price <description>.'; 'The auction is not open for bids.' |
| Anti-sniping extension | Live auction ending 10:00; extend if bid in last 2 minutes by 2 minutes | Bid at 09:59; then another auction bid at 09:57 | End moves to 10:01 and the bid is flagged 'extended the end'; the 09:57 bid (3 minutes before) does not move it |
Punch-out catalogues
| Action | When | What you do | What happens |
|---|---|---|---|
| Create a catalogue; password never shown | User with purchase.configure | New; supplier; shop address https://...; login; password; Save; reopen it | Saved; password field empty with 'Set. Leave blank to keep it.'; blank password on edit keeps the old one |
| Create a catalogue | purchase.configure. | New: supplier, name, https address, login, password, save. | Saved; the password shows only as set; a duplicate name or an http:// address is refused with the messages in the field list. |
| Shop and bring a cart back | Active catalogue; buyer holds purchase.requisition.create. | Shop a catalogue > start; the supplier site posts the cart to the return address. | A session is opened with a secret return address (HOOK_URL); the cart lines come back; an unknown key says 'This cart link is not valid.', a used cart 'This cart has already become a requisition.', an old one 'This shopping session has expired; open the catalogue again.' |
Shop a catalogue
| Action | When | What you do | What happens |
|---|---|---|---|
| Start a shopping session | Active catalogue; buyer with purchase.requisition.create | Press Shop <catalogue> | A new window posts to the shop with login, a return address and OCI codes; the screen says the shop is open and polls every 3 seconds; cart row 'Shopping' appears |
| Cart returns from the shop | Open session; test post to the return address (public key link) with 5 units, PRICE 120.00, PRICEUNIT 10, description 'Stapler' | Post the OCI form to the return link | Cart row 'Cart received'; line price 12.00 (120 / 10), total 60.00; a comma price '12,50' reads 12.50; a quantity 0 line is skipped; up to 200 lines kept |
| Return link rules | Sessions open, used and older than 2 hours | Post the cart to each; post an empty cart; use a wrong key | Used: 'This cart has already become a requisition.' (409); old: 'This shopping session has expired; open the catalogue again.' (410); empty: 'The cart came back empty.'; bad key: 'This cart link is not valid.' (404) |
| A buyer sees only their own carts | Carts by two buyers | As buyer 2 open buyer 1's cart link by API | Record not found (404); a superuser can see all |
Cart dialog
| Action | When | What you do | What happens |
|---|---|---|---|
| Match lines to our products | Product with supplier code ST-100 on its supplier list for this supplier; another product with our code OFC-9 sent as MATNR | Open the returned cart | First line matched through the supplier's code, second through our code; others show 'not in our catalogue' |
| Make a requisition from the cart | Returned cart, needed-by date entered | Make a requisition | Draft requisition with one line per cart line (description + supplier code, quantity, estimated price = cart price, supplier suggested); cart becomes 'Requisition made'; you land on Purchase requisitions; a second attempt: 'This cart has already become a requisition.' |
Agreement dialog
| Action | When | What you do | What happens |
|---|---|---|---|
| Write an agreement as a draft | User with purchase.configure | New; supplier, title, 2026 period, ceiling 100,000.00; add product at 45.00 with quantity ceiling 500; Save draft | Draft agreement with number PA-...; draft can be edited; once in force or closed the dialog is read-only ('Only a draft agreement is edited.') |
Purchase agreements
| Action | When | What you do | What happens |
|---|---|---|---|
| Put in force by somebody else | Draft written by user W; approver P holds purchase.policy.approve and purchase.configure | As P press Put in force; then as W | P: status In force, 'in force, approved by P'; W: 'Somebody other than whoever wrote the agreement must put it in force.'; no price and no ceiling: 'An agreement needs agreed prices or a value ceiling.' |
| Close an agreement | In force or draft agreement | Close | Status Closed; new call-offs refused 'PA-0001 is closed, so nothing is called off from it.'; closing twice: 'That agreement is already closed.' |
Supplier rebates
| Action | When | What you do | What happens |
|---|---|---|---|
| Create and put in force | Writer W, approver P (holds purchase.policy.approve and purchase.configure) | W: New rebate, supplier, 2026, all products, From basis 0 rate 2%; Save. P: Put in force. W: try Put in force | P: In force; W refused 'Somebody other than whoever wrote it must put a rebate agreement in force.' |
| Accrue works from posted bills less debit notes | Rebate in force with tiers 0 -> 2% and 50,000 -> 3%; posted bills net 60,000.00, posted debit notes net 5,000.00 in the period; accrued earlier 1,000.00 | Accrue | Basis 55,000.00; rate 3% on the whole basis (not just the excess); due 1,650.00; only the difference 650.00 is posted (Dr Supplier rebates receivable, Cr purchase variance); message 'Accrued 650.00 ... basis of 55000.00.'; Accrue again with nothing new posts nothing |
| Tier below the threshold | Same rebate, basis 49,999.00 | Accrue | Rate 2%, due 999.98; a basis below every threshold accrues 0 |
| Settle issues one debit note | Rebate in force with due 1,650.00 and 1,650.00 accrued | Settle; then press Settle again (or by API) | Debit note of 1,650.00 (no tax) to the supplier raised, confirmed and posted; the accrual reversed; rebate status Settled; second Settle returns the same settlement, no second note. The note's own line (PUR-REBATE) is not counted in any basis |
| Settle with nothing due | Rebate in force, basis below every tier | Settle | Refused 'Nothing is due on this rebate.'; a draft rebate: 'Only a rebate agreement in force is settled.' |
Shipping notice dialog
| Action | When | What you do | What happens |
|---|---|---|---|
| Write a notice against an order | Confirmed PO line of 100; 40 received; no other notice | New notice; choose the PO; leave defaults (60 open); change to 30; add lot and expiry; Save | Notice In transit with a number; the open balance for the next notice is 30; appears on Inbound shipments |
| Over-announcing is refused | Same order (30 still to come, supplier tolerance 5% over, no more notices) | New notice for 36; then for 35 | 36: '<code>: 36 announced, but only 30 is still to come.'; 35 (30 + 5% of 100) is accepted |
| Receive the goods from the notice - once | Notice of 30 with lot and expiry; the order's receipt waiting; user holds purchase.asn.manage and inventory.operate | Receive the goods | The order's receipt validated for 30 with the lot and expiry; notice Received with the receipt number; second Receive: 'This notice has already been received or was cancelled.' |
| Receive with no receipt waiting | Notice, but the order's receipt is already done or cancelled | Receive | 'The order has no receipt waiting for goods.'; a product missing from the receipt: '<code> is not on <receipt>; receive it there by hand.' |
| Cancel a notice | Notice In transit | Cancel notice; give a reason | Status Cancelled; its quantity returns to the order's open balance; changing or cancelling a received one: 'Only a notice still in transit can be changed.' / '...cancelled.' |
Inbound shipments
| Action | When | What you do | What happens |
|---|---|---|---|
| Days late | Notice expected 3 days ago still In transit | Open Inbound shipments | Row listed first with Days late 3; a received notice leaves the list |
Vendor bills
| Action | When | What you do | What happens |
|---|---|---|---|
| Duplicate supplier invoice number | Posted bill BILL-A with vendor number AB-001; new bill from the same supplier with 'ab 001' | Open the new draft; read the Matching tab; Post | Red warning on the draft naming BILL-A; Post refused 'ab 001 from this supplier is already on BILL-A. A supplier invoice is posted once.'; the same number from another supplier posts; reversing BILL-A gives the number back |
| Vendor number required by setting | Purchase settings: Require vendor invoice on | Post a bill with the number empty | 'Enter the supplier's invoice number before posting this bill.' |
Bill matching panel
| Action | When | What you do | What happens |
|---|---|---|---|
| Three-way hold on quantity | Policy three-way, tolerance 0; PO of 10; receipt of 8; bill for 10 | Raise the bill from the order; Post | Post refused 'This bill is held by matching.'; one hold 'Billed more than' - '<code>: 10 billed against 8 received on <PO> - 2 held.'; line status Held; the hold is listed under Bills on hold |
| Quantity tolerance | Same policy with tolerance 5%; received 8 | Bill 8, then bill 9 | Bill 8: allowed (8 <= 8.4). Bill 9: 9 > 8.4, held for 1 (the excess over the 8 received), amount 1 x unit price |
| Price hold | Policy price tolerance 3% or 3.00 whichever larger; order price 100.00 | Bill at 103 then at 104 | 103 passes; 104 held: price over 4.00, amount 4.00 x quantity, message '<code>: billed at 104.00 against 100.00 ordered.'; a lower price never holds |
| Tax difference and no-order holds | Policy with 'hold tax difference'; policy requiring an order | Bill a line at 0% where the order says 5%; bill a goods line with no order behind it | Holds 'Tax differs from the order' ('<code>: tax 0% against 5% on the order.') and 'No purchase order' ('<code> is billed with no purchase order behind it.') |
| Four-way match: only accepted goods | Policy four-way; PO 10; 10 received, 2 held as damaged at receipt | Bill 10 | May bill shows 8 (accepted); 2 held until the damage is resolved |
| Match again clears a hold | Held bill (received 8, billed 10) | Receive the remaining 2; open the bill's Matching tab; Match again | Hold status Cleared (zero held); bill can Post; a posted bill: 'Only a draft bill is matched; a posted one has already been decided.' |
| Capitalise freight onto receipts | Posted bill with a freight service line 300.00; two done receipts valued 6,000.00 and 4,000.00; user holds stock.adjust | Capitalise freight; choose the line and both receipts | Landed costs of 180.00 and 120.00 (split by receipt value 60/40) created; 'a line is capitalised once' - a second attempt is refused |
Bills on hold
| Action | When | What you do | What happens |
|---|---|---|---|
| Release a hold by another person | Hold on a draft bill raised by W for an order raised by B; releaser R holds purchase.match.release and neither raised it | As R: Release; type reason; Confirm; Post the bill | Hold Released with R and the reason; bill status 'released'; the bill now posts; the release stays valid while the variance is no larger than released |
| Release refused for the makers | Same hold | As W (raised the bill), as B (raised the order), then as a user with no release right | W and B: 'Somebody other than whoever raised the bill or its order must release this hold.'; no right: 'Releasing a matching hold needs the release right.' |
| A bigger variance is held again | Hold released for 2 units | Edit the bill to 3 units over; Post | New hold for the larger variance; posting refused again; the first release stays on record |
Three-way match exceptions
| Action | When | What you do | What happens |
|---|---|---|---|
| Report shows every decision | One open, one released, one cleared hold | Open the report (opens on All); filter by tab | Rows with reason, level, variance, tolerance, owner, age in days, released by and reason |
Debit notes
| Action | When | What you do | What happens |
|---|---|---|---|
| Debit note against a posted bill | Posted bill of 10 units at 100.00 + 5% VAT | New debit note; Against bill = that bill; return 4 units; Confirm; Post | Note of 4 x 100.00 = 400.00 + 20.00 VAT = 420.00 posted; supplier balance reduced by 420.00; another 7 units later: 'BILL-... has only 6 of <code> left to credit.' |
| Debit note rules | A draft bill; a bill of another supplier | Choose each as Against bill; date the note before the bill | 'Only a posted vendor bill can be credited. This one is draft.'; 'The note must be for the same partner as the document it credits.'; 'A note cannot be dated before <bill>.' |
| Debit note without an original bill | Posted supplier | New debit note; no 'Against bill'; one product line; Post | Allowed (the field is optional); not limited to billed quantities |
Retentions held
| Action | When | What you do | What happens |
|---|---|---|---|
| Retention is held at posting | PO with Retention 10% and due after 365 days; bill 1,000.00 net + 50.00 VAT = 1,050.00 | Post the bill; open Retentions held | Row: billed net 1,000.00; retention 100.00; outstanding 1,050.00; payable now 950.00; due for release = bill date + 365 days |
| Payments stop short of retention | The held retention above | Try to pay 1,050.00 against the bill in Payments / a payment proposal | At most 950.00 can be paid while retention is held; outstanding still shows 1,050.00 and the aged creditors/ledger do not change |
| Release a retention | Held 100.00; releaser holds purchase.retention.release and raised neither bill nor order | Release; reason 'Completion certificate signed' | Status Released; payable now becomes 1,050.00; once only: 'This retention is no longer held.' |
| Release refused for the makers | Same retention | As the bill's author, as the order's author, as a user without the right | 'Somebody other than whoever raised the bill or its order releases the retention.'; 'Releasing a retention needs the retention release right.' |
| Reversing the bill cancels the retention | Bill with held retention | Reverse the bill | Retention row shows Cancelled |
Early payments
| Action | When | What you do | What happens |
|---|---|---|---|
| Offer early payment | Posted bill 10,500.00 due 30 Nov, nothing paid, no retention; offering user holds payment.prepare | Offer early payment; bill; We pay on 10 Nov; annual rate 12%; Send offer | Offer Offered: 20 days early; discount 10,500 x 12% x 20 / 365 = 69.04; To pay 10,430.96; answer-by is the day before the pay day (not earlier than today) |
| Offer rules | A posted bill | Offer with pay-on in the past, on the due date, a second offer, a draft bill, rate 60 | 'Pay on today or later.'; 'Paying early means before the due date (<date>).'; '<number> is already open on this bill.'; 'Only a posted bill is paid early.'; 'Enter at most 50.' |
| Retention and part payments reduce the base | Bill 1,050.00 with 100.00 retention held and 200.00 already paid | Offer for 20 days at 12% | Payable 750.00 (1,050 - 200 - 100); discount 750 x 12% x 20 / 365 = 4.93 |
| Supplier answer (portal) | Offered offer; supplier portal login | Accept; or Decline with a reason | Accepted - to pay (or Declined); a late answer: 'This offer has lapsed.'; an answered one: 'This offer has already been answered.'; only the offer's own supplier sees it |
| Settle only when paid in time | Accepted offer: pay 10,430.96 against the bill on or before the pay day | Settle (first without the payment, then after) | Without: 'Pay 10430.96 against the bill, dated on or before <date>, first.'; after: a debit note for 69.04 at the bill's tax rates posted and set against the bill, bill closed, offer Paid early |
| Offers lapse | Offered offer past its answer day; accepted offer unpaid after the pay day | Open the list | Both show Lapsed (no discount; bill owed in full); a new offer on the bill is then possible |
| Withdraw | Offered or accepted offer | Withdraw with a reason | Status Withdrawn; reason required; a settled offer: 'Only an open offer is withdrawn.' |
Payment holds
| Action | When | What you do | What happens |
|---|---|---|---|
| Place a hold on one bill | Posted supplier bill; user with payment.prepare | Place a hold; Hold = A bill; choose it; reason | Active hold; paying that bill (screen or payment proposal) is refused '<BILL> is on payment hold: <reason>'; other bills of the supplier pay normally |
| Place a hold on a whole supplier | Supplier with several bills | Place a hold; Hold = A supplier | Every payment to the supplier refused 'This supplier is on payment hold: <reason>'; a second hold on the same bill or supplier: 'That is already on payment hold.' |
| Release a hold | Active hold; user with payment.approve | Release; type the note | Status Released with released by and note; payments possible again; no note: 'Say why the hold is being lifted.' |
Suppliers
| Action | When | What you do | What happens |
|---|---|---|---|
| Create a supplier | partner.manage | Purchase > Suppliers > New. Name 'Gulf Test Trading LLC', type Vendor, payment days 30, tax number 100123456700003. Save. | Supplier saved with the next code in the CUST-nnnnn series (the code prefix is the same for suppliers); appears in Suppliers and in the supplier pickers of RFQs, tolerances, policies and portal logins; payment days must be 0 to 365 ('Payment terms must be 0–365 days.'). |
| A customer-only contact is not offered as a supplier | A contact of type Customer exists. | Open Purchase > Configuration > Receipt tolerances > New, scope Supplier; open the Supplier list in the dialog. | Only Vendor and Customer + Vendor contacts are offered; forcing a customer id through the API gives 'Choose a supplier.' |
Supplier record
| Action | When | What you do | What happens |
|---|---|---|---|
| Bank account added on the record is Pending | Supplier open; user holds partner.bank.reveal. | Add a bank account with a valid IBAN and save. | The account is listed as Pending (verified by a call-back) until somebody records the verification; a user without partner.bank.reveal sees IBAN and account number masked. |
Open purchase orders
| Action | When | What you do | What happens |
|---|---|---|---|
| Open quantity and value are worked per line | A confirmed order line: 100 pieces at AED 50, discount 10%; 40 received, none returned. | Open Reporting > Open purchase orders with As at = today. | Ordered 100, Received 40, Open 60. Open value = 60 x (50 less 10%) = 60 x 45.00 = 2,700.00 (times the order's exchange rate for a foreign-currency order). The total at the foot is the sum of Open value. |
| Returns reduce what counts as received | As above; 10 of the 40 returned to the supplier (vendor return done). | Refresh the report. | Received 30, Open 70, Open value 3,150.00. Cancelled orders, draft orders and one-step 'posted' orders never appear; service lines are not listed (goods only). |
| The As at date hides later orders | An order dated 2026-10-10 exists. | Set As at to 2026-10-01. | The order dated 10 October is not listed; set As at to 2026-10-10 and it appears. |
| Promised date: schedule, else delivery date, else receipt date | Three open lines: one with a delivery schedule drop of 2026-10-05, one on an order whose delivery date is 2026-10-07, one with only a scheduled receipt on 2026-10-09. | Read the Promised column. | 05 Oct, 07 Oct and 09 Oct in that order of precedence; a line with none of the three shows an empty Promised and Days late 0. |
| Open a row | Report has rows. | Click a row. | The purchase order opens on the document screen. |
Overdue supplier receipts
| Action | When | What you do | What happens |
|---|---|---|---|
| Days late and ordering | Open lines promised 2026-09-20 and 2026-09-28; As at 2026-10-02. | Open Reporting > Overdue supplier receipts. | Days late 12 and 4; the 12-day line is first; a line promised today or later is not listed; a partly received line counts only for what is still to arrive; the total is the open value of the listed rows only. |
Supplier spend
| Action | When | What you do | What happens |
|---|---|---|---|
| Spend = bills less debit notes | Supplier A: posted bills net 10,000 and 5,000 in the period, one posted debit note net 1,500. Supplier B: posted bill net 13,500. | Open Reporting > Supplier spend, From 2026-01-01, To today. | Supplier A: Bills 2, Billed 15,000.00, Credited 1,500.00, Spend 13,500.00. Supplier B Spend 13,500.00. Total 27,000.00; Share 50.0% each. Draft and cancelled documents are ignored; amounts are net of tax in company currency; the Tax column is shown apart (debit-note tax is subtracted). |
| Default period | Today is in 2026. | Open the report without touching the dates. | From = 1 January of this year, To = today. |
| A foreign-currency bill uses its booked rate | A USD bill net 1,000 booked at 3.6725. | Read the Billed column. | Billed 3,672.50 AED (net x the rate the document was booked at). |
Supplier performance
| Action | When | What you do | What happens |
|---|---|---|---|
| On-time, in-full and returned percentages | In the period supplier A had 4 validated receipts, 3 of them on or before the promised date, 2 taking the whole line quantity; 5 units returned of 100 received. | Open Reporting > Supplier performance. | Receipts 4, On time 75.0%, Out of 4, In full 50.0%, Returned 5.0%. A receipt with no promised date and no scheduled date is not counted in the on-time denominator ('Out of'). |
| Price holds column | Two vendor bills of supplier A in the period were held for a price above the order. | Read Price holds. | Price holds 2 (only holds with the reason 'price'; bills dated outside the period are not counted). |
Received not invoiced
| Action | When | What you do | What happens |
|---|---|---|---|
| Received but not billed | An order line of 10 pieces at AED 20; 8 received on 2026-09-20; nothing billed. | Open Reporting > Received not invoiced, As at 2026-10-02. | Row: Received 8, Not billed 8, Value 160.00, First received 2026-09-20, Age 12 days, Status Received, not billed. A line billed in full disappears. |
| Billed before receipt | A posted bill for 10 pieces with only 6 received. | Open the report. | A row with status Billed before receipt (red) shows the 4 billed but not received. |
| Tie-out to the GRNI account | GRNI posting is on with an account set; some receipts posted. | Read the note above the list. | 'GRNI account <code>: ledger X · these lines Y · difference Z.' When GRNI posting is off the note says so; with no account the note says to set it under Finance > Configuration > Posting accounts. |
Consignment stock
| Action | When | What you do | What happens |
|---|---|---|---|
| Consignment quantities | A consignment order of 100; 100 received into the supplier's location; 30 used. | Open Reporting > Consignment stock. | Ordered 100, Still the supplier's 70, Used 30, Billed 0, To bill 30 (amber). Only the used 30 may be billed. |
Purchase settings
| Action | When | What you do | What happens |
|---|---|---|---|
| Save the switches | purchase.configure. | Tick 'A buyer may not approve their own purchase order' and Save. | 'Saved.'; the revision goes up, 'Last changed by <you>' shows; the change is in the audit trail with before/after. |
| Edit conflict on settings | Two users open the page. | User A saves; user B saves from the old page. | User B gets 'This record changed; reload it and try again.' |
| Duplicate supplier invoice numbers are refused | 'Post each supplier invoice number once' on. A posted bill of supplier A carries vendor invoice INV-1. | Enter another bill of supplier A with vendor invoice INV-1 and post. | Refused as a duplicate; after the first bill is reversed, INV-1 can be used again. |
| Buyer may not approve own order | Switch on; user raised a PO. | The same user confirms it; then a second user confirms it. | The first is refused (needs somebody other than whoever raised it); the second succeeds. With the switch off the author can confirm alone. |
| Post receipts to GRNI | A GRNI account exists in Finance posting accounts. | Tick the GRNI box and Save; receive goods on a new PO; post its bill. | Receipt credits GRNI at the order price; the bill clears GRNI and any price difference goes to purchase variance. Orders received before the switch keep the old treatment. Without an account the save is refused with the 'No account fills Goods received not invoiced' message. |
| Commit only to approved suppliers | Switch on; supplier without a qualification; PO line for a product. | Confirm the PO. | Refused: '<Supplier> is not an approved supplier for <product>.' (code SUPPLIER_NOT_QUALIFIED). After an approved in-date qualification exists it confirms. |
| Enforce the supplier's terms | Switch on; supplier's minimum quantity 50 and list price 100 for the product. | Confirm a PO line of 40 pieces; then 60 pieces at 110 without a reason; then with a reason. | 40: '<code>: this supplier sells it in at least 50; the order asks 40.' 60 at 110: '<code> is priced at 110.00 against the supplier's list of 100.00. Give the reason for the higher price before confirming.' With the reason it confirms and the line keeps a price snapshot marked manual. |
| Open and renew the supplier registration link | purchase.configure. | Tick Accept supplier registrations, Save; copy the link; click New link, Save; open the old link. | A link /api/v1/public/supplier-registration/<key> appears; after New link + Save the old link answers 'This registration link is not open.'; unticking and saving also closes it. |
| Approval tiers decide how many approvals | Tiers 0 -> 1, 10,000 -> 2, 50,000 -> 3 saved by a user with purchase.policy.approve. | Raise POs of AED 5,000, 25,000 and 60,000 (with tax) and send them for approval. | They need 1, 2 and 3 approvals by people other than the author; a total of exactly 10,000.00 needs 2 (tier is 'from'). With no tiers an order needs no approval. |
| Tiers are replaced as a list | Three tiers exist. | Remove the middle row and Save tiers. | 'Saved.'; the list now shows two tiers; the audit trail lists the saved amounts and counts. |
| Tier validation | Approval right. | Enter two tiers of 10000; then an approvals value of 6; then 11 rows. | 'Two tiers start at the same amount.'; 'Enter at most 5.'; 'Enter up to ten tiers.' Nothing is saved on a refusal. |
Receipt tolerances
| Action | When | What you do | What happens |
|---|---|---|---|
| Over-delivery allowed on a receipt | Supplier policy 5% over on a line of 100. | Receive 105 against the order; then 106. | 105 is accepted; 106 is held for an approved over-receipt in inventory. The same allowance lets a shipping notice announce up to 105. |
| Under-delivery closes the line | Supplier policy 2% under; line of 100. | Receive 98 and validate; then repeat with 97. | 98: the missing 2 is within 2% so the receipt closes short with no backorder. 97: a backorder of 3 stays open. Receiving 0 never closes short. |
| Most specific active row wins | Company row 10%, supplier row 5%, product row 1% for the same supplier and product. | Receive the product from that supplier. | The product row (1%) decides; for another product of the supplier the supplier row (5%) decides. |
| One active row per exact scope | An active supplier row exists for supplier A. | Create another active row for supplier A. | 'An active tolerance already covers exactly this; change that one.' Untick Active on the new one and it saves. |
Bill matching policies
| Action | When | What you do | What happens |
|---|---|---|---|
| Write a draft and put it in force (second person) | User A holds purchase.configure; user B holds purchase.policy.approve. | A creates MP-STD (three-way, whole company) and tries Put in force; then B puts it in force. | A is refused: 'Somebody other than the author must activate this policy.'; B succeeds, the row shows Active with Approved by B and the date. |
| Two active policies may not claim the same scope | MP-STD is active for the whole company. | Draft another company-wide policy and put it in force. | 'MP-STD v1 already covers the same scope. Make a new version of it, or archive it first.' |
| An active policy is changed by a new version | MP-STD v1 active. | Click New version; edit the copy; put it in force by the second person. | v2 is a draft until activated; on activation v1 becomes Superseded. A second New version while v2 is a draft is refused ('Version 2 of MP-STD is already being drafted.'). Editing an active row directly is refused ('Only a draft policy can be edited. Make a new version of an active one.'). |
| Quantity tolerance | Three-way policy with 10% quantity tolerance; order 10, received 8. | Bill 8.8 and post; then bill 8.9 on a second bill. | 8.8 passes (8 x 1.10 = 8.8); 8.9 is held with a quantity hold showing tolerance 10%. A bill can never exceed what was ordered. |
| Price tolerance is the larger of percent and amount | Order unit price 100; policy 2% and AED 3.00 per unit. | Bill at 103.00; then at 103.01. | Room = larger of 2.00 and 3.00 = 3.00: 103.00 passes, 103.01 is held for price. |
| Most specific policy decides | Company three-way policy and a product-level two-way policy for product P. | Bill 10 of P with only 6 received; bill 10 of another product with 6 received. | P (two-way) is billable up to the 10 ordered; the other product is held under three-way. Precedence: product, category, supplier, company. |
| Archive rules | An active policy. | A user with purchase.configure only clicks Archive; then a user with purchase.policy.approve. | The first is refused ('Retiring an active policy needs the policy approval right.'), the second succeeds. A draft can be archived by purchase.configure. |
Approved suppliers
| Action | When | What you do | What happens |
|---|---|---|---|
| Approve a qualification (second person, evidence) | Draft qualification written by user A with no evidence. | A tries Approve; B (approval right) tries Approve; A edits evidence; B approves. | A: 'Somebody other than whoever wrote it must approve a supplier qualification.'; B without evidence: 'Record the evidence the supplier was qualified on before approving.'; after evidence B approves and the row shows Approved. |
| Expired and not-yet-valid statuses | Approved row valid 2026-01-01 to 2026-09-30; another valid from 2026-11-01. | Read the Status column on 2026-10-02. | The first shows Expired, the second Not yet in force; neither lets a PO confirm when 'Commit only to approved suppliers' is on. |
| Block a supplier | Approved row. | Click Block, reason 'Failed audit'. | Status Blocked. From now every award and PO confirmation for that supplier / product is refused ('<Supplier> is blocked as a supplier for <product>: Failed audit') even when the switch is off. |
| Dated exception for an expired qualification | Expired approved row; switch on. | Click Exception, until a past date; then until today + 7 with a reason; confirm the PO. | A past date: 'An exception runs to a day that has not passed.' A valid exception lets the PO confirm until that day; afterwards it is refused again with the expired message ('...qualification expired on <date>. Renew it, or record a dated exception...'). |
| Only a draft is edited | Approved row. | Open it. | The form is read-only; the API says 'Only a draft qualification is edited; block or archive an approved one and write a new one.' |
Supplier portal logins
| Action | When | What you do | What happens |
|---|---|---|---|
| Create a portal login | purchase.portal.manage; password of 12+ characters. | New > supplier, username, name, email, temporary password > Create login. | A user of type vendor portal is made with the supplier-portal role only (member of the company), linked to that supplier, and appears Active; the supplier signs in and must change the password. |
| Close a portal login | An active login. | Close login, reason 'Left the supplier'. | The link ends, the company membership is removed, the user is deactivated if it has no other company; the row shows Closed; a second close says 'This portal login is already closed.' The closed user can no longer sign in to this company. |
Supplier applications
| Action | When | What you do | What happens |
|---|---|---|---|
| Approve an application | A waiting application; approver holds purchase.portal.manage and partner.manage. | Open it, enter a portal username and a 12+ character temporary password, Approve as supplier. | A supplier contact (kind Vendor, payment days 30) is created from the application; a portal login is made when a username was given; the row shows Approved with the supplier code and 'portal login made'. A second decision says 'This application has already been decided.' |
| Approve refused for a user without contact rights | User with purchase.portal.manage only. | Approve an application. | 'Approving a supplier needs the right to manage contacts.' (403); Reject still works for this user. |
| Reject an application | A waiting application. | Reject with reason 'No trade licence provided'. | Status Rejected with the reason and who decided; no supplier is created. |
Supplier registration form
| Action | When | What you do | What happens |
|---|---|---|---|
| Public application, duplicate and bot checks | Registration open. | Open the link without signing in; send an application with VAT 100123456700003; send again; fill the hidden Website field; send 51 applications in a day. | The first shows 'Your application <number> was received...'; the second 'An application with this number is already waiting for review.'; a VAT already on a contact 'A supplier with this tax number is already registered with us; contact your buyer.'; the trap field 'The application could not be accepted.'; the 51st 'Too many applications today; please try again tomorrow.' |
Supplier changes
| Action | When | What you do | What happens |
|---|---|---|---|
| Approve a contact change | Supplier sent a new phone and e-mail; approver holds partner.manage. | Open the change and Approve. | Nothing changed on the supplier until now; after approval the contact shows the new values (through the ordinary contact save) and the request shows Approved. |
| A new bank account needs bank rights | Supplier asked for a new bank account; the reviewer holds partner.manage but not partner.bank.reveal. | Open the change; click Approve change. | The IBAN and account number show masked and the server refuses: 'A new bank account is approved by somebody who may see bank details (finance).' A finance user with partner.bank.reveal approves; the account is added as Pending (and main only if the supplier asked). |
Portal home
| Action | When | What you do | What happens |
|---|---|---|---|
| Counts on the home page | Supplier with 2 open tenders, 5 orders (3 not yet acknowledged), 1 notice in transit. | Sign in as the supplier. | Buttons show 'Calls for tenders open: 2', 'Purchase orders: 5 (to acknowledge: 3)', 'Shipments in transit: 1'. |
Portal login
| Action | When | What you do | What happens |
|---|---|---|---|
| A login not linked to a supplier | A user with the portal right but no active link. | Open the portal. | 'This login is not linked to a supplier in this company.' (404) and no data. |
Portal purchase orders
| Action | When | What you do | What happens |
|---|---|---|---|
| Supplier sees only its own confirmed orders | Orders of suppliers A and B, one draft order for A. | Sign in as A. | Only A's confirmed / delivered / posted orders are listed; the draft is absent; opening B's order id answers 'Record not found.' |
| Acknowledge an order | Confirmed order, not acknowledged. | Open it, enter reference SO-GT-7788, Acknowledge order. | 'Acknowledged.'; the list shows Yes; the buyer's order shows the acknowledgement with the reference, date and PO version; a blank reference is refused. |
Portal shipping notices
| Action | When | What you do | What happens |
|---|---|---|---|
| Supplier sends a shipping notice (ASN) | Confirmed order line of 100, nothing received. | In the order, enter 60 in 'On this shipment', add carrier / tracking / arrival date, Send shipping notice. | 'Shipping notice sent.'; a notice ASN-nnnnn appears In transit in the portal and in Purchase > Shipping notices and Inbound shipments (source portal); the order's open-to-announce quantity for that line is now 40. |
| Over-announcing is refused | Line of 100, 60 already announced. | Announce 50 more. | '<code>: 50 announced, but only 40 is still to come.' (up to the supplier's over tolerance); an order that is not confirmed / delivered is refused: '<order> is <state>; a shipping notice is for a confirmed order.' |
Shipping notices (staff)
| Action | When | What you do | What happens |
|---|---|---|---|
| Receive the goods from the notice | A notice in transit for 60 pieces with lot LOT-77 and expiry; the order has a receipt waiting; user holds purchase.asn.manage and inventory.operate. | Open the notice and click Receive. | The order's receipt is validated with 60 pieces, the lot and expiry; the notice becomes Received and links the receipt; receiving it again says 'This notice has already been received or was cancelled.'; no waiting receipt: 'The order has no receipt waiting for goods.' |
| Cancel a notice | A notice in transit. | Cancel with a reason. | Status Cancelled; its quantities no longer count as announced; only a notice still in transit can be cancelled or edited. |
Portal invoices
| Action | When | What you do | What happens |
|---|---|---|---|
| Supplier sends an invoice from an order | Order line of 100 at AED 100 plus 5% VAT; 40 received. | In the order enter 40 under 'On your invoice', invoice INV-GT-5001, total 4,200.00, attach a PDF, Send invoice. | A draft vendor bill is created linked line by line to the order line, 'Invoice INV-GT-5001 sent: Received - being checked.'; the file is attached; the Invoices sent list shows it; staff check it and post it, after which the supplier sees Accepted and the bill in Bills and payments. |
| Wrong total is thrown away | As above. | Send the invoice with total 4,000.00. | 'Your invoice total 4000.00 is not what its lines add up to (4200.00 with tax). Check the quantities and prices.' No draft bill is left behind. |
| Repeat invoice number and over-billing | INV-GT-5001 already sent. | Send INV-GT-5001 again; then bill more than ordered. | A number already on a live bill of this supplier is refused; billing past the ordered quantity is refused at import; a repeat of the same sending is idempotent (same key). |
Portal bills and payments
| Action | When | What you do | What happens |
|---|---|---|---|
| Paid, outstanding and retention | Posted bill of AED 10,000, a payment of 4,000 applied, retention held 500. | Open Bills and payments. | Total 10,000.00, Paid 4,000.00, Outstanding 6,000.00, Retention held 500.00; only posted bills of this supplier. |
Portal tenders and auctions
| Action | When | What you do | What happens |
|---|---|---|---|
| Quote and bid as the supplier | Invited to a sealed tender and an auction. | Open the tender, price each line, Save draft, Submit quote; open the auction and bid. | A sealed tender shows only the supplier's own quote; after Submit the quote is read-only (a new version is needed); a quote after closing is refused; an auction bid above the opening price is refused ('The opening price is X; bid at or below it.') and each bid must beat the last by the minimum decrement. |
Portal early payment offers
| Action | When | What you do | What happens |
|---|---|---|---|
| Accept or decline an offer | An open early-payment offer. | Accept it; try again; wait past its answer date on another. | Accepted once; a second answer says 'This offer has already been answered.'; a lapsed one says 'This offer has lapsed.' |
Portal My details
| Action | When | What you do | What happens |
|---|---|---|---|
| Send a change request | Supplier logged in. | Change the phone, click Send change; then change the e-mail and send again. | Only fields that differ are sent; the request shows Waiting for review; a second send is refused: 'A change you sent is still waiting for review; withdraw it first to send another.'; an unchanged form: 'Nothing differs from what we hold; change a field before sending.' |
| Withdraw a request | A waiting request. | Click Withdraw. | Status Withdrawn; the buyer's Supplier changes list no longer offers it for decision; a decided request says 'This request has already been decided.' |
| Bank numbers stay masked for the supplier | Supplier has one bank account. | Open My details. | Banks show the IBAN and account number masked; status Pending / Verified is shown. |
Purchasing > Features
| Action | When | What you do | What happens |
|---|---|---|---|
| Turn a feature off | Company admin. | Turn Reverse auctions off. | The Reverse auctions menu goes and the supplier portal's Auctions entry goes; creating or changing an auction through the API is refused with capability_disabled; existing auctions stay readable. |
| Always-on features | Company admin. | Look for a switch for Purchase orders and receipts or Vendor bills and three-way match. | They are listed as always on and cannot be turned off. |
| Supplier portal switch covers four screens | Switch on. | Turn Supplier portal and applications off. | Menus Supplier portal logins, Supplier applications, Supplier changes and the portal's My details go; new portal writes (login, application decision, change request) are refused. |
Purchasing > Features > Fields
| Action | When | What you do | What happens |
|---|---|---|---|
| Supplier reference required | Supplier reference set to Required. | Confirm a PO without a supplier reference; then with one. | Refused without it; confirms with it. Hidden: the field disappears and a value sent is refused. |
| Requisition department required | Department set to Required. | Save a requisition with no department. | Refused until a department is chosen. |