How ReceiptForge Works

ReceiptForge sits between your POS system and every receipt output channel. Design templates visually, publish instantly, render at the edge in milliseconds.

1

Design in the Studio

Open the WYSIWYG Studio and build your receipt layout visually. Add text, rows, barcodes, QR codes, and logos. Bind any field to your transaction data with our expression engine. See changes instantly in the live thermal preview.

  • Drag-and-drop element toolbox
  • Live thermal + digital preview
  • Schema-aware data binding
  • Conditional visibility rules
receipt.rml (compiled)
receipt:
  type: SALE
  sections:
    - section: header
      elements:
        - text:
            content: "$store.name"
            align: center
            style: [bold, doubleHeight]
        - text:
            content: "$store.address"
            align: center
v3.2 published to 847 stores 2 min ago
All edge nodes synced 1 min ago
Pre-publish validation passed 3 min ago
2

Publish Instantly

One click validates your template and deploys it to every store. Templates are versioned with full rollback support. Use template inheritance to manage Company > Region > Store > Terminal overrides.

  • Pre-publish validation
  • Version history with rollback
  • Template inheritance
  • Instant sync to all edge nodes
3

Render at the Edge

A lightweight Go binary runs at each store. When a transaction arrives, it maps the data, selects the template, evaluates expressions, and produces ESC/POS bytes or HTML in under 10 milliseconds. Works offline.

  • Sub-10ms render time
  • ESC/POS thermal output
  • HTML digital receipts
  • Offline-capable with local cache
POST /api/v1/render
Response (4ms):
{
  "status": "SUCCESS",
  "renderTimeMs": 4,
  "renders": [
    {
      "target": "THERMAL",
      "payload": "G0AcYTEbRQF...",
      "metadata": {
        "estimatedLines": 42,
        "hasCutCommand": true
      }
    }
  ]
}