unirail.dev routing intelligence for payments Read the docs Browse providers Open the dashboard
Late edition Test & live environments, side by side Routing policy set in the dashboard
Today’s board 3 integrated · 10 listed 23 countries on the timetable

One API for every payment rail

Vol. I · No. 1 Late edition London

Markets

Illustrative board
Payments infrastructure

Money finally gets a router

One API now decides how each payment should travel, cheapest, fastest or recommended, across the providers you already have deals with, and lets your user approve exactly the route they saw.

One track in, five out. A junction drawn live as a two-colour halftone: the black plate is screened at 45°, the red plate at 15°, and the red follows the route you pick in the Timetable. Graphic: The Unirail / WebGL

Every platform that moves money learns the same lesson eventually: the provider you integrated first is rarely the one you need for every payer, every country and every amount. Unirail is routing intelligence for the providers you already work with: one API over your open-banking aggregators and payment initiators today, with identity checks, account verification and compliance screening next, several providers to each capability. The licences, the contracts and the KYC stay yours.

Ask for a route quote between two accounts and Unirail checks every connected provider that could serve the pair against schemes, amounts, currencies, institution restrictions and your routing policy. Up to three quotes come back, labelled cheapest, fastest and recommended, each with its legs, its cost, its timing and who holds the money after every hop.

Your user chooses, and you bind their approval (a passkey, a PIN, a confirm step) to the quote’s id and digest. Then you decide who places the call: your own backend, with your own credentials through the SDK, or Unirail, reading them just-in-time from your vault. Either way the money moves between banks through your provider, never through Unirail.

Airlines solved this decades ago with distribution systems that let one agent sell every carrier. Unirail is that idea for payments: one integration over every provider you’ve signed, deal terms beside the routing data, and a marketplace for the providers you haven’t signed yet.

Continued in the docs

B1

The Route

How a £50 payment finds its rail, and what each way would cost

Anatomy of a route quote

Three ways for £50.00 to travel from one UK account to another, and one that isn’t allowed to run. Figures illustrative

Route quote diagram The payer's bank account runs to a junction that fans out to four routes: Enable Banking (cheapest), Plaid (recommended) and Yapily (fastest), each one leg over Faster Payments with no custody, and Airwallex, two legs holding funds in transit, which this policy does not admit. All routes converge on the payee's bank account. Unirail sits beside the junction as a signal box: it sets the points from masked metadata and is never on the track. Payer’s bank •••• 5678 payto://scan · GB Payee’s bank •••• 4321 payto://scan · GB Unirail signal box Enable Banking CHEAPEST £0.20 · 9 s Plaid RECOMMENDED £0.24 · 6 s Yapily FASTEST £0.31 · 4 s Airwallex NOT RUNNING Two legs; holds funds in transit (provider-transit). This policy admits custody none only. 1 You ask how £50.00 should travel from •••• 5678 to •••• 4321. 2 Unirail decides from masked metadata, with no PII and no account numbers, and sets the points. The money never passes through it. 3 Money moves bank to bank through your provider, under your contract. Custody after: none. Route quote diagram: the payer's bank at the top, a junction fanning out to four routes, the payee's bank at the bottom, and Unirail beside the junction as the signal box that sets the points. Payer’s bank •••• 5678 payto://scan · GB Unirail signal box A B C D Payee’s bank •••• 4321 payto://scan · GB
  1. A Cheapest: Enable Banking, one leg over Faster Payments, £0.20, custody none
  2. B Recommended: Plaid, one leg over Faster Payments, £0.24, custody none
  3. C Fastest: Yapily, one leg over Faster Payments, £0.31, custody none
  4. D Not running: Airwallex, two legs holding funds in transit, which this policy doesn’t admit
How to read it. Each track is a quote’s legs. Unirail is the signal box, not the line: it sets the points and your provider carries the money. The red track is the route selected in the Timetable; pick another and the drawing, and the lead picture on the front page, follow. Source: Unirail route-quote shape; fees and timings are illustrative.

Route quote Illustrative

From
•••• 5678
To
•••• 4321
Via
Plaid
Rail
Faster Payments
Quote
qt_8Hc2Vn…
Digest
9f2c…e41a
Fees
£0.24
Custody after
none
Likelihood
0.98

A demonstration: no passkey is requested. Your app has the user sign a challenge derived from the quote it showed:

sha256(`${quote.id}.${quote.digest}`)
Approved bound to qt_8Hc2Vn · 9f2c…e41a
C1

Opinion

A leader on leverage, and a column from the Security Desk

Leader

The best deal is the one you can walk away from

Platforms sign their own contracts with payment providers. Unirail puts those contracts, fees and volume tiers next to live routing data, so every renewal starts from what switching would actually save.

The Unirail view

Every platform that moves money has the same quiet problem. The licences are yours, the contracts are yours, the KYC and AML are yours, and yet the moment you integrate a provider your negotiating position starts to drain away. Moving is a project, and everyone at the table knows it.

