Client engagement · anonymized

One API for Many Billers

A partner-facing payments API that puts utilities, mobile carriers, top-up providers and a mobile-money partner behind one consistent, secure interface.

Many billers behind one partner APIConceptual architecture · anonymized
  1. Entry point: Partner clientmTLS · token
  2. Safeguard: Security layerAuth · JWS / JWE
  3. Core system: Payments APIPayments · payouts · refunds · top-ups
  4. Process: Fees & commissions
  5. Process: Biller adaptersREST · SOAP · file
  6. External system: Billers & partners

Agent cash operations

  1. Entry point: Cash-in / cash-out
  2. Safeguard: One-time codeHashed · expiring · bound
  3. Safeguard: Attempt limitsTime-boxed lockout
  4. External system: Webhook to partner

Partners integrate once; adapters absorb each biller’s protocol, security and settlement rules.

Challenge

Every biller spoke a different protocol — REST, SOAP or file exchange — with its own reference formats, settlement rules and security requirements. Partners needed one consistent way to make payments, payouts, refunds and top-ups. Cash-in and cash-out at agent locations had to be impossible to brute-force.

Approach

  • Normalize the model, not just the transport. One documented API exposes payments, payouts, refunds, recharges, fees, commissions and exchange rates consistently, regardless of which biller sits behind it.
  • Meet each partner's security bar. Mutual TLS where required, and signed, encrypted messages (JWS/JWE) for partners that demand message-level security.
  • Design cash operations to resist guessing. One-time codes are stored only as hashes, compared in constant time, expire, and are bound to the account, biller and transaction type. Attempts are limited, with time-boxed lockouts.
  • Reject duplicates at the door. Repeated payment and payout requests are detected per client, biller and account.

Implementation

  • Partner endpoints for payments, payouts, refunds, top-ups, fees, commissions, promotions, accounts, billers and webhooks.
  • Biller adapters for REST and SOAP services, including a WS-Security SOAP integration and an mTLS client.
  • A cash-in / cash-out service with code generation, account validation, lockouts, scheduled expiry and partner webhook notifications.
  • Event publishing to Kafka, caching, and background processing for biller master files.

Outcome

Partners integrate once and reach many billers. Agent cash operations are protected by single-use, expiring codes and bounded attempts.

Technical perspective

Each integration brings its own protocol, cryptography and failure semantics. Moving money means idempotency and auditability have to hold even when a downstream biller times out halfway through a request.

Facing something similar?

Tell us about your systems and what needs to change. We’ll tell you honestly whether we can help.

Start a Project

More work

Distribution

Connecting Legacy Accounting to Modern Commerce

A regional distributor of truck and industrial parts

  1. QuickBooks Desktop
  2. Web Connector
  3. Integration service
  4. AI categorizer
  5. Catalog + vectors
  6. Storefront

Thousands of accounting-only items became a categorized, typo-tolerant storefront, and web orders now reach QuickBooks Desktop without re-keying.

Read the case study

Financial services

Engineering Reliable Payment & Fulfillment Workflows

A regional consumer financial-services platform

  1. Cardholder
  2. 3D Secure 2
  3. Server-to-server response
  4. Verification
  5. Atomic state change
  6. Fulfillment guard

Replayed, forged and concurrent completions cannot produce a payment or a fulfillment, and gift card issuance can be frozen without stopping checkout.

Read the case study

Commerce

Adding a Multi-Vendor Marketplace to an Existing Platform

A regional consumer financial-services platform

  1. Buyers & sellers
  2. Platform
  3. Stock-sync queue
  4. Sync worker
  5. Commerce engine

Sellers can be onboarded, moderated and paid inside the existing platform, and stock reconciles even when the commerce engine is briefly unavailable.

Read the case study