Skip to content

area · Backend & Payments

Correct where money moves

Two backend stacks, TypeScript/NestJS and Python/FastAPI, over PostgreSQL, Redis and queues. At a regulated fintech I built the payment orchestrator of an online collections site and co-develop an in-house payment gateway on PSE and Bre-B, designed to never charge twice.

  • Idempotency, row-level locks and a transactional outbox in the gateway core
  • Signed webhooks to merchants and field-level encryption with AES-256-GCM
  • One Go connector per rail, the sole owner of that rail's credentials
  • nestjs
  • fastapi
  • go
  • postgresql
  • redis/valkey
  • bullmq

measured impact · before → after

  • Cursor pagination (300k rows)−98.8%

    33.66 ms → 0.42 ms

◆ PaymentFlowSimulator

One payment, even if you click twice

Simulate a charge's lifecycle. Try «Double-click pay»: the second attempt finds the obligation's lock and returns the same payment with the same idempotency key. At the end, replay the webhook: the already-applied event is ignored.

  1. Intent: pending
  2. Checkout (idempotent): pending
  3. Signed webhook: pending
  4. Reconciled: pending
obligation
OBL-1042
intent
—
idempotency-key
—
lock
free

AuditTrailLogappend-only

  1. Press «Pay» to start.

Demo with fictitious data: no real clients and nothing from production.

Cases

  • PSE and Bre-B payment orchestrator

    Online collections for an institutional client: payer return with precedence rules, verified webhooks and anti-abuse that never blocks a payment.

    Read the case study →
  • In-house payment gateway

    A PSP straight to the rails, without holding funds: idempotency, a transactional outbox, signed webhooks and field encryption.

  • Async export engine

    One engine for 10 business domains, with a job queue, streaming to object storage and keyset pagination.

    Read the case study →
  • Upcard · 2026in pre-production

    Payment orchestrator

    Backend and payment site

    Collections platform an institutional client's borrowers use to pay online via PSE and Bre-B. Certified by the payment processor and deployed; in pre-production testing before cutover.

    precedence rules to resolve the payer's return
    5
    payment rails
    PSE · Bre-B
    • NestJS
    • Next.js
    • PostgreSQL
    • Redis/Valkey
    • Docker
  • Upcard · 2026in development

    In-house payment gateway (PSP)

    Core co-developer

    A PSP connected directly to the PSE and Bre-B rails without holding funds, designed to never charge twice, always notify and expose explicit payment states. On its way to certification.

    field-level encryption
    AES-256-GCM
    one connector per rail, sole owner of its credentials
    Go
    • NestJS
    • Next.js
    • Go
    • PostgreSQL
    • Turborepo
  • Upcard · 2026in production

    Async export engine

    Sole author of the core

    Financial data exports without timeouts or unbounded memory: registry pattern, job queue, multipart streaming to object storage, keyset pagination and a job status API.

    cursor page time (300k rows)
    −98.8%
    business domains migrated
    10
    • NestJS
    • BullMQ
    • PostgreSQL
    • Redis

Shall we build something reliable?

I reply in English or Spanish.

Email me on Gmail