Payments Infrastructure 2025

Centili — Global Carrier-Billing Platform

A next-gen direct carrier-billing platform orchestrating millions of transactions across 80+ markets, with MACH architecture and Temporal workflows for exactly-once guarantees.

Visit live site ↗
centili.com
Centili website — screenshot
Client
Centili
Year
2025
What we did
Operator & developer portals, Full-stack development, Design system
Stack
TypeScript, Node.js, Temporal, Kafka, Kong, GraphQL, PostgreSQL, Redis, Next.js

Carrier billing is payments on hard mode: many operators, many markets, money in motion, and no tolerance for a transaction processed twice. Centili needed a platform that orchestrates millions of these flows reliably — and front-of-house tooling that makes the complexity manageable for operators and developers alike.

The challenge

The core requirement is correctness at scale. A billing event that gets retried can’t become a double charge, and a network blip can’t lose a settlement — across 80+ markets with different rules, and against the CAMARA billing and Aduna verification standards. The previous generation leaned on asynchronous Kafka saga choreography, which is hard to reason about when money is on the line. Around that engine, two very different audiences need first-class tooling: operators who run campaigns and reconcile revenue, and developers who integrate.

The approach

We built on a MACH foundation — microservices, API-first, cloud-native — as a Turborepo monorepo. The legacy saga choreography was replaced with Temporal durable workflows that bound every payment into explicit, exactly-once executions, so 1-STEP and 2-STEP flows, retries and compensations all resolve to a single correct outcome. Kafka carries strictly-typed event schemas between services, Kong plus a GraphQL BFF fronts the APIs, and PostgreSQL and Redis serve state and read paths.

What we built

  • The Billing Engine — a Temporal worker pool running the saga heartbeat and compensation logic for exactly-once settlement
  • An API Gateway (Kong + GraphQL BFF) with rate limiting, plus an Identity Service using Keycloak and opaque MSISDN abstraction
  • A sub-100ms Risk Engine for algorithmic fraud evaluation, and a Settlement Service for fiat payouts and reconciliation
  • A Catalog/PIM and Bundling Engine handling products, variants, localized pricing matrices and pricing-waterfall evaluation
  • The Operator Dashboard and Developer Portal in Next.js / TypeScript on one shared design system, plus a Sandbox Emulator for destructive MNO testing
  • An Observability layer with a PII redactor and OpenTelemetry tracing across services

The outcome

The result is infrastructure operators can trust with real money at real volume, wrapped in tooling people actually like using. Reliability engineering and interface craft are not separate disciplines here — and that’s the standard we apply to every build, whatever its scale.

Let’s build

Have a fintech worth building right?

Tell us where you are — an idea, a rebrand, a raise, a replatform. We’ll come back with a point of view, a plan and a fixed scope, usually within one business day.