Every payment system fails sometimes. The question is how often you are willing to accept failure, and what kind of failures matter most. This requires numbers. An SLO is a quantified promise about reliability. "We aim for 99.9% uptime" is one kind of SLO. "We settle 99.8% of transactions within 15 seconds" is another. Both promise something, but they measure different things.
Most payment teams inherit SLOs from somewhere else, set them too high, and then spend years trying to meet them. Or they set them too low and miss the actual failures that matter to customers.
The right approach is to start with business requirements, build SLIs that measure what matters, set SLOs that are achievable and defensible, and use error budgets to decide when to spend engineering time on reliability versus shipping new features.
Defining SLIs and Targets
For payment infrastructure, the critical SLIs are transaction success rate, settlement latency, cross-chain bridge latency, and route availability. Transaction success rate answers what percentage of payment attempts complete successfully, including all failure modes like node downtime, network partition, and consensus failure. Most payment platforms target 99.5% to 99.9% depending on customer base.
Settlement latency measures how long between transaction submission and finality. This varies by chain and by definition. Bitcoin finality is probabilistic. Solana has recent hash finality. Ethereum Layer 2 bridges have multiple finality states. Define what finality means in your context, then measure the latency percentile. Median is useless. P99 is what matters because customers experience the tail.
Most payment systems target 99.5% to 99.9% transaction success rate. Below 99.5% and you are losing customers to competitors. Above 99.95% and you are likely over-engineering. The cost of reliability grows exponentially as you approach 100%.
Cross-chain bridge latency matters if you route payments across chains. This is often longer and less predictable than single-chain transactions. A 10-second single-chain latency becomes a 2-minute bridge route. That is not a problem if you know it and communicate it.
Consumer wallets tolerate 10-30 seconds for settlement. B2B settlement platforms target sub-5-second. Real-time payments aim for sub-100ms on single chain, though cross-chain is much slower.
For blockchain specifically, you must account for chain-level failures. If the chain halts, your uptime drops to near zero regardless of your infrastructure quality. You cannot promise 99.9% availability on a new chain with unknown consensus stability. You can promise 99.9% on Ethereum or Solana if you have done the engineering work.
Error Budgets and Trade-offs
An error budget is simple. If your SLO is 99.9% uptime, your error budget is 0.1%. Over a month, that is 43 minutes of acceptable downtime. Over a year, 8.7 hours.
The error budget is your permission to fail. You can use it for planned maintenance, feature rollouts, or (if you are unlucky) unplanned incidents. Once the budget is exhausted, you must focus entirely on reliability until the next period starts.
This is psychologically powerful because it formalizes the trade-off. If your SLO is 99.9% and you have used only 10 minutes of your monthly budget, you have 33 minutes left. You can afford to deploy a risky feature that has a small chance of breaking things. If you have already used 40 minutes, you cannot. You must delay the risky feature and spend the budget on hardening instead.
Error budgets make engineering trade-offs explicit and quantifiable. Without them, the conversation is emotional. With them, you say "Do we have budget?"
For payment infrastructure, separate error budgets for different failure modes. Your infrastructure reliability budget (nodes down, network issues) is separate from your consensus failure budget (chain halts, reorg). You cannot control the latter, so you should not count against your SLO. But you should measure it and communicate it to customers.
Set different SLOs for different routes. A transaction routed through Ethereum mainnet has different latency and failure characteristics than one routed through Polygon. Do not average them. Promise specific latency for each route, or promise conditional latency (within 30 seconds, or 2 minutes for cross-chain routes).
Define what "success" means at settlement. Is it confirmation, finality, or some application-specific milestone? If you operate a bridge, settlement might mean funds locked on source chain and released on destination chain. That is much slower than on-chain finality and you should measure it separately.
Measurement and Action
You need observability. Measure every transaction end-to-end. Tag it with route, customer, amount, and outcome. Aggregate to calculate SLI values. Compare against your SLO every day.
Set up dashboards. Plot transaction success rate by route, by customer, by time of day. Plot settlement latency P50, P95, P99. Make these metrics visible to the entire team.
Alert when you are approaching budget exhaustion. If you have monthly budget of 43 minutes and you are at 35 minutes with 20 days left, increase your on-call alert threshold. Give the team a heads-up that you need to be careful.
When you miss your SLO, perform a blameless postmortem. What went wrong? Was it infrastructure, chain, or external? What would cost the least to fix? The postmortem is where error budgets do their real work. It forces the conversation about trade-offs into the open.
Once you have measured yourself against SLOs for a quarter, you have real data. You know where you are fragile. You know which routes are unreliable. You know which customers experience the worst latency. Use this data to prioritize engineering work. If your primary chain has 99.2% success rate and your SLO is 99.5%, that is the biggest gap. Fix it.
SLOs are not constraints that punish you. They are tools that align the team on what matters and expose where you should spend engineering time next.