Request a Demo
Shared FunctionalTier-2 Hardware

Cashiering & POS

Universal in-person payment acceptance for municipal service counters, self-service kiosks, and mobile POS — multi-tender transactions, cash drawer management, and end-of-day reconciliation.

≤3s

Transaction Speed

≤2s

Universal Lookup

≥500 txns

Offline Queue

Level 1

PCI-DSS

Purpose-Built for Canadian Municipalities

Ontario Compliant
MFIPPA Ready
AODA Accessible
Bilingual Support
Canadian Hosted
SOC 2 Aligned

Purpose & Scope

What this module owns

Clear ownership boundaries prevent duplication and ensure every capability has exactly one authoritative home.

Owns

8

Delegated to

4

Payment gateway processing (card authorization)

payment-engine

GL posting of revenue

financial-core

Citizen account management

civic-identity

Audit log storage

audit-trail

These capabilities are handled by dedicated modules and consumed via stable API contracts — keeping boundaries clean and ownership unambiguous.

Core Capabilities

What it does

3 capability groups comprising 8 discrete capabilities — each with API surface, business rules, and data ownership.

Search by: property roll#, utility account#, name, address, parking ticket#, court file#, dog tag#, permit#, invoice#; returns all outstanding balances across all services.

Cross-Module Search

Single search box queries property tax, utility, parking, court, recreation, licenses, and all other service balances.

Multi-Key Lookup

Search by roll number, account number, name, address, ticket number, dog tag, permit, or invoice number.

Balance Aggregation

Returns all outstanding balances for the matched entity, grouped by service type for easy selection.

Accept multiple tenders per transaction (e.g., $50 cash + $100 debit); automatic change calculation; cheque endorsement tracking.

Split Tenders

Accept any combination of cash, cheque, debit, credit, or money order in a single transaction.

Change Calculation

Automatic change calculation for cash tenders; change amount printed on receipt.

Cheque Tracking

Cheque endorsement tracking with cheque number, bank, and amount recorded for deposit preparation.

Every module owns a single bounded context, exposes stable APIs, and can be composed into any Civic product — that's the architecture that scales.

Krutik Parikh

Creator of Civic

Data Model

Entity Architecture

4 entities with 5 relationships — the authoritative schema for this bounded context.

Entities

Select an entity to explore its fields and relationships

API Surface

Integration Endpoints

8 RESTful endpoints across 4 resource groups — plus 4 domain events for async integration.

|
POST

/api/v1/pos/sessions/open

Open cashier session

POST

/api/v1/pos/sessions/{id}/close

Close & balance session

GET

/api/v1/pos/sessions/{id}/summary

Session summary report

Technical Specifications

Performance, Compliance & Configuration

Transaction Processing

Target≤ 3 seconds

Universal Lookup

Target≤ 2 seconds

Receipt Printing

Target≤ 2 seconds

Offline POS Queue

Target≥ 500 transactions

Cash Drawer Accuracy

Target100% tracking

PCI-DSS

TargetLevel 1 compliance (via payment-engine)

FAQ

Frequently Asked Questions

Ready to Integrate

Build on Cashiering & POS

Request an architecture brief, integration guide, or live demo environment for your team.