← all systems
Fintech
ROLE // BACKEND SYSTEMS ENGINEER

go-payroll-engine

Async bulk salary disbursement, built to fintech production standards.

Go 1.25GinGORMPostgresRedisasynqPrometheus
the problem

Paying thousands of people at once is a correctness problem, not a CRUD problem. Duplicate payouts, failed retries and compliance are where payroll systems break. And the salary-advance market beside it traps workers in roughly 30 percent interest loans.

the solution

An async bulk disbursement engine that batches payouts onto a job queue, dedups aggressively, and treats every payment as idempotent. Compliance with PCI DSS, NDPR, SOC 2 and CBN is designed in from the start rather than retrofitted.

the system

A Gin API in front of GORM, Postgres and Redis, with asynq running the disbursement workers off a queue, Prometheus for observability, golang-migrate for schema, and JWT auth. Provider webhooks feed back through deduplicated handlers.

the hard part

A Redis-backed Bloom filter gives O(1) duplicate-webhook detection at roughly 1 percent false-positive and zero false-negative. An LRU cache holds per-key rate limiters so each tenant is throttled independently. Idempotency keys in Redis with a 24h TTL make retries safe. asynq provides priority worker queues.

why this stack

Go for high-throughput concurrent disbursement with predictable latency, a mature async-queue ecosystem in asynq, and a strong fintech tooling story.

the innovation

Earned-wage access without the debt trap. Instead of a 30 percent loan, an employee draws a slice of pay they have already earned, accrued daily from verified work. Three guardrails keep it healthy: a tapering access curve that shrinks the available percentage as payday nears, an automatic micro-savings skim that locks a small cut of every advance into savings, and a financial-health score that rewards restraint with better terms.

the potential

Payroll-as-infrastructure for African SMEs, with the earned-wage-access layer as a humane alternative to predatory advances.

next system
Bukr