22 — Receipts

Preview, send, email, SMS, Bridge print

CEO Summary

Receipts are generated from invoices/carts. Preview, email, SMS, or print via Bridge. Business value: Customer proof of purchase, paperless. Key metrics: Receipt delivery success rate. If this breaks: Customers don't get receipts; printers don't receive.

Architecture

flowchart TB subgraph triggers [Triggers] POS[POS Finalize] Inv[Invoice Paid] end subgraph api [API] Rec[receipts.routes] RecR[receipt.routes] end subgraph svc [Services] RecGen[receiptGeneration.service] RecRender[receiptRenderer] RegRec[registerReceipt.service] end subgraph out [Output] Mail[sendMail] SMS[sendSms] Bridge[Bridge print] end subgraph db [Tenant DB] Templates[(ReceiptTemplates)] end POS --> RecGen Inv --> RecGen Rec --> RecGen RecGen --> RecRender RecGen --> Templates RecGen --> Mail RecGen --> SMS RecGen --> Bridge

Overview

Receipts are generated from PosCart or Invoice. Templates support HTML with placeholders. Rate-limited.

File Structure

backend/
├── routes/
│   ├── receipts.routes.js
│   └── receipt.routes.js
├── services/
│   ├── receiptGeneration.service.js
│   ├── receiptRenderer.js
│   └── registerReceipt.service.js
├── models/
│   └── receiptTemplate.model.js
└── templates/
    └── receipt.default.html

API Endpoints

PurposeDetails
PreviewGenerate receipt HTML/PDF for preview
SendEmail or SMS receipt to customer
TemplatesCRUD receipt templates (getAll, create, update, delete, setDefault)

Template System

ReceiptTemplate — orgId, template content, isDefault. receiptGeneration.service — getReceiptTemplateWithTenantContext, create/update/delete templates. Placeholders: {{orgName}}, {{cartId}}, {{itemsHtml}}, {{totalsHtml}}, {{tenderHtml}}, {{footerNote}}.

Bridge Print

Bridge action: print — sends receipt to local printer. See 13 — Bridge & Devices.

Integration Points

SystemConnection
POSPOS finalize triggers receipt generation/send
Email & SMSsendMail, sendSms — delivery
BridgePrint action
BrandingbrandingSettings.service — receiptTemplate field

Key Paths

PathPurpose
backend/routes/receipts.routes.jsMain receipt API
backend/services/receiptGeneration.service.jsGeneration logic
backend/templates/receipt.default.htmlDefault template