Skip to main content
TAK Technology

Designing payment systems for unreliable connectivity

A payment that fails silently is worse than one that fails loudly. Notes from building BillPay for networks that drop.

Selam Girma ·

Payments

Most payment failures we see are not declines. They are timeouts: the customer has paid, the network dropped, and nobody is sure what happened.

Treat “unknown” as a first-class state

A payment is not only successful or failed. It can also be unknown. BillPay records that state explicitly, queries the downstream channel until it has an answer, and only then tells the merchant.

Make every request safe to repeat

Each request carries an idempotency key, so a merchant system can retry after a timeout without risk of charging twice.

The result is fewer support calls, and reconciliation files that match the first time.

Have a complex technology challenge?

Let's design, integrate and build the system that solves it.

Designing payment systems for unreliable connectivity | TAK Technology