Purchase GRN Supplier Access (Internal)
Watch this as a presentation — 1 on this page, slides with narration.
Let a supplier’s own login see the GRNs you have finalised against that supplier, with their lines, settlements and linked documents. Everything is read-only, and a note appears only after you finalise it. What the supplier reads is your stored receipt: the quantity your receiving staff keyed, in the item’s base unit, as it stood when the supplier’s listing loaded. The price settings here hide a price only on a line’s detail screen: the line grids show every line’s unit price, tax and amount whatever you set, and the full line reaches the supplier’s browser either way.
Overview
Purchase GRN Supplier Access (Internal) is the supplier-facing copy of the Purchase GRN (Internal) applet. A login linked to a supplier entity opens it inside the buyer’s tenant to confirm what the buyer says it received: the goods received notes raised against that supplier, their lines and quantities, any settlements and contra records, the documents they link to, and the attached files.
The question it answers for a supplier is the one asked before every payment chase: which of my deliveries have you booked as received, and how many of each item? It answers that from the buyer’s own record, so both sides work from the same figures. For example, a distributor that delivers to twelve branches checks one list instead of calling twelve receiving counters (worked through below).
The applet is read-only — there is no create screen and no save or delete control anywhere — and its listing is always filtered to FINAL, so a GRN appears only once the buyer has finalised it. It lists every FINAL GRN on the supplier’s entity, whichever of the buyer’s branches received it. A PDF export exists but uses the buyer-side print (see Troubleshooting).
Where it fits
| Position | Document / applet | Why |
|---|---|---|
| Module | Purchasing, Inventory | Confirms receipt of goods against a purchase order. |
| The document | Purchase GRN (Internal) | Same rows; the buyer creates and finalises there. |
| Upstream (access) | Supplier | The login must have an active link to the supplier entity. |
| Upstream (document) | Purchase Order Supplier Access (Internal) | The order the GRN receives against. Its PO Detailed Report shows each receipt against the order’s quantity, which this applet does not. |
| Downstream | Purchase Invoice Supplier Access (Internal) | The invoice raised against the receipt. |
| Sibling | Purchase Return Supplier Access (Internal), Purchase Credit Note Supplier Access (Internal) | Same portal. The return is what follows a rejected receipt; the credit note is a later charge that raises what the buyer owes, not part of that path. |
| Not here | Purchase GRN Stock In (Internal), Supplier Delivery Order | A receipt the buyer books as a GRN Stock In is a different document type and is not listed here; the applet registry holds no supplier-access copy of it. A delivery order the supplier raises in its own portal does not become a GRN. |
The figures the supplier sees, and their source
Every figure is the buyer’s stored GRN, read at the moment the supplier’s listing loads; opening a GRN shows that same row and does not fetch it again. A FINAL GRN is locked on the buyer’s side, so its quantities and amounts stay as the receiving staff left them at FINAL. The one change that reaches the supplier is a void: the GRN leaves the list the next time the listing loads.
| What the supplier reads | Where it comes from |
|---|---|
| Qty on the Lines tab and the Line Items listing | The line’s stored quantity in the item’s base unit. Twenty cartons of ten read as 200. The quantity in the unit received is on the line’s own screen. |
| Unit Price, SST/VAT/GST, Txn Amount | The stored line, as the buyer saved it. The buyer’s price-hiding settings do not reach these grids (see Applet settings). |
| Total and Tax under the Lines tab | Added up in the supplier’s browser from the active goods lines. Nothing is stored as a total. |
| Transaction Date, Reference, Remarks, Currency, Tracking ID | The stored header. |
| Credit Terms, Permit No, and the whole Account tab | The copy of the supplier’s details stored on the GRN when the buyer picked the supplier — a snapshot, not the supplier record today. |
| Branch, Location, Purchaser Name, Created by | Looked up live, one call per row, when the screen loads. |
| Outstanding on the Payment tab | The goods lines’ Txn Amounts less any settlement lines stored on the GRN itself. Payments made through other documents are not counted. |
The supplier’s own delivery-order number is not on any of these screens. The buyer records it in the GRN’s External Delivery Order box, which this applet does not display. A supplier matches a GRN to its delivery by date, branch and lines, or agrees with the buyer that receiving types the delivery-order number into Reference, which the supplier does see.
Screens and menus
| Menu | What it is |
|---|---|
| Purchase GRN | The listing and the document view behind it. |
| Line Items | A listing of GRN lines across the supplier’s GRNs — one row per GRN (see below). |
| Settings | Field Settings, Default Selection, Printable Format Settings, plus Webhook, Feature Visibility, Client Side Permission and the permission listings. |
| Personalization | Personal Default Selection and sidebar order. |
Listing
Columns: Purchase GRN No, Branch, Purchaser Name, Updated Date, Created Date, Transaction Date, Created by. Most recently updated first, and always filtered to FINAL.
Advanced search offers three fields: Purchase GRN No, Created Date and Transaction Date; the quick search box takes a word. None of them widens the list beyond FINAL, and there is no branch, supplier or status filter. To find one branch’s receipts, sort or filter the Branch column on the grid.
The branch, purchaser and creator are looked up separately from the rest of the row.
Document view
Nine read-only tabs:
| Tab | Contents |
|---|---|
| Main Details | Branch, Location, Transaction Date, Credit Terms, Due Date, Reference, Remarks, Permit No, Currency, Tracking ID. The buyer’s External document numbers (your delivery order, your invoice) are not among them. |
| Account | Entity Details, Bill To and Ship To, all taken from the copy of the supplier’s details stored on the GRN when the buyer picked the supplier, not from the supplier record today. A supplier who has since moved still sees the old address on older GRNs; the buyer’s purchasing team corrects the supplier record, and that reaches only GRNs raised after the correction. |
| Lines | One row per active item line: Item Code, Item Name, UOM, Qty, Unit Price, SST/VAT/GST and Txn Amount, with a Total and a Tax worked out in the browser by adding up the rows. Qty is the quantity in the item’s base unit, so goods delivered in cartons are counted in single units here; open the line to see the quantity in the unit it was received in, unless the buyer has hidden that box. None of the price settings under Applet settings reaches this grid (see below). This is the tab to check against your delivery order. |
| Payment | Any settlement lines stored on the GRN itself (Date, Amount, Details, Remarks), with a Total of them and an Outstanding that is the lines’ Txn Amounts less that total. It counts nothing paid through another document, so a GRN whose invoice has been paid in full through a payment voucher still shows its whole value outstanding. What the buyer owes is on the purchase invoice and the buyer’s statement of account, not here; a supplier chasing payment reconciles against those. |
| Department Hdr | Segment, G/L Dimensions, Profit Center and Project: the buyer’s own analysis labels for the GRN. Each name is looked up when the tab opens, through the buyer-side lists, which need the buyer’s read permission for each; a supplier login normally has none, so the boxes stay blank, with no error. Blank is the expected result on this portal. |
| Contra | Contra records in which this GRN is the first document, read through the buyer-side contra query. As read from the code and not yet tried: without the buyer’s contra permission each record comes back masked, so a row shows a denied status, no document type and no amount, and a Date column that shows today’s date, not the contra’s. A supplier who sees a row here asks the buyer’s accounts team for the contra details. To check on one GRN, open one that you know has a contra from a supplier login and compare the row with the buyer-side screen. |
| Doc Link | Copy From / Copy To — the documents linked to this GRN’s lines, typically the order it came from and the invoice raised on it. Each linked document is fetched separately when the tab opens; if any fetch fails, the grid stays empty and no message appears. |
| Attachments | File Name, Size, Uploaded Date, Uploaded By. Clicking a row opens the attachment viewer and can download the file — but through the buyer-side download (see Troubleshooting). |
| Export | A printable-format picker and EXPORT AS PDF. There are no CSV, DOCX or ZIP buttons. |
Line Items
Columns: Purchase GRN No, Item Code, Item Name, Qty, Unit Price, SST/VAT/GST, Txn Amount; advanced search by Purchase GRN No, Item Code and Item Name. Each GRN contributes one row, holding whichever of its lines the server returns first, so a GRN with five lines shows one of them. Use it to find a GRN by item, then open the GRN’s Lines tab for the full receipt.
Opening a line shows Item Details, Serial Number, Costing Details (hidden by HIDE_COSTING_DETAILS unless the role holds SHOW_COSTING_DETAILS; when shown, its grid is empty), Pricing Details and Issue Link (a placeholder row, not the buyer’s issues).
Configuration
Before you can use it
| Prerequisite | Where it is set | Why it matters |
|---|---|---|
| The supplier’s login is linked to the supplier entity | Supplier → Login, with the link active | Every screen shows only GRNs on the linked supplier; without it the screens are empty. |
| The applet is installed for that login | Tenant Admin | Without it the login cannot open the applet, and the branch, purchaser and printable-format lookups fail. |
| The GRN is FINAL | Purchase GRN (Internal) | The listing shows FINAL GRNs only. A draft your receiving staff saved and did not finalise is invisible to the supplier. |
| The receipt is a Purchase GRN | Purchase GRN (Internal), not GRN Stock In | Only this document type is listed. |
| A printable format for this document type | Purchase GRN (Internal) → Printable Format Settings, or this applet’s own | The Export tab lists formats for INTERNAL_PURCHASE_GOODS_RECEIVED_NOTE. |
Applet settings
Settings › Field Settings is the shared field-configuration screen filtered to this applet, and
there is nothing on it that changes what this applet will let a supplier do. The 19 settings
that take effect all hide one field on a line — base quantity, the price and
discount columns, the tax and withholding-tax pickers, the Costing Details tab — and they act only on
the line’s own screen (Item Details and the Costing Details tab). The Lines tab and the Line Items
listing show Qty, Unit Price, tax and Txn Amount for every line whatever is set here. Each gives way to the
matching permission, so a supplier login holding the matching SHOW_* permission sees the field anyway.
Flip one and you can see what it did.
How settings are stored and who they apply to.
Note the shape of the condition: a hidden field comes back for anyone holding the matching SHOW_*
permission, so what a supplier sees is decided by the permission grant far more often than by the
toggle. When a supplier reports that a column has disappeared, look at what was granted, and to whom,
before you look here.
One thing about that screen is not visible on it, and on a portal your suppliers log in to it matters more than it does anywhere else in the product.
HIDE_* key only decides whether the box around a
value is drawn.
Anyone who can open the document in a browser can read what the form is holding. And the toggles do not
even keep your buying prices off a supplier’s screen: the Lines tab and the Line Items listing show
each line’s Unit Price, tax and Txn Amount whatever is set. If a figure must genuinely not reach an outside
party, it has to be kept off the document rather than hidden on it. Deciding which suppliers get a portal
login, knowing they will see the prices on their GRNs, is the buyer’s purchasing manager’s call, made
before the login is created.DEFAULT_BRANCH and DEFAULT_LOCATION are rendered and saved by the applet-local Default Selection
screen and read by nothing here — there is no create form to default. PRINTABLE is different: Printable Format Settings writes the default format into it and the Export tab reads it back as the format it will print, so it is the one key on any of these screens that changes what comes out. Everything else the
shared screen offers for this applet code is saved and never read, because this applet has no buttons,
no status flow and no write path for those keys to act on.
Document behaviour settings
Not applicable — no status, posting, workflow or e-Invoice control is exposed. FINAL and VOID happen in the buyer-side applet.
Who can change what
Twenty client-side permissions can be granted for this applet — the SHOW_* half of the pairs in the table above plus SHOW_COSTING_DETAILS. Grant them per role in Settings → Role Permission Listing.
What a supplier login can do. It can list, search and open the GRNs on its supplier, and list
printable formats, with the supplier link and the applet installed — no role permission is involved.
Export as PDF and attachment download are different: they use the buyer-side endpoints and
need the buyer-side GRN read permission, TNT_API_DOC_INTERNAL_PURCHASE_GOODS_RECEIVED_NOTE_READ_TGT_GUID.
Fields
Every field is read-only; the tables under Screens and menus list them per tab, and The figures the supplier sees says where each figure comes from. There is no create or edit form, so no validators apply.
Lifecycle and effects
This applet writes nothing to the GRN. What the supplier is looking at is the buyer’s GRN, which moves no stock and posts no journal — the GR/IR (Goods Received / Invoice Received) accrual belongs to GRN Stock In. Its role is to satisfy the purchase order’s open quantities so the invoice can be raised; voiding it has nothing financial to reverse.
What the buyer does to a GRN reaches the supplier like this:
- Saved, not finalised — not listed.
- FINAL — listed from the next listing load, with the figures as finalised.
- VOID — gone from the list at the next load. A void is refused once an invoice or any later document has knocked the GRN off, so a GRN the buyer has already billed stays as it is.
Creating, saving and deleting are not possible from this applet. For the export and attachment download, see Troubleshooting.
What it will not do, and who does it instead
- Show a receipt that is not finalised. A delivery that was counted and saved as a draft is invisible here. The buyer’s receiving staff at the branch finalise it once the count is checked; the supplier asks the buyer’s purchasing team when a delivery is missing for more than a day or two, and knows it is done when the GRN appears on the next load.
- Show a receipt booked as GRN Stock In. That is a different document type and is not listed. The buyer’s purchasing team knows which receiving path its branches use, and sends the supplier the GRN Stock In PDF when asked.
- Take a dispute or an acknowledgement. Nothing on the GRN screens writes back. A short or rejected quantity is raised with the buyer’s purchasing team, with the delivery-order number and the GRN number. Before an invoice has billed the GRN, the buyer voids it and finalises a corrected one; after that, the buyer’s accounts team corrects it through a purchase return or a purchase debit note, whichever matches what happened. The supplier knows it is settled when the corrected GRN appears here, or the return appears in its Purchase Return portal.
- Say whether the supplier has been paid. The Payment tab counts only settlement lines stored on the GRN. The buyer’s accounts payable team holds the answer, on the purchase invoice and the statement of account; ask for the statement.
- Show the supplier’s delivery-order number. Matching is by date, branch and lines, unless the buyer agrees to type it into Reference.
A delivery check at GadgetSphere
GadgetSphere Sdn Bhd buys wireless audio accessories from a regional accessory distributor that holds a supplier login on the GadgetSphere tenant. In March the distributor made three deliveries to branch GS-KV-01 against one purchase order:
| Delivery order | Delivered | Unit price |
|---|---|---|
| DO-A, 3 March | 20 cartons of 10 true-wireless earbuds | RM 89.00 each |
| DO-B, 10 March | 150 fast chargers | RM 35.00 each |
| DO-C, 24 March | 10 cartons of 10 true-wireless earbuds | RM 89.00 each |
On 15 April, before chasing payment, the distributor’s accounts clerk opens Purchase GRN in the portal and sorts the Branch column.
- Two GRNs for
GS-KV-01, not three. One dated 3 March, one dated 10 March. DO-C is not there. The portal cannot say why — a draft not yet finalised, or a receipt booked as GRN Stock In both look the same from here — so the clerk asks GadgetSphere’s purchasing team about DO-C by number. - The 3 March GRN reads Qty 200 on the Lines tab: twenty cartons, counted in single earbuds. Txn Amount RM 17,800.00 (200 × RM 89.00). This matches DO-A.
- The 10 March GRN reads Qty 144, Txn Amount RM 5,040.00 (144 × RM 35.00). The branch refused six chargers with damaged packaging at the door and received 144. The distributor bills 144, not 150, and takes the six back.
- Neither GRN shows DO-A or DO-B by number. The clerk matched them by date and lines. GadgetSphere’s receiving staff agree to type the delivery-order number into Reference from now on.
- The Payment tab on both reads the full amount outstanding. That says nothing about payment. The clerk asks GadgetSphere’s accounts payable team for a statement of account and chases from that, for RM 22,840.00 received so far (RM 17,800.00 + RM 5,040.00), plus DO-C once its GRN appears.
What success looks like: one GRN, two screens
Pick one GRN and open it twice: on the buyer’s Purchase GRN (Internal) screen and from the supplier’s login here. The check takes about thirty seconds and either side can run it.
These must agree, because both screens read the same stored row:
- the GRN number, Transaction Date and Branch;
- the item lines on the Lines tab: each line’s item code and Txn Amount;
- each line’s quantity, compared in the item’s base unit — the supplier’s Lines tab shows only that one, so on the buyer side read the line’s base quantity, not the quantity in the unit received.
These are expected to differ, and a difference is not a fault:
- Department Hdr is blank on the supplier side.
- Doc Link may be empty on the supplier side.
- The supplier’s delivery-order number shows only on the buyer side.
- A GRN the buyer voided after the supplier’s listing loaded still shows on the supplier’s screen until the supplier reloads the page.
If a figure in the first list differs, the supplier is looking at a copy loaded before the buyer finalised or voided: reload the page and compare again. If it still differs, tell the buyer’s purchasing team which GRN and which line.
Related applets
- Purchase GRN (Internal) — the buyer-side applet.
- Purchase GRN Stock In (Internal) — the document that actually moves the stock; not listed in this portal.
- Purchase Order Supplier Access (Internal) — the order behind the receipt, in the same portal, with a report of each receipt against the order.
- Purchase Invoice Supplier Access (Internal) — the invoice that follows.
- Supplier — where the login link is created.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| The listing is empty | The login has no active supplier link, or every GRN is still DRAFT (the listing shows FINAL only) | Check the link in the Supplier applet; ask the buyer to finalise. |
| One delivery is missing while others are listed | Its GRN is still a draft, was voided, or the buyer booked it as GRN Stock In | Ask the buyer’s purchasing team about that delivery by number. |
| The advanced search has no status, branch or supplier field | It offers Purchase GRN No, Created Date and Transaction Date only, and FINAL always applies | Expected. Filter the Branch column on the grid. |
| Line Items shows fewer lines than the GRN has | The listing keeps one line from each GRN | Open the GRN and read its Lines tab. |
| A quantity is ten times what you expected | Qty is in the item’s base unit; cartons are counted in single units | Open the line to see the quantity in the unit received. |
| EXPORT AS PDF returns not authorised | The export uses the buyer-side print, which requires the buyer-side GRN read permission — the supplier link alone is not enough | Ask the buyer to send the PDF. Granting the login TNT_API_DOC_INTERNAL_PURCHASE_GOODS_RECEIVED_NOTE_READ_TGT_GUID also works, but it is a buyer-side permission: unless its target is kept narrow it reaches beyond this supplier’s own GRNs. |
| The exported PDF looks wrong or fails to render | The export uses a sales-order print service (CP_COMMERCE_INTERNAL_SALES_ORDERS_JASPER_PRINT_SERVICE) for a purchase GRN; only a printable format built for that service will render | Report it; choose a format that renders, or export from the buyer-side applet. |
| An attachment will not download | Same cause as the export — the download uses the buyer-side permission | Ask the buyer for the file, or grant the same read permission with the same caution. |
| Doc Link stays empty | A linked document’s lookup failed, and the tab shows no message | Ask the buyer which order and invoice the GRN is linked to. |
| Branch or Purchaser Name is blank or shows a code | Those cells come from separate applet-login lookups; a failure is caught and its code printed | Confirm the applet is installed for the login (the lookups need the appletGuid). |
| A line field is missing for one role and present for another | A tenant-wide HIDE_* setting is on and only some roles hold the matching SHOW_* permission | Adjust in Settings → Field Settings or Settings → Role Permission Listing. |
| Changing Default Selection has no effect | No create form exists; DEFAULT_BRANCH and DEFAULT_LOCATION are saved but never read | Expected. |