22 — Receipts
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.
- Base path: /api/receipts
- Auth: requireSessionAuth or public (with rate limit)
- Rate limit: RL_RECEIPTS_READ_PER_MIN, RL_RECEIPTS_WRITE_PER_MIN
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
| Purpose | Details |
|---|---|
| Preview | Generate receipt HTML/PDF for preview |
| Send | Email or SMS receipt to customer |
| Templates | CRUD 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
| System | Connection |
|---|---|
| POS | POS finalize triggers receipt generation/send |
| Email & SMS | sendMail, sendSms — delivery |
| Bridge | Print action |
| Branding | brandingSettings.service — receiptTemplate field |
Key Paths
| Path | Purpose |
|---|---|
backend/routes/receipts.routes.js | Main receipt API |
backend/services/receiptGeneration.service.js | Generation logic |
backend/templates/receipt.default.html | Default template |