Assembling core
Skip to content
Case study

Enterprise payments platform

A Node.js microservices payments platform built by ZettaCore — KYC onboarding, multi-currency transfers, delegated sub-user permissions and bulk payout processing, running on Kubernetes and Azure.

Payments console showing multi-currency balances, settlement volume and a queue of transfers awaiting approval
Challenge

Regulated payment operations have to do several hard things at once — verify identity to a compliance standard, move money across currencies, let corporate customers delegate access to their own staff, and process payouts in bulk. Each has a different scaling and failure profile, and a single-tenant, single-currency service cannot be stretched to cover them all.

Solution

A microservices platform where KYC, ledger, transfers, sub-user management and bulk payment processing are separately deployable services behind one API. Kubernetes on Azure gives each service its own scaling envelope, so a bulk payout run cannot starve interactive onboarding, and compliance logic can change without redeploying the transfer path.

Separating concerns that scale differently

Payment platforms fail at the seams. Identity verification is bursty and latency-tolerant; interactive transfers are latency-critical; bulk payout runs are throughput-bound and will saturate anything sharing their resources. Built as one service, the slowest path sets the constraints for every other.

The platform separates them. KYC, the ledger, transfers, sub-user management and bulk processing each run as their own deployable unit, scaled against their own load profile rather than an average of everyone else’s.

Delegated access for corporate customers

Business customers rarely have one person who does everything. Sub-user management lets a corporate account holder grant scoped access to their own staff, so an operations clerk can prepare a payment run without holding the permissions needed to approve it. The permission model is enforced at the service boundary, not in the interface.

Multi-currency without hidden coupling

Supporting more than one currency is rarely a column change. Balances, conversion, settlement timing and reconciliation all acquire a currency dimension, and reconciliation is where single-currency assumptions usually surface. Treating currency as a first-class property of the ledger keeps that logic in one place instead of scattered across every path that touches money.

Running on Kubernetes and Azure

Kubernetes supplies the isolation the architecture depends on: resource limits per service, independent rollout, and the ability to scale the bulk processor for a payout window without touching the services customers are actively using.

Detail

How it was delivered.

Context, architecture, technology and outcome for this engagement.

Regulated payment operations have to do several hard things at once — verify identity to a compliance standard, move money across currencies, let corporate customers delegate access to their own staff, and process payouts in bulk. Each has a different scaling and failure profile, and a single-tenant, single-currency service cannot be stretched to cover them all.

A microservices platform where KYC, ledger, transfers, sub-user management and bulk payment processing are separately deployable services behind one API. Kubernetes on Azure gives each service its own scaling envelope, so a bulk payout run cannot starve interactive onboarding, and compliance logic can change without redeploying the transfer path.

Node.js, microservices, Kubernetes, Azure

Deployed to production as an enterprise fintech platform.

Ready to scope it properly?

Bring the problem, the constraints and the deadline. We will come back with an architecture and an honest view of effort.