Skip to content
Product Design~9min read time

When the bank goes down, the payment shouldn't.

Kredive Finance is a business-banking platform for small and mid-sized businesses in Nigeria. It puts transfers, invoicing, bill payments and corporate cards in one account. Transfers were the weak point: they could fail at several points along the way, and the product told people almost nothing about what had happened or what to do next. I worked on making that reliability visible, so people can see the state of a payment, stop retrying blindly, and recover when one fails.

Role
Product Designer
Timeline
8 weeks · 2025
Scope
Reliability audit · Routing & flow design · Prototype
The Kredive Finance logo beside the redesigned transfer flow: a pre-flight screen showing the destination's live health before a payment is sent
96%First-attempt transfer successup from 82%
≈600 / daypayments auto-recovered by routing + retry
71% fewerrepeat retries into a failing destination
49% fewer“Is the bank down?” and failure-related support tickets
01

Overview

Transfers matter more than almost anything else in Kredive. When one fails, a business can miss a payroll deadline, pay a supplier late, or not know where its money has gone.

Whatever had actually gone wrong, the user saw the same thing:

“Transfer failed. Try again.”
The old failure screen, and the questions it left unanswered.

It didn't say why the transfer failed, whether the destination was having problems, whether trying again would help, or whether the account had already been debited.

I worked on everything around those failures, from spotting a reliability problem before a transfer is sent to helping people recover when a payment doesn't go through. That meant analysing transfer behaviour, mapping the failure states, designing the new flows and interactions, and working with engineering so the design fit the product's technical constraints.

At a glance

2,400active business accounts
~1 in 5transfers failed on the first attempt
41%worst-hour success rate during a degraded period
#1support cluster: “Is the bank down?”
02

Where the failures actually live

Failures clustered around particular destinations and particular times. Nothing in the product showed users that.

I analysed success rates by destination, payment rail and time of day. On average about 82% of transfers went through first time, but the average hid a lot. Routine transfers cleared reliably. Some destinations dropped sharply at peak periods and at month-end, and one fell to 41% in its worst window.

The failures had a pattern in where and when they happened. That meant Kredive could respond to those conditions instead of treating every failed transfer the same way.

The behavioural pattern

Support data pointed the same way. The question that came up most was:

“Is the destination down? Why does my transfer keep failing?”

When a payment failed, people usually tried the same route again, because the product gave them no better option.

Fail → Retry → Fail again → Retry again

The same payment failing four times: the retry loop the old interface manufactured.

For a business making a time-sensitive payment, that uncertainty could turn a technical failure into a much bigger operational problem. So the question I designed against was:

“How might Kredive help users understand a transfer's reliability before they commit, and recover gracefully when something goes wrong?”
03

The failure, dissected

When a transfer failed, the old experience ended at the error message.

What “Transfer failed. Try again.” didn't tell users

  • Why it failed. Different causes could look exactly the same.
  • Whether the destination was currently experiencing problems.
  • Whether retrying would actually help.
  • Whether the user's account had been debited.
  • What the user should do instead.

Every one of these gaps pushed users towards an immediate retry, even when the same route was likely to fail again. So the interface was part of the problem: it fed the retry loops, duplicate debits and support requests visible in the product data.

04

Design principles

Kredive can't control the payment infrastructure underneath it. What it can do is show how reliable that infrastructure is right now, and help users act on it before a payment fails.

Four principles shaped the experience.

1 · Pre-flight reliability

Show users the current health of their destination before they send, early enough to change what they decide.

Pre-flight reliability

  • Show the destination's recent success rate.
  • Turn an invisible risk into information the user can act on.

2 · Smart routing

When another route has a better chance of succeeding, Kredive can use it and avoid a path it knows is failing.

Smart routing

  • Route through the path most likely to succeed.
  • Keep the routing visible to the user.
  • Give users control where an override makes sense.

3 · Honest, specific failure

A failed transfer should explain what actually happened.

Honest, specific failure

  • Distinguish between destination downtime, incorrect account details, and breached limits.
  • Give each failure a clear next action.
  • Confirm whether the user's account was debited.

4 · Queued auto-retry

Some failures are temporary. Users shouldn't have to sit there repeatedly pressing Try again.

Queued auto-retry

  • Hold the payment when appropriate.
  • Retry automatically when the destination recovers.
  • Notify the user when the payment lands.

