Skip to main content
DoneThat

AI Adoption GuideBankingFund

Funding method recommendation

ML predicts the funding channel, such as card, bank transfer, or open banking pay-in, most likely to complete for each customer, reducing drop-off.

Banking processAcquireOnboardOpenFundTransactServiceReviewClose

By Don, DoneThat’s AI coach · updated

Rank eligible rails, then order them by completion likelihood

The model's job is to order funding methods the customer is already allowed to use, not to pick a channel the bank prefers. Card, bank transfer, and open banking pay-in complete at different rates for different people. Those rates only matter after eligibility is true.

Eligibility is a product and compliance fact. Ranking is a prediction. Mixing them produces two failures: a recommended rail the customer cannot use, or a hidden rail they can use and might still prefer.

A recommendation is a suggestion about how to start a fund. It is not evidence that money has arrived. Settlement, ledger credit, and funded status stay on the payment and core systems.

Open banking aggregators, account-linking providers, and core banking platforms (TrueLayer, Plaid, Temenos, and peers) typically supply connectivity, account status, or product eligibility. They do not replace first-party completion history, and they do not decide which options you show.

List every rail the customer can actually use

Build the eligible set before you score anything.

Start from the product being funded. A current account, savings pot, card repayment, or wallet each has a rail policy: card allowed or blocked by amount, bank transfer allowed or not, open banking pay-in allowed only when the payer bank is on the connected scheme and consent is valid.

Then apply customer-level checks. For card: a usable instrument or a real add-card path, issuer and 3-D Secure support, amount inside limits, no product ban. For bank transfer: a visible pay-in reference plus sort code or IBAN, amount inside limits and name-check. For open banking pay-in: a connected bank, valid consent, and headroom inside scheme caps.

If a check fails, the rail is not eligible. Do not rank it. Do not recommend it as a workaround. Showing "Pay with open banking" to a customer whose bank is not on the rail is a quality failure, even if the model is sure that rail would have completed had it been available.

If a check passes, the rail stays in the list. Do not drop it because another channel has a higher predicted completion rate.

Onboarding context can change emphasis, not eligibility. A customer still in onboarding abandonment prediction may need a simpler first fund. That can change which eligible rails you highlight. It does not make an ineligible rail eligible.

Rank from first-party completion history

Once the eligible set is fixed, rank those methods by the chance the customer will finish the fund on that rail.

Use first-party history as the primary signal: which eligible methods reached a true completed credit for this customer, or for similar journeys. Completed means money on the ledger, not a click, not a redirect, not a payment-initiated webhook that later failed.

Useful inputs when you have them: prior completed funds by rail (including retries); initiated-but-not-completed attempts (abandoned 3-D Secure, unpaid pay-in references, expired consents, bank-app timeouts); session context you already collect (app vs web, first fund vs returning), used only as features, not as a reason to hide a rail; amount of this fund, because a small card load and a large transfer are different jobs.

Do not let a global default that "card converts better" overwrite a customer who has never completed a card payment and routinely finishes bank transfers. An aggregate prior is useful when history is thin. It is a poor override when history exists.

When history is thin, such as a first fund after digital onboarding, fall back to a cohort you can defend: same product, same country, same rail eligibility, similar amount band. Record that the rank is a cohort prior, not a personal track record.

Score completion, not click-through. A tap that fails 3-D Secure did not complete. A copied pay-in reference with no inbound credit did not complete. An open banking authorization the payer bank later rejects did not complete. Train and evaluate on the credit event you already trust in the ledger.

Keep every eligible option visible

The ranked list is an order, not a filter.

Present the model's top choice as the default or highlighted path. Keep the other eligible methods on the same screen, or one tap away, with the same operational copy you would show if there were no model. If bank transfer is eligible, it stays visible even when the model prefers card. Hiding bank transfer because card converts better forces the model's favorite and strands customers whose card will not complete.

Customers pick an unhighlighted method for reasons the model cannot see: payroll only pays by transfer, they refuse to store a card, their open banking bank is in maintenance, they want a paper trail. They must still reach that method without a collapsed other-methods drawer that looks like an error.

Do not relabel a hidden rail as unavailable. Unavailable is for eligibility failures. If you marked it eligible, it is available.

If you test sort order or defaults, hold eligibility constant.

Example: first top-up after a current-account open

A new current-account customer reaches the first-fund screen. The product allows card, Faster Payments bank transfer, and open banking pay-in. They have a debit card that passes issuer and amount checks, their payroll bank is on open banking with valid consent, and they can pay by transfer.

Eligibility includes all three rails. The model has no personal completion history, so it uses a first-fund cohort for this product and country. That cohort ranks open banking pay-in first, card second, bank transfer third.

Correct behavior: highlight open banking pay-in as the default, keep card visible, and keep bank transfer details on the same page (reference, account name, sort code or IBAN).

The same screen fails if you do any of the following.

Hide bank transfer because the cohort says card and open banking complete more often. The customer who will only pay from payroll by transfer then stalls, which looks like onboarding drop-off rather than a missing rail.

Recommend open banking pay-in when the customer's bank is not on the connected set. The button fails or dead-ends. The model stated a preference and ignored eligibility.

Treat the open banking authorization screen, or a card 3-D Secure challenge, as funds received, then tell the customer the account is ready. The credit has not posted. Delay messaging, fraud checks, and AML disposition then run on a fund that does not exist.

The product owner test: for a given customer and amount, can you print the eligible rails, the ranked order, and the evidence (personal history or named cohort)? Can the customer still see every eligible rail? Does funded wait for the ledger credit? If any answer is no, do not ship the recommendation.

Is this worth automating for you?

Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other.

DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.

Measure the baseline first