Unirail doesn’t take a side in that negotiation, and it doesn’t sit in the money flow. It sits beside it: one API and SDK over the providers you already have deals with, your existing secrets manager wired in so a new provider needs no new environment variables, and a routing engine that decides which provider and rail each payment should take, what it costs and why.

Leverage is a switch you could flip tomorrow.

Put the deal sheet next to the decisions and the conversation changes. You can see what each provider is winning, what it is costing and what moving that volume would save, so you walk into the renewal with the number rather than a hunch.

Switching stops being a project, too. When a second provider for the same rail is already wired in, sending it more volume is a change to your routing policy in the dashboard, not a quarter of engineering.

None of it asks you to hand anything over. In Decide mode Unirail sees masked metadata only and returns the decision, and your own backend places the call. The decision engine can even run on your own infrastructure.

D1

Classifieds

The provider marketplace, by capability and jurisdiction

Jurisdiction

Showing all 13 listings across 23 countries

Banking & payments

Plaid

★ Integrated

Open-banking PISP

Bank linking, UK payment initiation, VRP consents and identity verification through Plaid Link.

bank link · payments · VRP consents · identity (KYC)

GB

Yapily

★ Integrated

Open-banking PISP

UK open banking: account linking and single immediate payments across UK banks, with Unirail's own bank picker.

bank link · payments

GB

Enable Banking

★ Integrated

Open-banking PISP

EEA account information and payment initiation: SEPA, SEPA Instant and domestic schemes, straight from payer to payee.

bank link · payments

GB · EUR 14

TrueLayer

Listed

Open-banking PISP

UK and European payment initiation; a second UK PISP for substitution when one provider degrades.

bank link · payments

GB

Neonomics

Listed

Open-banking PISP

Nordic and EEA account information and payment initiation.

bank link · payments · CoP / VoP

NO · SE · DK · FI

PayNow QR

Listed

Bank scheme

Singapore person-to-person payments by QR code to a PayNow proxy, attested rather than confirmed.

payments

SG

Airwallex

Listed

Meta-provider

Collections into Airwallex accounts, payouts over local rails, FX, and UK CoP / EU VoP name checks. Routes through it hold money in transit.

pay-ins · payouts · FX · CoP / VoP

GB · SG · HK · AU · US · EUR 14

Nium

Listed

Meta-provider

Wallet-based global payouts, collections and FX, plus Nium Verify for account checks.

payouts · pay-ins · FX · CoP / VoP

SG · GB

Wise Platform

Listed

Meta-provider

Cross-border transfers through Wise, or from a user's existing Wise account.

payouts · FX · bank link

GB · US · EUR 14

OpenPayd

Listed

Meta-provider

Accounts and virtual IBANs, payouts, pay-by-bank, stablecoin ramps, UK CoP and EU VoP.

pay-ins · payouts · CoP / VoP

GB · EUR 14

Modern Treasury

Listed

Meta-provider

US payment operations over the platform's own bank accounts: ACH, wires, RTP, counterparties and reconciliation.

payouts · pay-ins · CoP / VoP

US

Bridge

Listed

On-chain

Stablecoin orchestration: on and off ramps, virtual accounts and custodial wallets, including USDC and USDT.

pay-ins · payouts

US

Identity (KYC)

PLAID — identity verification through Plaid Link. GB. See Banking & payments.

Wanted

Identity-verification providers for all 23 of our countries. Several to a country, please: one is a single point of failure. Apply within →

Account verification · CoP / VoP

Moneytree

Listed

Account data

Japanese account aggregation for linking and ownership checks.

bank link · CoP / VoP

JP

ALSO CHECKING NAMES: Neonomics, Airwallex, Nium, OpenPayd, Modern Treasury. See Banking & payments.

Compliance screening

Wanted

Screening providers, across jurisdictions, more than one to each capability. Next on the timetable after identity and verification. Enquire within →

Notice

Bring your own deals: every listing runs on your contract and your credentials, kept in your own vault. Integrated providers route today; listed ones are in the catalog and on the way.

Browse providers

D4

Technical notes

The integration, in full

pay.ts TypeScript · @unirail/sdk
import { createUnirail } from "@unirail/sdk"; const unirail = createUnirail({ apiKey: process.env.UNIRAIL_SECRET_KEY }); const { quotes } = await unirail.routeQuotes.create({  from: payer,  to: payee,  amount: { value: "5000", asset: "iso4217:GBP" },}); const intent = await unirail.paymentIntents.create(  { quote: quotes[0].id, digest: quotes[0].digest, returnUri },  { context: { idempotencyKey: `pay:${id}` } },);
  1. Money is a string. Amounts are integer minor units: "5000" is £50.00, and the asset is iso4217:GBP or a CAIP-19 id. No float ever carries money.
  2. Pay what was approved. Pass the quote’s id and digest together. An expired quote is refused with quote_expired; one whose route moved, with quote_changed.
  3. Retries are safe. The idempotency key ties a retry to the first attempt, so a flaky network never pays twice.
  4. Listen once. Events arrive with webhook-id, webhook-timestamp and webhook-signature headers; check them with webhooks.verify.