View all jobs
Every line of code you write will process real money for real people, which means your work needs to be precise, well-tested, and built to be trusted. You don't need to have built a ledger before - you need to want to, and to care about getting it right.
Backend Engineer
About the Role
We're looking for a Backend Engineer to build payment systems in our core backend service. You'll work on the systems that move money - payment inflows, outflows, ledgering, settlement, and direct integrations with card networks and banking systems.Every line of code you write will process real money for real people, which means your work needs to be precise, well-tested, and built to be trusted. You don't need to have built a ledger before - you need to want to, and to care about getting it right.
What You'll Be Doing
- Build and maintain payment processing across inflows, outflows, and multi-rail settlement
- Work inside our double-entry ledger - posting entries, reconciling against processors and banks, and keeping the books provably correct
- Build and extend integrations with payment networks and Canadian banking rails
- Write clean, well-tested, production-grade TypeScript (we use NestJS, Prisma, and PostgreSQL)
- Build event-driven and durable workflows (Google Cloud Pub/Sub, Temporal) so payments retry, recover, and never double-send
- Build APIs consumed by our web and mobile apps through our backend-for-frontend layer
- Instrument what you ship - Datadog traces, structured logs, and alerts are part of done
- Review code, write tests, and help keep our engineering standards real
Who We're Looking For
- 2+ years of backend engineering experience with TypeScript/Node in production
- Solid grasp of relational databases-schema design, transactions, and what happens when two writes race
- You understand idempotency and can explain why it matters when money is involved
- Familiarity with event-driven systems or message queues (Pub/Sub, Kafka, SQS, or similar)
- You already build with AI coding tools every day and can tell when they're wrong
- You write clear PRs and clear messages, and you ask when you're stuck instead of spinning
- You'd rather make a call with most of the information than wait for all of it, and when a requirement changes mid-build you get curious about why
- You want to own something - a rail, a domain, a problem - not just close tickets
Bonus Points
- Experience with payment processing, banking integrations, or fintech
- Google Cloud Platform (Cloud Run, Cloud SQL, Pub/Sub) or Terraform
- Interest in Rust or high-performance ledgers (TigerBeetle)