Dwg UR-001 · General arrangement · Rev C

One API for every payment rail.

Unirail is the routing layer between apps that move money and the providers that can move it. One API quotes every route across open banking, identity, account verification and compliance providers, in every jurisdiction they cover.

3 integrated · 10 listed · 23 countries
1234567
  1. 01Item 1 · Yours

    Platform app

    Your product, your users. They approve a payment with a passkey, and that approval is bound to the quote's id and digest, so what they signed is exactly what runs.

  2. 02Item 2 · Unirail

    Routing layer

    One API and SDK. It quotes every route across your connected providers as Cheapest, Fastest and Recommended, each with legs, cost, ETA and custody, then runs the one you pick. Events leave on one stream, signed with Standard Webhooks.

  3. 03Items 3–6 · Providers

    Provider rails

    Banking first: Plaid, Yapily and Enable Banking are integrated and 10 more are listed. Identity (KYC), account verification (CoP / VoP) and compliance screening stack underneath, several providers per capability, per jurisdiction.

  4. 04Item 7 · Yours

    Your vault, our trust line

    Provider credentials stay in your own Infisical. Unirail reads them per call through OIDC federation and never stores them.

  5. 05Flow · A2A

    A payment, leg by leg

    Accounts are payto:// addresses, masked everywhere. Today's routes run account to account with no custody; meta-providers that hold money in transit only appear where your routing policy allows.

View 01 / 06 · General arrangement

ABCDEF
1234

Sheet 2 — Route quotes

Alternative sections
Scale NTS

Ask for a route and Unirail returns alternatives, each a section through the same payment: its legs, cost, ETA and custody. Your user approves one, and that approval is bound to its id and digest.

Section
Section A–A · Cheapest
PAYERpayto://…4821PAYEEpayto://…0937LEG 1 · A2A · OPEN BANKINGPIS provider ①TOTAL £0.20 · ≈ 60 s · CUSTODY NONE
Section B–B · Fastestwhere policy allows
PAYERpayto://…4821PAYEEpayto://…0937LEG 1 · PAY-INmeta-providerLEG 2 · PAYOUTlocal railFUNDS IN TRANSITTOTAL £1.10 · ≈ 5 s · CUSTODY PROVIDER-TRANSIT
Section C–C · Recommended
PAYERpayto://…4821PAYEEpayto://…0937LEG 1 · A2A · OPEN BANKINGPIS provider ②TOTAL £0.25 · ≈ 10 s · CUSTODY NONE

Illustrative values · a live quote supplies real legs, cost and ETA

route_quoteplaceholder values
id
rq_…a7f3
digest
sha256:9c1e…a04
amount
5000 · iso4217:GBP
from
payto://…4821
to
payto://…0937
strategy
cheapest
legs
1
cost · eta
£0.20 · ≈ 60 s
custody
none

Lowest cost across connected providers.

route_quoteplaceholder values
id
rq_…b7f3
digest
sha256:9c1e…b04
amount
5000 · iso4217:GBP
from
payto://…4821
to
payto://…0937
strategy
fastest
legs
2
cost · eta
£1.10 · ≈ 5 s
custody
provider-transit

Holds money in transit, so it only appears where your policy allows it.

route_quoteplaceholder values
id
rq_…c7f3
digest
sha256:9c1e…c04
amount
5000 · iso4217:GBP
from
payto://…4821
to
payto://…0937
strategy
recommended
legs
1
cost · eta
£0.25 · ≈ 10 s
custody
none

Best fit for your routing policy: cost, ETA and custody weighed together.

ABCDEF
1234

Sheet 3 — Capability matrix

Capability × jurisdiction
From the marketplace

Banking first, then everything next to it. Each capability can have several providers per jurisdiction, so a route can fail over or pick on price. Filled stamps are integrated, outlined stamps are listed. Hover a stamp to trace that provider across the sheet.

Providers by capability and jurisdiction, from the Unirail marketplace
CapabilityGBEEA · EURNO SE DKUSSGHKAUJP
BankingPayment initiationPLDYAPENBTLRENBNEONEO·PNQ···
BankingBank link / AISPLDYAPENBTLRWSEENBNEOWSENEOWSE···MNT
BankingPay-in · payout · FXAWXNIUWSEOPDAWXWSEOPD·AWXWSEBRGMTRAWXNIUAWXAWX·
IdentityIdentity / KYCPLD·······
VerificationAccount verification (CoP / VoP)AWXNIUOPDNEOAWXOPDNEOAWXMTRAWXNIUAWXAWXMNT
ComplianceCompliance screeningSlot open · providers being listed
PLD IntegratedTLR ListedAWX Holds funds in transit Open slot

Parts list · providers

  1. 01Plaidpisp aggregatorintegrated
  2. 02Yapilypisp aggregatorintegrated
  3. 03Enable Bankingpisp aggregatorintegrated
  4. 04TrueLayerpisp aggregatorlisted
  5. 05Neonomicspisp aggregatorlisted
  6. 06Airwallexmeta providerlisted
  7. 07Niummeta providerlisted
  8. 08Wise Platformmeta providerlisted
  9. 09Bridgeon chainlisted
  10. 10Moneytreedatalisted
  11. 11PayNow QRbank apilisted
  12. 12OpenPaydmeta providerlisted
  13. 13Modern Treasurymeta providerlisted
ABCDEF
1234

Sheet 4 — Interface

@unirail/sdk
TypeScript

pay.ts
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. Secret key, server side

    One key per environment. Test and live keys, environments and routing policy are managed in the dashboard.

  2. payto:// addresses

    Payer and payee are payto:// accounts. Unirail stores them sealed and only ever returns them masked.

  3. Amount as value + asset

    Decimal string plus an asset id such as iso4217:GBP.

  4. Bind approval to id + digest

    Your user's approval (a passkey, say) signs this exact quote. A different route needs a new approval.

  5. Idempotent by design

    Retries with the same key return the same intent. Progress arrives on the event stream.

General notes

  1. All accounts are payto:// addresses, never shown in full.
  2. Provider credentials stay in the customer's Infisical vault, read per call via OIDC federation, never stored by Unirail.
  3. User approval is bound to a quote's id + digest.
  4. Custody is data. Routes today are account to account, no custody; meta-providers holding funds in transit appear only where policy allows.
  5. One event stream; webhooks signed per Standard Webhooks.
  6. Test and live environments, API keys and routing policy live in the dashboard.
  7. Do not scale drawing.