---
title: Delivery receipt
order: 9
updated: 2026-07-21
---

# Delivery receipt

The *Delivery Receipt* screen is the control room for everything that ships out to customers. From here you see which orders still have goods to send, review and approve the dispatch slips your team records, and browse the full delivery history — including a permanent audit trail of anything that was deleted. The screen lives under *Inventory* in the sidebar (heading *Delivery Receipt*, subtitle *Manage and approve deliveries*).

One thing to set expectations up front: **you don't record a new dispatch on this screen.** A fresh delivery (and a customer return) is raised from the order it belongs to — this screen is where those slips are then tracked, approved, corrected, or removed. See [Recording a delivery or a return](#recording-a-delivery-or-a-return) below.

## Open the screen

1. Open *Inventory* in the sidebar.
2. Click *Delivery Receipt*.

The whole page is unlocked by holding **any** delivery permission — generating a slip and following it through approval and history are one pipeline and are never separated. Concretely, you reach the page if you are a firm administrator or hold any of:

- *Generate Deliver Stock Request* (`delivery.generateDeliverStockRequest`)
- *Approve Deliver Stock Request* (`delivery.approveDeliverStockRequest`)
- *See Pending Deliveries* (`delivery.seePendingDeliveries`)
- *See Delivery History* (`delivery.seeDeliveryHistory`)

## The tabs — and who sees which

The screen is split into three tabs. Which ones appear depends on your permissions:

| Tab | Shows | Needs |
|---|---|---|
| *Pending Deliveries* | Orders that still have stock left to dispatch | *See Pending Deliveries* |
| *Pending Approvals* | Dispatch slips awaiting an approver | *See Pending Deliveries* |
| *Delivery History* | Every recorded slip (approved / rejected) | *See Delivery History* |

Firm administrators see all three. The **Approve** and **Reject** actions inside a slip are gated separately by *Approve Deliver Stock Request* — you can be allowed to *see* the pending queues without being allowed to act on them.

The active tab is written into the page URL (`?tab=…`), so browser back/forward works and you can share or bookmark a specific tab. The entity filters (customer, contact person, PO, product) are seeded from the URL too, which is how a deep-link from another page (for example, the *Pending Transfer* screen) can land you here already filtered.

## Page header controls

A single control button (the sliders icon) sits at the top-right of the page. It opens a menu that always binds to whichever tab's table is currently visible, so the same button drives all three tabs. Menu entries:

