Fintech engineering

Fintech engineering for payment, compliance, on-chain, and financial computing teams.

Value has to move with controls; identity has to be defensible; integrations have to survive a provider swap or audit. The entries below split that work the way it actually breaks in production: payment rails with risk analytics, on-chain rule systems and pricing solvers, compliance-grade onboarding, open-banking plumbing, and stable-asset operations with treasury modelling — each with a different risk footprint.

See capability areasScope a technical build
Fixed-scope quoteReply within 1 business dayAny stack or languageEU-based · GDPR-ready
listener.ts
import { createPublicClient, webSocket, parseAbiItem } from 'viem';const client = createPublicClient({ transport: webSocket(RPC_WS) });/** * Watches for settlement events. The hard part of chain integration is not * subscribing — it is that a block you already acted on can be reorganised out * from under you, and that your node will drop the socket at 03:00. */client.watchEvent({ address: SETTLEMENT_CONTRACT, event: parseAbiItem('event Settled(bytes32 indexed ref, address payer, uint256 amount)'), onLogs: async (logs) => { for (const log of logs) { // Never act on one confirmation. Record it, and let the confirmation // counter below decide when it is safe to treat as final. await db.settlement.upsert({ where: { txHash: log.transactionHash }, create: { ref: log.args.ref, amountMinor: log.args.amount, confirmations: 1 }, update: { confirmations: { increment: 1 }, removed: false }, }); } }, // A reorg replays logs with removed: true. Anything already released has to be // walked back, which is why release is a separate step from observation. onError: (error) => alerts.page('chain-listener', error),});// The socket will drop. Reconnect, then backfill the gap from the last block we// definitely processed — resubscribing alone loses everything in between.client.onDisconnect(async () => { const from = await db.cursor.get('settlement'); await backfill(from, await client.getBlockNumber());});
  • confirmations before finality
  • reorg-aware
  • backfills after a dropped socket
Reading a chain is easy for about a week. What makes it production software is the last two blocks: reorgs that undo a settlement you already acted on, and a websocket that drops overnight and quietly stops delivering events.

Which layer breaks first when you scale?

Payments and risk, on-chain contracts and pricing, compliance automation, bank feeds, and programmable settlement — each fails differently and carries different vendor and regulatory edges.

FINTECH / PAYMENT INFRASTRUCTURE & RISK ANALYTICS

Payment Infrastructure & Risk Analytics

Payment flows, routing, reconciliation, Monte Carlo risk modelling, and financial data pipelines.

FINTECH / SMART CONTRACTS & PRICING SOLVERS

Smart Contracts & Pricing Solvers

Smart contract architecture, on-chain logic, custom pricing solvers in C++/Python, and off-chain integration.

FINTECH / KYC AML AUTOMATION

KYC/AML Automation

Workflow automation around onboarding, evidence handling, case flow, and compliance operations.

FINTECH / OPEN BANKING INTEGRATION

Open Banking Integration

Bank API integration work around provider abstraction, fallback logic, and maintainability.

FINTECH / STABLECOIN INFRASTRUCTURE

Stablecoin Infrastructure

Technical work around stablecoin settlement, control layers, treasury workflows, and integrations.