Sending delivery receipts to customers

Once a delivery has been approved, you can email a confirmation to the customer's contact person — with the product table, optional PO copy, and the delivery's own attachments — directly from the app.

Who can send

Users with the Send Delivery Receipt to Customer permission. This permission depends on Approve Delivery Slip, so the approver-and-sender role chain is consistent.

Opening the screen

  1. Open Inventory → Delivery Receipt.
  2. Click the dropdown in the page header (top right).
  3. Pick Send Delivery Receipt.

You land on the Send Delivery Receipts page. Only approved delivery receipts that have not yet been sent (or ignored) appear here.

Filters

Five fields, search-as-you-type:

  • Customer
  • Contact Person — scoped to the selected customer.
  • Product Head
  • Product Code — scoped to the selected head.
  • PO Number

A Toggle Columns control sits on the right of the page header, same shape as the parent screen.

Sending one

Click the blue Send link on a row. A modal opens with:

  • Order Details — customer, contact person, PO date, PO no.
  • Delivery Details — delivered by, created, delivery date, approver, attachments.
  • Products Delivered — each product expandable for description and HSN. Columns: Sr · Head · Code · Qty · Cumulative · Total · Pending.
  • A Send Receipt button at the bottom.

Click Send Receipt. A toast confirms the receipt is queued for sending, the modal closes, and the row vanishes from the list. The worker takes it from there.

Top-right dropdown inside the modal

  • Open Order — closes the modal and navigates to the order page in case you need to verify anything before sending.
  • Ignore Sending The Receipt — marks the receipt as ignored. No email is sent, but the receipt is stamped (with the isIgnored flag) so it leaves the list. Useful for in-house deliveries or samples that don't need a customer-facing confirmation.

What gets emailed

Subject and body are firm-customisable from Settings → Firm Customisation → Delivery Receipt Personalisation. The body is rich-text with tokens:

  • {customer} — customer name.
  • {contactPerson} — recipient's name (with salutation, if set).
  • {poDate} and {poNo} — PO metadata.
  • {deliveryDate} — delivery date (falls back to created date).
  • {productsCommaSeparated} — comma-joined list of the customer-facing product head names (Product Head's External Display Name, falling back to the head's own name and finally the code name). Duplicates are removed so the same head isn't repeated when a delivery covers multiple codes under the same head.
  • {ProductTable} — body-only. Expands to a styled HTML table with: Sr · Head · Qty Delivered (this receipt) · Total Delivered (cumulative) · Total Qty · Pending · Description.

Two switches control attachments — Attach PO copy (PO documents uploaded when marking the order as po-arrived) and Attach delivery's own attachments (files uploaded with the delivery slip). The sender can override per-send.

Recipient mode

Same shape as quotation personalisation:

  • Contact person email — sent to the CP on the order.
  • Fixed mailbox — every receipt routed to one configured address (useful for audit firms).
  • Hybrid — sender picks between CP and the fixed mailbox at send-time.

CC and BCC lists are firm-level — managed from the same personalisation modal.

Status, retries, and audit

Each send creates a job in the Delivery Receipt Send Queue (visible under Settings → Billing → Storage). The job transitions through QUEUED → PROCESSING → SUCCESS (or FAILED). The receipt itself carries a small stamp (reciptSendToCustomer) with who sent it, when, the job's current status, and the time the mail handoff completed.

Failed sends will surface in a future Failed sends view; for now, ops can inspect the queue document for the lastError reason.

Common questions

Why is my receipt missing from the list?

Receipts disappear from the list once they're sent OR ignored. Approved receipts that are not yet stamped show up. Returns (isReturn: true) never appear here.

Can I send the same receipt twice?

No. The first send (or ignore) stamps the receipt and locks it out. A future "resend" affordance can be layered on top of the queue without changing the stamp contract.

What if the contact person has no email?

The sender modal toasts an error and the receipt stays in the list. Update the CP's email under Records → Customers → Contact Persons and try again.

Last updated 2026-05-20