Case studies/Flagship engagements
FinTech · exclusive engineering partner for 11 years

SeamlessChex

2015 - 2026

Took over a prototype stuck after two years of outside development, re-architected it on AWS in six months, then stayed the exclusive engineering partner for eleven years.

Overview

SeamlessChex processes eCheck and ACH payments for US businesses, and Paynote is its bank-transfer product. I took over a platform prototype that had been stuck after two years of outside development, re-architected it on AWS in six months, and then stayed the exclusive engineering partner for eleven years: the server and portals, the partner API, the WooCommerce plugins and, most recently, the marketing site.

The core is one Laravel codebase behind the merchant portal, the admin back office, a public REST API with a sandbox, and background jobs. It covers the whole check lifecycle: checks entered online, in bulk or through payment links, verification, batch closing, printing and electronic deposit files. Plaid and Dwolla handle verified bank accounts and ACH transfers, Stripe bills merchants for their plans, and a partner program tracks agents, deals and commissions.

Around that core sit the parts other businesses touch directly: a versioned partner API (v1/v2) that other products embed, a Checkout.js payment widget, and three WooCommerce payment plugins in the WordPress.org directory. The portal moved from AngularJS to Angular with NgRx and later took on React micro-frontends. In 2026 the marketing site moved from Webflow to Astro on Cloudflare Pages.

Eleven years in, the platform is not one application but thirteen repositories, and in September 2026 every one of them still takes commits. The two products have their own backends - eCheck on Laravel 8, Seamless ACH on PHP 8.2 with Laravel 11 and 12 - and their own Angular 14 portals, with a React 19 and Vite 7 dashboard as the single front door into both and a Next.js 16 portal handling applications and onboarding. Around them sit Python microservices on Lambda deployed by CDK, internal automation written in Python and Go, an integration hub carrying the documentation, SDKs and a hosted demo behind CloudFront, the marketing site and blog on Astro 7 and Cloudflare Pages, the WooCommerce plugin, and two Playwright suites - one per product - that exercise the payment flows end to end.

What was built

Stack

Frontend

Angular 14 + NgRx
Merchant portals for both products, grown out of the original AngularJS client
React 19 + Vite 7
The shared dashboard that signs a merchant into either product
Next.js 16
Application and onboarding portal
Astro 7 + Tailwind
Marketing site and blog on Cloudflare Pages
AngularJS 1.5
The client the platform started on, before the Angular rebuild

Backend

PHP 8.2 / Laravel 11-12
Seamless ACH backend
PHP / Laravel 8
eCheck backend, the core the platform was re-architected around
Python on AWS Lambda
Supporting microservices and side effects, deployed with CDK
Go
Part of the internal automation services
Laravel jobs + Supervisor
Background processing for batches, files and notifications
Cloudflare Pages Functions
Server-side endpoints for the marketing site

Data

MySQL 8
Primary store for merchants, checks, batches, subscriptions and API logs, on Amazon RDS in production.
Redis 6
Runs next to MySQL in the Docker Compose development environment for the server.

Infrastructure & DevOps

AWS CDK
Defines separate ECS Fargate services for portal, API, jobs, sandbox, demo and dev behind load balancers.
ECS Fargate + Docker
One image per role from the same codebase, with CPU-based autoscaling configured per service.
S3 + CloudFront
Host the Angular portals for production, dev and demo, with cache invalidation on each deploy.
SES + SNS
Transactional email, with bounce and delivery notifications fed back into the platform's email records.
CircleCI
Builds server images to ECR and deploys to ECS; builds the portals and runs Cypress tests.
GitHub Actions
Branch-based deploys of the portal and React bundle, and of the Astro site to Cloudflare Pages.

Integrations & Payments

Plaid
Bank account linking and instant verification in the portals, the API flows and the WooCommerce plugins.
Dwolla
Business customer onboarding, funding sources and ACH transfers behind Paynote.
Stripe
Merchant subscription plans, charges, coupons and invoices through Laravel Cashier.
GIACT
Bank account verification service whose response codes are recorded per check and per merchant.
Checkout.js
Embeddable eCheck payment widget with one-time and recurring options, used by the eCheck plugin.
HubSpot + Zoho CRM
Merchant deals, pipeline stages and notes pushed to HubSpot; merchant data synced to Zoho CRM on a schedule.
DocuSign
Merchant agreements sent as envelopes generated from DocuSign templates.
Twilio
SMS messages to merchants, such as phone verification codes.
Google Ads API
Offline conversion uploads by click ID, plus campaign lookups that attribute signups to ad campaigns.
Klaviyo + Mailchimp
Marketing audience profiles updated as merchants move through onboarding steps.
NeverBounce + MaxMind
Email address validation and fraud screening services integrated into the platform.

CMS & Commerce

WooCommerce plugins
SeamlessChex eCheck Payments, Paynote and Seamless ACH gateways, published in the WordPress.org plugin directory.
WooCommerce Blocks
Block-based checkout support alongside classic checkout in the eCheck and Seamless ACH gateways.

Tooling & QA

Playwright
Two end-to-end suites, one per product, exercising the payment flows
PHPUnit
Backend test suites
Cypress
Portal tests from the Angular era
OpenAPI + ReDoc
The public API contract and its rendered documentation

Engineering highlights

Took over a prototype stuck after two years of outside development and re-architected it on AWS in six months; the engagement then ran for eleven years as the exclusive engineering partner.

Split one Laravel codebase into separate Fargate services per role (portal, partner API, background jobs, sandbox, demo, dev), defined in AWS CDK, so each can be sized, scaled and deployed on its own.

Modernized the front end in stages: AngularJS, then Angular with NgRx, then React micro-frontends loaded into the Angular portal through Module Federation, with the older portal kept in service alongside its successor.

Retired the Paynote plugin in 2026 without stranding stores: Seamless ACH imports the previous gateway's settings on activation and keeps existing orders working, including status sync and refunds.

Two products, one front door: rather than making merchants learn two portals, the newest piece is a shared dashboard that signs them into eCheck or ACH from one place - the kind of consolidation only an engineering partner still there after nine years gets to do.

Each product carries its own end-to-end suite. In payments a release is not judged by unit tests; it is judged by whether money still moves.