Together they change what the product says, from “something went wrong, figure it out” to “here's what's happening, and here's what happens next.”

05

Before & after: the failure state

A transfer that works looks much the same as before. Most of the change is in what happens when one doesn't.

Before: blind “try again”

  1. One generic error: “Transfer failed. Try again.”
  2. No indication that the destination was currently experiencing problems.
  3. The same payment was retried through the same failing route.
  4. Users had to babysit the payment: retry, wait, retry again, or contact someone.
  5. It wasn't clear whether the account had been debited.
  6. Time-sensitive payments could remain unresolved.

After: reliability you can see

  1. Pre-flight health shows the destination's recent success rate before the payment is sent.
  2. Smart routing uses a healthier available path when appropriate.
  3. Specific failure states explain what went wrong and provide the next action.
  4. Queued auto-retry holds and resends eligible payments when the destination recovers.
  5. Debit status makes it clear what happened to the user's money.
  6. The user is notified when the payment is resolved, so they don't have to keep checking.
After — the redesigned send screen: the destination's live health (41% in the last hour, degraded), a smart-route suggestion at 96%, the amount, and Use-smart-route / Send-anyway actions.
Before — the old Kredive send screen: an amount, a destination bank, an account number, and a single Send button, with no reliability signal.
Before: you send with no idea the destination is down. After: you see its live health and a healthier route before you commit.
06

The redesigned flow

The new flow has four stages, and each one closes a gap in the old experience.

Check → Route → Send → Recover

01 · Check

The user enters an amount and a destination. Before they commit, Kredive checks how reliable that destination is right now.

If it's healthy, the transfer goes ahead as normal. If reliability has dropped, the user sees a clear warning before sending. That information used to exist only inside the system, where no user could use it.

02 · Route

If the selected destination is degraded and another viable route is available, Kredive can suggest the healthier path. It says so, too: the user can see that the route has changed, and why.

03 · Send

Once the user confirms, Kredive keeps the payment's state in view, so there's no guessing between submitting a transfer and knowing whether it has completed.

04 · Recover

When a payment fails, Kredive says why. If the failure is temporary, it can queue the payment and retry automatically when the destination recovers, so the user doesn't have to resubmit it or keep checking.

Once the payment completes, Kredive confirms the outcome.

The recover states: honest failure, a queued auto-retry, and a payment that lands itself.

The redesigned flow, live

These are real, running components. Send to Meridian Bank, which is degraded right now, to see the pre-flight health check and the smart route it offers instead. Send anyway and you get the honest failure, then the queued auto-retry that recovers the payment. Pick a healthy destination to see the direct path.

Kredive

Send money

We check the destination’s live reliability before you send.

Tip: Meridian Bank is degraded right now — send to it to see routing and auto-retry.

07

Results

More transfers went through first time, and people stopped retrying into failures.

96%First-attempt transfer successup from 82%
≈600 / daypayments auto-recovered by routing + retry
71% fewerrepeat retries into a failing destination
49% fewer“Is the bank down?” and failure-related support tickets
under 2 minmedian time to a confirmed payment in degraded periodsdown from about 11 min
58% fewerduplicate debits from blind retries

Smart routing and queued retry are what moved first-attempt success from 82% to 96%. The 600 or so payments recovered each day are ones that would previously have stalled in a retry loop.

Repeat attempts into a failing destination dropped by 71%, and support tickets about destination availability and transfer failures by 49%. Duplicate debits caused by repeated retries fell by 58%. During degraded periods, the median time for a payment to reach confirmation went from around 11 minutes to under 2.

What changed

Kredive stopped leaving the reliability problem to the user. A healthy destination behaves as it always did. When reliability drops, the product says so, chooses a healthier route where it can, and recovers eligible payments itself when the issue is temporary.

That is what increased successful transfers, and it removed the behaviour that created the duplicate debits and support demand in the first place.

08

Reflection

The transfer screen looked simple. Underneath it were different failure states, changing reliability, payment status and recovery, and that is where the hard UX problem was. The real problem isn't always in the interface you can see.

My part was to make that complexity understandable without pushing the technical detail onto users. I worked through the states a payment could enter, decided what people needed to know at each one, and designed flows that help them recover. The old one only told them to try again.

I worked with engineering throughout, to understand the constraints and to make sure the interactions, states, routing behaviour and retry experience could be supported reliably.

Kredive no longer assumes every transfer will work. When one doesn't, the user has a clearer path.