- *Toggle Columns* — a submenu to show, hide, and **drag-reorder** the visible table's columns. Grab the grip handle beside a column name to move it; *Reset* restores the defaults.
- *Tooltip Visibility* — turns the hover tooltips (customer and product detail pop-ups) on or off. This preference is remembered.
- *Advanced Filter* — appears on the *Pending Deliveries* and *Delivery History* tabs (each tab has its own filter set). A small count badge shows how many advanced filters are active.
- *Deleted Dispatch Logs* — only on *Delivery History*; opens the read-only audit trail (see [Deleted dispatch logs](#deleted-dispatch-logs)).
- *Send Delivery Receipt* — a shortcut to the receipt-emailing page. Shown only with the *Send Delivery Receipt* permission (`delivery.sendReciptToCustomer`). See [Sending delivery receipts to customers](/docs/enquiry-bank/send-delivery-receipt).
- *Delivery Note* — jumps to the [Delivery Note](/docs/inventory/delivery-challan) list (goods handed over before a sales order exists). Shown only with *See Delivery Notes* (`delivery.seeDeliveryChallans`).

## Pending deliveries

This tab lists orders that are **not yet fully delivered** — anything still owing stock to the customer. Fully delivered orders drop off automatically.

### The inline filter bar

Three quick filters sit above the table:

- *Customer* — *Search customers…*. Choosing a customer clears any contact-person filter (a CP belongs to one customer).
- *Contact Person* — *Search CPs…*. The list narrows to the chosen customer's contact persons when a customer is set.
- *PO Number* — *Search PO…*. A free-text box; it applies after a short pause (about `650 ms`) as you type, so you don't have to press Enter.

Whatever you set here stays in sync with the *Advanced Filter* modal — change a value in either place and the other updates.

### Advanced filter

Open *Advanced Filter* from the header menu (*Filter by customer, CP, PO, product or date*). The modal opens pre-filled from the inline bar and adds more fields:

- *Customer* and *Contact Person*.
- *Product Head* and *Product Code* — choosing a head clears the code (a code belongs to one head).
- *PO Number*.
- *PO Date Range* — a from/to calendar over the order's PO date.

*Apply filters* refreshes the table; *Reset all* clears everything. The number of active filters shows as a chip above the table, and clicking that chip clears them all at once.

### Reading the columns

Each order row lists its products stacked one per line, and the quantity columns line up row-for-row against them. Columns (all toggleable):

- *Customer* / *Contact Person* — hover the customer name for a detail tooltip.
- *Product* — the product code on the order line; hover for description, make, and quantity.
- *Current Stock* — the **firm-wide** available stock for that product code right now, with its unit. Zero stock is shown in red so you can see at a glance which lines can't be dispatched yet.
- *Pen Arr* — "pending arrival": stock for that product code that is on its way in (recorded but not yet received). Non-zero values are highlighted so you know more is incoming.
- *Dlvd* — quantity already delivered against this line. Green when the line is fully covered, amber when partly delivered, muted grey at zero.
- *Total* — the ordered quantity for the line.
- *Pend* — what's still outstanding (`ordered − delivered`), shown in red while anything remains.
- *PO Date* / *PO No* — from the parent order.
- *View* — opens the **order** (not a delivery), where you actually record the dispatch.

## Pending approvals

When a slip is created by someone without approval rights, it waits here for an approver.

If your firm uses [Delivery Notes](/docs/inventory/delivery-challan), a *Delivery Notes* strip appears above the main table listing notes that are *Awaiting approval* or *Link Pending*. It has its own small pagination and is hidden entirely when there's nothing in it. This strip only shows if you hold *See Delivery Notes*.

A count chip shows how many slips are queued (a trailing `+` means more will load as you scroll). Columns include *Products*, *Qty* (this slip's quantity, in accent colour), *Delivered By*, *Customer* (hidden by default), *Delivery Date*, and *Uploaded* (the exact date and time the slip was recorded). The list loads more rows automatically as you scroll. Each row's *View* opens the delivery for review (see [The delivery detail view](#the-delivery-detail-view)).

## Delivery history

This tab lists every recorded slip. Status pills — *All*, *Approved*, *Rejected* — filter the list, with a live count chip beside them. (Pending slips live on the *Pending Approvals* tab, not here.)

As on *Pending Approvals*, a *Delivery Notes* strip appears at the top listing *Approved* and *Linked* notes when you hold *See Delivery Notes*.

### Reading the columns

Products and their quantities stack one line per product, and two money columns line up alongside:

- *Cost* — the per-unit price of each product, taken from the parent order.
- *Total* — the slip's line value (quantity × price, after any discount but **before tax**). Summing this column for a slip matches the *Total Amount* on the delivery's own *Summary* card.

Prices are resolved from the order the delivery was raised against — **the delivery slip stores no prices of its own** — so if an order line was never priced, that line simply shows ₹0.00. Other columns include *Status*, *Customer* and *Contact Person* (hidden by default), *Delivered By*, *PO Date* / *PO No* (hidden by default), *Delivery Date*, and *Upload Date* (date + time). *View* opens the slip.

### Advanced filter and sorting

*Advanced Filter* on this tab (*Filter & sort by customer, CP, product or date*) offers:

- *Customer*, *Contact Person*, *Product Head*, *Product Code* (head clears code).
- Three independent date ranges: *Order Date* (the parent order's PO date), *Delivery Date* (when the goods actually went out), and *Upload Date* (when the slip was recorded).
- *Sort By* — *Upload Date*, *Delivery Date*, or *Order (PO) Date* — plus a *Direction* (*Ascending* / *Descending*). Direction only takes effect once a sort key is chosen. The default when no sort is set is newest **upload** first.

The active-filter count shows next to the status pills; the chip clears them.

## The delivery detail view

Opening a slip (from *Pending Approvals*, *Delivery History*, or the deleted-logs viewer) shows the full record. The heading reads *Delivery Entry* — or *Return Entry* with a *Return* chip when it's a customer return — alongside a status chip (*pending* / *approved* / *rejected*).

### Order details

A card with the *Customer*, *Contact Person*, *PO Date*, and *PO No* the slip belongs to.

### Delivery details

A card with *Delivered By*, *Created* (upload date + time), *Delivery Date*, and — when present — *Invoice No*, *Transport* (transporter name), and *Approved By*. The *Attachments* row shows how many files are attached; click it to open them and preview each in the browser. (Invoice number and transport name are captured on newer forward deliveries only; older slips and returns simply omit those rows.)

### Products delivered

A table of the delivered lines: *Head*, *Code*, *Qty*, *Make*, *From Location* (the godown › room › rack the goods were pulled from), and any per-line *Note*.

### Additional charges

If order charges were attached to this slip, they show as their own table here (see [Attaching the order's additional charges](#attaching-the-orders-additional-charges)).

### Summary

A card totalling the slip: *Total Amount* (after discount, before tax — includes any attached charge amounts), *Total Amount (with Tax)* (charges and their tax included), and *Total Quantity*. These are computed server-side from the parent order's pricing.

### The actions menu

The `⋮` menu (top-right of the detail view) shows only the actions you're allowed and that make sense for the slip's status:

- *Open Order View* — jump to the parent order.
- *Delivery Attachments* — view the attached files.
- *Mail History* — appears only once the receipt has been emailed (any outcome) or explicitly marked ignored; shows the send attempts and status. See [Sending delivery receipts](/docs/enquiry-bank/send-delivery-receipt).
- *Edit* — change quantities, notes, or attachments. Only the uploader, and only while the slip is *pending* or *rejected*.
- *Delete* — remove the entry. Uploader only, *pending* or *rejected* only.
- *Delete Approved Delivery* — the escape hatch for approved slips (see below).
- *Approve* / *Reject* — for approvers, on *pending* slips only.

## Approving a delivery

Approving is confirmed instantly (no dialog). On approval the slip's stock movement becomes real and the order's delivered status is recomputed. Only *pending* slips can be approved, and only by a firm admin or a holder of *Approve Deliver Stock Request* — the server re-checks this on every call, so a forged request from a user without the permission is rejected.

**Over-delivery guard.** Two pending slips can each be created while the line still looked deliverable, yet together exceed the order. At approval time the server re-sums everything already approved for that line (approved deliveries, minus approved returns, plus any *linked* delivery notes) and blocks the approval if this slip would push the line past its ordered quantity. Instead of a bland error you get a modal — *Cannot approve — order total would be exceeded* — listing each offending product with its *Ordered*, *Already delivered*, *This delivery*, and *Would total*. Edit the slip down or reject it.

**Charge conflict guard.** An order charge may be billed on only **one** approved slip. If a sibling slip claimed a charge on yours since it was drafted, approval is blocked and you're told to edit this slip to remove that charge first.

## Rejecting a delivery

*Reject* asks for confirmation (*Reject this delivery?*), then marks the slip *rejected* — no stock moves. Same permission as approving (admins or *Approve Deliver Stock Request*), and only *pending* slips can be rejected.

## Editing and deleting

- **Edit** and **delete of pending/rejected** entries are restricted to the person who uploaded the slip (`deliveredBy`) — regardless of their wider role. The server enforces this, so another user cannot edit or delete your slip even by forging the request.
- **Approved slips are locked** from the normal edit and delete paths for everyone.
- **Delete Approved Delivery** is the one exception, gated behind its own permission (`delivery.deleteApprovedDelivery`; firm admins always have it). Removing an approved delivery **adds its dispatched stock back**; removing an approved return **takes the returned stock back out** — and the order's delivered flag is recomputed either way (an order can drop from delivered back to not-delivered). This is destructive and can't be undone, which is why it sits behind a dedicated permission and a confirmation dialog.

Every deletion — pending, rejected, approved-removed, or swept away when its order is deleted or purged — first writes a frozen snapshot to the audit log (see [Deleted dispatch logs](#deleted-dispatch-logs)).

## Recording a delivery or a return

A new dispatch is raised from the order, via *Upload Delivery* in the order's actions menu (returns use *Return Entry*). See [Sales orders](/docs/enquiry-bank/orders). What you provide there — and what the server verifies:

- **Products, quantities, and the from-location.** Each line carries its own godown / room / rack, so one slip can pull items from different places. The server checks each product is actually on the order, each rack belongs to its room and each room to its godown, and that you hold *manage* scope on that location. Quantities must be positive.
- **Make.** If the order line lists makes, you must pick one of them; the server rejects a make that isn't on the line.
- **Transport Name** and **Invoice Number** — both **required** on every new forward delivery (up to `200` characters each). Returns omit them.
- **Delivery / Invoice Date** — defaults to today. Back-dating to a past date needs *Allow Back-Date Delivery* (`delivery.allowBackDateDelivery`); without it the field is locked to today. A **future** date is never allowed — the server caps any date to today.
- **Attachment (delivery note, proof of delivery).** Whether a file is mandatory is a firm setting: `deliveryReceiptAttachmentRequired` is **on by default**, so at least one file is required until the owner turns it off. The app warns you, and the server rejects the upload if the rule isn't met. The same rule applies to a return. See [Firm customisation](/docs/settings/firm-customisation).

A slip created by someone with approval rights is auto-approved; otherwise it lands in *Pending Approvals*.

## Attaching the order's additional charges

If the parent order carries additional charges (say *Freight* or *Packing*), you can bill one or more of them on a specific delivery — handy when a charge really belongs to the goods on this trip rather than the order as a whole. When you upload or edit a delivery, an *Additional Charges* section lists the order's charges still available; tick the ones this slip carries and, optionally, add a short remark against each.

A charge can be billed on only **one approved delivery**. While slips are still pending you may tick the same charge on more than one, but the moment one of them is approved the charge disappears from the others' pickers — and approving a second slip that still claims it is blocked (see [Approving a delivery](#approving-a-delivery)). A charge with nothing left to offer (none on the order, or all already billed) simply shows no picker.

Attached charges appear as their own table on the slip's detail view and roll into its *Subtotal* and *Total* on the *Summary* card (the charge amount plus its own tax; charges carry no discount). **Returns never carry charges.** You can also have these charges printed in the receipt email — off by default, turned on per firm under [Firm customisation](/docs/settings/firm-customisation), and configured on the [Delivery Receipt template](/docs/settings/document-templates#delivery-receipt-personalisation).

## Deleted dispatch logs

Whenever a delivery is removed, a full snapshot is saved to a permanent audit log **before** the record is deleted. The snapshot keeps the whole slip (customer, products, quantities, locations, charges) plus **who deleted it, when, and why**. Keeping it in a separate frozen copy means deleted slips vanish cleanly from your stock figures while the record survives for accountability.

Open it from *Delivery History* → header menu → *Deleted Dispatch Logs* (visible to anyone who can see delivery history). The read-only window has four search boxes — *Customer*, *Contact Person*, *Product Head*, *Product Code* — and lists each deleted slip with its deletion time, who deleted it, its status at deletion, and a *Reason*:

- *Approved entry deleted* — an approved slip removed with the *Delete Approved Delivery* permission.
- *Pending/rejected deleted* — a normal delete by the uploader.
- *Order deleted* / *Order purged* — swept away when the parent order was removed.

*View* reopens the deleted slip exactly as it was, with a banner naming who removed it and when. It's purely a record — there are no actions.

## Common questions

### Why can't I record a delivery from this screen?

By design. New dispatches are raised from the order (*Upload Delivery* in its actions menu) so they're always tied to a real order line. This screen tracks, approves, and audits those slips. On the *Pending Deliveries* tab the *View* button takes you straight to the order to record against it. See [Sales orders](/docs/enquiry-bank/orders).

### Can a delivery be edited after it's recorded?

You can edit your own *pending* or *rejected* entries (uploader only). Once *approved*, a slip can no longer be edited by anyone — approved records are locked. To change an approved slip you'd have to remove it with *Delete Approved Delivery* (which returns the stock) and record a fresh one.

### Approval was blocked saying the order total would be exceeded — what happened?

Another slip for the same line was approved after yours was drafted, so approving yours too would over-ship the line. The modal lists exactly which products and by how much. Edit this slip's quantities down, or reject it if the goods don't belong to this order.

### Where do I record stock the customer sent back?

From the order detail screen, use *Return Entry* (*Reverse stock received back from customer*). Returns show on this screen as *Return Entry* slips and never carry additional charges.

### Why does a delivery line show ₹0.00?

Prices are pulled live from the parent order, not stored on the slip. If that order line was never priced, the delivery line has nothing to show and reads ₹0.00.

### Who can permanently delete an approved delivery?

A firm administrator, or a user with the *Delete Approved Delivery* permission. It re-adds (or, for a return, re-removes) the stock and recomputes the order's delivered status. It can't be undone, but a snapshot is kept in the *Deleted Dispatch Logs*.

### The delivery needs a proof file but I don't have one — can I skip it?

Only if the owner has turned off the attachment requirement. By default a delivery receipt must carry at least one attachment, and the server enforces it — the requirement can be switched off firm-wide under [Firm customisation](/docs/settings/firm-customisation).
