When a payment fails at 2am, the question is never "is something wrong." Your customers have already told you that, loudly, across every channel you have. The real question is "what, where, and how do I fix it before more money gets stuck." Observability is the entire difference between answering that question in minutes and answering it in hours, and in a payment system that gap is measured directly in customer trust and, frequently, in regulatory attention.
The three pillars, and what each is actually for
Observability is usually described as three pillars, but the descriptions often miss the point of why you need all three.
- Metrics tell you that something is wrong: an error rate spiking, settlement latency climbing past its normal band.
- Traces tell you where it is wrong, by following a single payment across every service it touches.
- Logs tell you why, with the specific detail needed to understand a particular failure.
Teams that invest seriously in only one of these are always, predictably, missing part of the picture at exactly the moment it matters most. Metrics without traces tell you the building is on fire but not which room. Logs without metrics mean you are reading detail with no idea where to look.
The metrics that actually matter for payments
Generic infrastructure metrics, CPU, memory, disk, are necessary but nowhere near sufficient. The dashboards I keep front and center are business-level, because those are the ones that tell me about the actual health of the business rather than the health of the servers.
Payment success rate broken down by corridor. Settlement latency by partner. The total value of in-flight money at any moment. The count of reconciliation breaks. These tell me whether the business is healthy, and they catch entire categories of problem that server metrics never would.
CPU at eighty percent is a curiosity worth a glance. Settlement success quietly dropping from 99.5 percent to 97 percent is an emergency. Build your alerts around the second kind of signal.
Correlation IDs are non-negotiable
Every payment must carry a single identifier that flows through every service it touches, every log line it generates, and every event it emits. Without it, debugging a cross-service payment failure degenerates into manually stitching timestamps together across half a dozen log streams, which is precisely the archaeology you cannot afford while real money sits stuck in an unknown state.
Enjoying this article?
Get more like it in your inbox — practical engineering leadership, fintech, and AI. No spam, unsubscribe anytime.
This one piece of discipline pays for itself, completely, the very first time you use it in a real incident. In .NET I propagate the correlation ID through the request pipeline and into every downstream call and event, so that one identifier can reconstruct the entire life of any transaction on demand.
Logging carefully in a regulated world
Observability and compliance pull in genuinely opposite directions here, and you have to hold both. You want rich, detailed logs to debug effectively. You absolutely must not log full card numbers, complete personal data, or anything that quietly turns your log store into a regulated data store subject to all the rules that implies.
The resolution is deliberate, structured logging: log identifiers, states, amounts where permitted, and outcomes, but never raw sensitive payloads. This requires thought on every log line that touches sensitive data, which is tedious, and it is far less tedious than discovering during an audit that your debugging convenience created a compliance breach.
Alert on symptoms, not causes
Alert on what the customer actually experiences, failed payments, slow settlements, rejected transfers, not on every internal hiccup that may or may not matter. Cause-based alerts produce a flood of noise, and noise trains your engineers, very effectively, to ignore the pager entirely. By the time a real one fires, it is buried in the hundred that did not matter.
Symptom-based alerts fire only when something the business genuinely cares about is actually broken, which is the only time anyone should be woken up. Fewer, better alerts that people trust beat a wall of alerts that people have learned to mute.

Conclusion: short incidents instead of long ones
Good observability does not prevent incidents; nothing does. What it does is make incidents short. And in a payment system, the difference between a short incident and a long one is the difference between a footnote that nobody remembers and a headline that follows you for years. Invest in business-level metrics, propagate correlation IDs everywhere, log richly but safely, and alert on what customers feel. The 2am version of you, staring at a dashboard with money stuck somewhere in the pipeline, will be profoundly grateful you did.
Get new posts in your inbox
Occasional, practical notes on engineering leadership, fintech, and building with AI. No spam, unsubscribe anytime.
Comments (7)
Leave a Comment
Ethan Lewis
July 16, 2026
Good writeup. One nit on "The metrics that actually matter for payments": in Drata you get most of this for free via a config flag.
Chuka Okafor
July 13, 2026
Quick q on "The three pillars, and what each is actually for" — how do you handle partial failures when the downstream service times out? We're on Way4 and ops keep asking for manual replay tooling.
Yakubu Ibrahim
July 12, 2026
If anyone hits this in BVN lookup rate limit specifically, we had good luck with NATS JetStream — saved us weeks of custom retry code.
Ethan Young
June 28, 2026
Does the "The three pillars, and what each is actually for" still hold on a 304-service estate? We're at the awkward middle and some of these patterns feel like they need a dedicated ops person to run properly.
Ifeoma Anyanwu
June 26, 2026
Does the "Conclusion: short incidents instead of long ones" still hold on a 259-service estate? We're at the smaller end of that and some of these patterns feel like they need a dedicated SRE to run properly.
Kemi Bakare
June 24, 2026
Good writeup. One nit on "Correlation IDs are non-negotiable": in whatever the seniors set up you get most of this for free via the native driver.
Rasheed Ogundimu
June 19, 2026
Refreshing to read this framed for our market rather than lifted from a Silicon Valley playbook. Specifically the "Logging carefully in a regulated world" piece — NIBSS write it into the audit questions, and that changes the design constraints in ways the US-centric literature never touches.
