CPOS Inc. is a Canadian technology company that provides payment processing, point-of-sale (POS) systems, and other tools to help small and mid-sized businesses streamline their operations.
Based in Ottawa, the company offers integrated solutions for sales, online ordering, and invoicing, specializing in payment processing to help businesses compete and grow.
The Challenge
CPOS needed a complete payment platform from scratch: a mobile app for accepting Tap-to-Pay transactions, a web dashboard for business management, and a robust backend to handle everything from subscriptions to KYC verification, while maintaining PCI compliance and supporting multi-party payment splits.
My Role: Full-Stack Engineer Timeline: 6 months Status: Production (Live)
What I Built
CPOS Pay Mobile App (React Native / Expo) – Tap to Pay on iPhone & Android via Stripe Terminal, transaction listing with advanced filtering, configurable tip and tax settings, invoice creation. Available on AppStore and Google Play
CPOS Hub Web Dashboard (React) – Role-based dashboard for merchants, admins, and support teams featuring real-time analytics, invoicing, transaction management, payout tracking, and business operations tools.
Watch me turn an iPhone into a payment terminal in 3 taps. No external hardware, no card readers, just pure NFC magic. ✨💳
Transaction History with Polish:
Smart Filtering: Search by amount, filter by status (Succeeded, Failed, Refund)
Grouped by Date: Automatic chronological grouping (Thursday, Monday, etc.)
Clean Indicators: Checkmarks for successful payments, clear failure states
Real-Time Updates: GraphQL subscriptions push new transactions instantly
📨 Digital Invoicing with Payment Collection
Complete invoicing system with email/SMS delivery and online payment:
Features:
Create invoices → Send via email/SMS → Payment page with Stripe Elements
Automated overdue detection and notifications
Full CRUD: Draft, send, resend, edit, cancel
Real-time delivery tracking (AWS SES + Pinpoint SMS)
Technical Implementation:
DynamoDB secondary indexes for fast filtering (businessId-status-dueDate)
Destination charges route payments directly to merchant accounts
Platform fee: 2.5% + $0.10 per transaction
Invoice system handling the full lifecycle: draft creation, automated delivery (email/SMS), overdue detection, public payment pages with 3D Secure, and instant status updates. Platform automatically calculates and collects 2.5% + $0.10 fee per transaction.
Web App: Real-Time Business Intelligence
Built a comprehensive analytics and operations dashboard:
Analytics
Revenue metrics with period comparisons (Today, Last 7/30 days)
Detailed transaction drilldown with Stripe metadata
One-click refund processing with reason tracking
Role-Based Access
CPOS-Admin: Full platform access and operational tools
CPOS-Developers: Feature flags and testing utilities
Subscriber-TapToPay: Standard merchant features
POV: You're a small business owner who just collected $2.00 in tips and your dashboard treats it with the same importance as the $1,771 in sales. Equality. 🤝(Test environment data, but the real-time calculations and Stripe fee breakdowns work exactly like this in production)
Stripe Connect: Multi-Party Payments
Architected complete Stripe Connect implementation for platform + merchant splits:
Why Connected Accounts: Each merchant gets their own Stripe connected account, enabling:
Direct payouts to merchant bank accounts (daily automatic settlements)
Platform fee collection (2.5% + $0.10 per transaction)
Isolated balances per business for accounting clarity
Independent tax reporting (1099s issued to each merchant)
Onboarding Flow:
Business Profile Collection
Business type (individual vs. company)
MCC code selection (1000+ categories with search)
Business details, address (Google Places validation), tax IDs
Connected Account Creation
Automatic Stripe account provisioning
Capability requests (card_payments, transfers)
Metadata linking (businessId, subscriptionId)
Identity Verification (KYC)
Stripe Identity SDK integration
Biometric verification support
Automatic limit upgrades upon verification
Bank Account Connection
ACH (US) and ACSS Debit (Canada)
Multiple account management
Verification status tracking
Transaction Processing at Scale
Stripe Connect destination charges routing to merchant accounts
Settlement tracking via "CPOS Pay Sandbox" connected accounts
Payment method variety: Visa cards ending in 4242, 3155, etc.
Behind Every Transaction: Each entry represents a Stripe webhook → DynamoDB Stream → Lambda processor → receipt generation → real-time dashboard update. The system processes webhooks, generates receipts, sends emails/SMS, and syncs data across mobile and web in real-time.
Transaction Processing at Scale
Test Environment Demonstrating Production Capabilities:
3,232 test transactions processed through Stripe Connect
2,208 succeeded payments with automatic settlement
214 refunds handled via webhook automation
6 disputes tracked through Stripe's dispute system
Multi-currency: CAD and USD support working side-by-side
What This Demonstrates:
Stripe Connect destination charges routing to merchant accounts
Settlement tracking via "CPOS Pay Sandbox" connected accounts
Payment method variety: Visa cards ending in 4242, 3155, etc.
Behind Every Transaction: Each entry represents a Stripe webhook → DynamoDB Stream → Lambda processor → receipt generation → real-time dashboard update. The system processes webhooks, generates receipts, sends emails/SMS, and syncs data across mobile and web in real-time.
Smart Subscription System
Built tiered subscription model with dynamic transaction limits:
Subscription Tiers:
14-day free trial (no card required)
Basic: $250/transaction limit
Premium: $1,000/transaction limit
Intelligent Limit Upgrades: Automatically upgrades limits when users complete both: