Payment routing with a reason for every decision
Unirail picks the provider for each payment. It ranks the providers you've connected by what the payment will cost under your own contracts, how quickly it usually completes and how often it succeeds. Each decision also says why the other providers were ruled out.
For least-cost routing, set the preference to cheapest. The provider whose next payment costs least under your contracts then comes first, with volume tiers and overage counted in the price.
Route an example payment
Pick a payment and a preference to see which provider Unirail's routing engine chose, how it ranked the rest and why it ruled some out.
- operation
- banking.pis.single
- amount
- £50.00
- payer
- GB · scan
- payee
- GB · scan
- preference
- recommended
Routed to Yapily
Ranked options
-
1YapilyChosen
- Cost
- £0.15 per payment
- Your Yapily contract, tier 1 of 1
- Time
- 11 s typical
- 9 in 10 within 1 min 14 s
- Success
- 95% likely
- 1,205 of 1,262 succeeded
Why it ranks here
- The ranking weighs cost, success likelihood and any existing link equally.
- It's the cheapest of the providers that can run this.
- Your routing policy lists it second in the UK. Unirail uses that order to break ties.
- Yapily takes at most £15,000 per payment.
What your app must do
- Give the user a way to revoke yapily's access.
The payer approves through a redirect to their bank.
-
2Plaid
- Cost
- £0.18 per payment
- Your Plaid contract, tier 2 of 2
- Time
- 6 s typical
- 9 in 10 within 41 s
- Success
- 98% likely
- 1,912 of 1,960 succeeded
Why it ranks here
- It's the fastest of the providers that can run this.
- It's the most likely to succeed of the providers that can run this.
- Your routing policy lists it first in the UK. Unirail uses that order to break ties.
The payer approves through the provider's own SDK or a redirect to their bank.
Providers ruled out and why
- Enable Banking
- Enable Banking doesn't offer pay by bank in the UK.
- Enable Banking doesn't cover the UK in GBP.
- Your routing policy doesn't send payments in the UK to Enable Banking.
- operation
- banking.pis.single
- amount
- £50.00
- payer
- GB · scan
- payee
- GB · scan
- preference
- cheapest
Routed to Yapily
Ranked options
-
1YapilyChosen
- Cost
- £0.15 per payment
- Your Yapily contract, tier 1 of 1
- Time
- 11 s typical
- 9 in 10 within 1 min 14 s
- Success
- 95% likely
- 1,205 of 1,262 succeeded
Why it ranks here
- The request asked for the cheapest provider.
- It's the cheapest of the providers that can run this.
- Your routing policy lists it second in the UK. Unirail uses that order to break ties.
- Yapily takes at most £15,000 per payment.
What your app must do
- Give the user a way to revoke yapily's access.
The payer approves through a redirect to their bank.
-
2Plaid
- Cost
- £0.18 per payment
- Your Plaid contract, tier 2 of 2
- Time
- 6 s typical
- 9 in 10 within 41 s
- Success
- 98% likely
- 1,912 of 1,960 succeeded
Why it ranks here
- It's the fastest of the providers that can run this.
- It's the most likely to succeed of the providers that can run this.
- Your routing policy lists it first in the UK. Unirail uses that order to break ties.
The payer approves through the provider's own SDK or a redirect to their bank.
Providers ruled out and why
- Enable Banking
- Enable Banking doesn't offer pay by bank in the UK.
- Enable Banking doesn't cover the UK in GBP.
- Your routing policy doesn't send payments in the UK to Enable Banking.
- operation
- banking.pis.single
- amount
- £50.00
- payer
- GB · scan
- payee
- GB · scan
- preference
- fastest
Routed to Plaid
Ranked options
-
1PlaidChosen
- Cost
- £0.18 per payment
- Your Plaid contract, tier 2 of 2
- Time
- 6 s typical
- 9 in 10 within 41 s
- Success
- 98% likely
- 1,912 of 1,960 succeeded
Why it ranks here
- The request asked for the fastest provider.
- It's the fastest of the providers that can run this.
- It's the most likely to succeed of the providers that can run this.
- Your routing policy lists it first in the UK. Unirail uses that order to break ties.
The payer approves through the provider's own SDK or a redirect to their bank.
-
2Yapily
- Cost
- £0.15 per payment
- Your Yapily contract, tier 1 of 1
- Time
- 11 s typical
- 9 in 10 within 1 min 14 s
- Success
- 95% likely
- 1,205 of 1,262 succeeded
Why it ranks here
- It's the cheapest of the providers that can run this.
- Your routing policy lists it second in the UK. Unirail uses that order to break ties.
- Yapily takes at most £15,000 per payment.
What your app must do
- Give the user a way to revoke yapily's access.
The payer approves through a redirect to their bank.
Providers ruled out and why
- Enable Banking
- Enable Banking doesn't offer pay by bank in the UK.
- Enable Banking doesn't cover the UK in GBP.
- Your routing policy doesn't send payments in the UK to Enable Banking.
- operation
- banking.pis.single
- amount
- €120.00
- payer
- DE · iban
- payee
- DE · iban
- preference
- recommended
Routed to Enable Banking
Every preference picks Enable Banking because it's the only provider that can run this. The others are ruled out below.
Ranked options
-
1Enable BankingChosen
- Cost
- €0.10 per payment
- Your Enable Banking contract, tier 1 of 1
- Time
- 19 s typical
- 9 in 10 within 2 min 40 s
- Success
- 94% likely
- 601 of 640 succeeded
Why it ranks here
- The ranking weighs cost, success likelihood and any existing link equally.
- Its EUR price can't be compared with prices in other currencies until an FX rate is set.
- Your routing policy lists it first in Germany. Unirail uses that order to break ties.
The payer approves through a redirect to their bank.
Providers ruled out and why
- Plaid
- Plaid offers pay by bank in Germany, but Unirail has no adapter for it there yet.
- Plaid doesn't cover Germany in EUR.
- Your routing policy doesn't send payments in Germany to Plaid.
- Plaid only pays from sort code and account number accounts.
- Yapily
- Yapily offers pay by bank in Germany, but Unirail has no adapter for it there yet.
- Yapily doesn't cover Germany in EUR.
- Your routing policy doesn't send payments in Germany to Yapily.
- Yapily only pays from sort code and account number accounts.
- operation
- banking.pis.single
- amount
- €120.00
- payer
- DE · iban
- payee
- DE · iban
- preference
- cheapest
Routed to Enable Banking
Every preference picks Enable Banking because it's the only provider that can run this. The others are ruled out below.
Ranked options
-
1Enable BankingChosen
- Cost
- €0.10 per payment
- Your Enable Banking contract, tier 1 of 1
- Time
- 19 s typical
- 9 in 10 within 2 min 40 s
- Success
- 94% likely
- 601 of 640 succeeded
Why it ranks here
- The request asked for the cheapest provider.
- Its EUR price can't be compared with prices in other currencies until an FX rate is set.
- Your routing policy lists it first in Germany. Unirail uses that order to break ties.
The payer approves through a redirect to their bank.
Providers ruled out and why
- Plaid
- Plaid offers pay by bank in Germany, but Unirail has no adapter for it there yet.
- Plaid doesn't cover Germany in EUR.
- Your routing policy doesn't send payments in Germany to Plaid.
- Plaid only pays from sort code and account number accounts.
- Yapily
- Yapily offers pay by bank in Germany, but Unirail has no adapter for it there yet.
- Yapily doesn't cover Germany in EUR.
- Your routing policy doesn't send payments in Germany to Yapily.
- Yapily only pays from sort code and account number accounts.
- operation
- banking.pis.single
- amount
- €120.00
- payer
- DE · iban
- payee
- DE · iban
- preference
- fastest
Routed to Enable Banking
Every preference picks Enable Banking because it's the only provider that can run this. The others are ruled out below.
Ranked options
-
1Enable BankingChosen
- Cost
- €0.10 per payment
- Your Enable Banking contract, tier 1 of 1
- Time
- 19 s typical
- 9 in 10 within 2 min 40 s
- Success
- 94% likely
- 601 of 640 succeeded
Why it ranks here
- The request asked for the fastest provider.
- Its EUR price can't be compared with prices in other currencies until an FX rate is set.
- Your routing policy lists it first in Germany. Unirail uses that order to break ties.
The payer approves through a redirect to their bank.
Providers ruled out and why
- Plaid
- Plaid offers pay by bank in Germany, but Unirail has no adapter for it there yet.
- Plaid doesn't cover Germany in EUR.
- Your routing policy doesn't send payments in Germany to Plaid.
- Plaid only pays from sort code and account number accounts.
- Yapily
- Yapily offers pay by bank in Germany, but Unirail has no adapter for it there yet.
- Yapily doesn't cover Germany in EUR.
- Your routing policy doesn't send payments in Germany to Yapily.
- Yapily only pays from sort code and account number accounts.
- operation
- banking.pis.single
- amount
- £20,000.00
- payer
- GB · scan
- payee
- GB · scan
- preference
- recommended
Routed to Plaid
Every preference picks Plaid because it's the only provider that can run this. The others are ruled out below.
Ranked options
-
1PlaidChosen
- Cost
- £0.18 per payment
- Your Plaid contract, tier 2 of 2
- Time
- 6 s typical
- 9 in 10 within 41 s
- Success
- 98% likely
- 1,912 of 1,960 succeeded
Why it ranks here
- The ranking weighs cost, success likelihood and any existing link equally.
- Your routing policy lists it first in the UK. Unirail uses that order to break ties.
The payer approves through the provider's own SDK or a redirect to their bank.
Providers ruled out and why
- Enable Banking
- Enable Banking doesn't offer pay by bank in the UK.
- Enable Banking doesn't cover the UK in GBP.
- Your routing policy doesn't send payments in the UK to Enable Banking.
- Yapily
- Yapily takes at most £15,000 per payment.
- operation
- banking.pis.single
- amount
- £20,000.00
- payer
- GB · scan
- payee
- GB · scan
- preference
- cheapest
Routed to Plaid
Every preference picks Plaid because it's the only provider that can run this. The others are ruled out below.
Ranked options
-
1PlaidChosen
- Cost
- £0.18 per payment
- Your Plaid contract, tier 2 of 2
- Time
- 6 s typical
- 9 in 10 within 41 s
- Success
- 98% likely
- 1,912 of 1,960 succeeded
Why it ranks here
- The request asked for the cheapest provider.
- Your routing policy lists it first in the UK. Unirail uses that order to break ties.
The payer approves through the provider's own SDK or a redirect to their bank.
Providers ruled out and why
- Enable Banking
- Enable Banking doesn't offer pay by bank in the UK.
- Enable Banking doesn't cover the UK in GBP.
- Your routing policy doesn't send payments in the UK to Enable Banking.
- Yapily
- Yapily takes at most £15,000 per payment.
- operation
- banking.pis.single
- amount
- £20,000.00
- payer
- GB · scan
- payee
- GB · scan
- preference
- fastest
Routed to Plaid
Every preference picks Plaid because it's the only provider that can run this. The others are ruled out below.
Ranked options
-
1PlaidChosen
- Cost
- £0.18 per payment
- Your Plaid contract, tier 2 of 2
- Time
- 6 s typical
- 9 in 10 within 41 s
- Success
- 98% likely
- 1,912 of 1,960 succeeded
Why it ranks here
- The request asked for the fastest provider.
- Your routing policy lists it first in the UK. Unirail uses that order to break ties.
The payer approves through the provider's own SDK or a redirect to their bank.
Providers ruled out and why
- Enable Banking
- Enable Banking doesn't offer pay by bank in the UK.
- Enable Banking doesn't cover the UK in GBP.
- Your routing policy doesn't send payments in the UK to Enable Banking.
- Yapily
- Yapily takes at most £15,000 per payment.
How Unirail ranks providers
Unirail's API and a self-hosted router run the same engine, @unirail/router, in four steps for every
decision.
-
Rule providers out
For each provider you've connected, Unirail checks that its adapter can run the operation in the payer's country and currency, that your routing policy allows it, that it won't hold the money in transit and that it accepts the payer's account type. Each failed check is recorded in the decision as a reason.
-
Check the payment
A payment goes through the same route search Unirail uses for quotes. It checks the payee's account type and the provider's per-payment limit. It estimates the time from scheme timings and the outcomes you've reported. The payer doesn't need an earlier bank link, because they approve the payment at their bank inside the provider's flow.
-
Price and rank
Each remaining provider gets an estimated cost for the next unit. It comes from your contract at the tier this month has reached, or from the provider's published price if you have no contract. With neither, the cost is marked unknown. The recommended ranking weighs cost, success likelihood and reuse of an existing bank link equally. Your policy order breaks ties. Setting the preference to cheapest or fastest orders them by cost or by typical time.
-
Return the decision
The decision gets an id, a five-minute expiry, the policy and snapshot versions and a digest of what the user will approve. Your backend binds the user's approval to the id and digest, calls the provider and reports how it went.
Least-cost routing under your own contracts
Cost comes from the deals you enter in Unirail, with fixed fees, volume tiers and an overage price for each provider. The router prices the next payment at the tier this month's usage has reached. Once usage at a provider crosses into a cheaper tier, every later decision will use the lower price.
In the example above, the Plaid contract is in its second tier at £0.18 a payment and Yapily's first tier costs £0.15. With the preference set to cheapest, a £50 payment goes to Yapily. With fastest, it goes to Plaid. On a typical day Plaid completes in 6 seconds and Yapily in 11.
A provider with no contract and no published price gets an unknown cost. An unknown cost doesn't push it down the ranking. See how deals and volume tiers feed the router.
What it routes today
Unirail routes payments, bank links and identity checks through the three providers it has adapters for.
| Provider | Where | What |
|---|---|---|
| Plaid | UK | Account details, Single payments, Sweeping VRP, Account ownership, ID document check, Selfie and liveness, Database check |
| Yapily | UK | Account details, Single payments, Account ownership |
| Enable Banking | 14 euro-area countries | Account details, Single payments, Account ownership |
Coverage is from the catalogue snapshot of 18 October 2026. The provider marketplace lists 23 more providers with their coverage for comparison. Unirail can't route to them until it has an adapter for each. Read more about pay by bank across your PISPs and routing identity checks.
Common questions
Does Unirail move the money?
Unirail doesn't move money. In Decide mode your backend calls the provider with your own credentials. In Execute mode Unirail's API makes the call with credentials it reads from your vault. Either way the payer's bank pays the payee's account directly.
What is smart payment routing?
Smart payment routing picks a provider for each payment from what it will cost, how quickly it usually completes and how often it succeeds. Unirail makes that choice from your own contracts and your own outcome history. Every decision comes back with its reasons.
What is least-cost routing?
Least-cost routing sends each payment to the provider that costs least for it. In Unirail you set the preference to cheapest. The cost is your contract's price for the next payment at the tier this month's usage has reached. When your volume crosses into a cheaper tier, the price in each decision drops with it.
Which providers can Unirail route to?
Unirail routes to Plaid, Yapily and Enable Banking today. The marketplace lists 23 more providers with their coverage and sources for comparison. Unirail can't route to those until it has an adapter for each.
Can we override a decision?
Your backend can use any of the ranked alternatives in a decision, as long as the outcome names the provider it used. A request can also exclude providers. Your routing policy sets which providers each country may use and in what order.
How does it learn which provider succeeds more often?
It reads the outcomes your backend reports after each attempt, with the status, the time it took and the fee if you know it. Unirail keeps a success rate per provider, operation and bank from the last 30 days, smoothed so a provider with a handful of attempts isn't over- or under-rated. Cancellations don't count against a provider because the user chose them. A provider with no outcomes yet starts at 50/50.
Route your first payment in test mode
Request early access, connect a provider's sandbox and call POST /v1/route_decisions. If you'd like to see it on your own setup first, tell us which providers you contract with and we'll show you how routing would work across them.