Skip to content

pametan/rails-matrix

Repository files navigation

rails-matrix

An open, machine-readable dataset of payment-rail capabilities — limits, cut-off times, settlement speed, operating hours, irrevocability, scheme owner and the account-identifier format — across UK, EU, US and Canada, with thin typed accessors.

Every fact carries a source URL and a verification date, so you can see where a figure came from and how fresh it is.

import { getRail, findRails, instantRails } from '@pametan/rails-matrix';

getRail('uk-fps')?.limits.perTransaction;     // { amount: 1000000, currency: 'GBP' }
instantRails().map((r) => r.id);              // real-time rails
findRails({ region: 'US', realTime: true });  // FedNow, RTP, Fedwire

⚠️ Read this before relying on a figure. Payment-rail rules change, and a scheme limit is not the same as the limit your PSP sets for you — PSP/customer limits are usually lower. Treat this dataset as a well-sourced reference, not advice, and confirm against the scheme operator (and your provider) before you depend on a value. Each rail's source.url and source.verifiedOn tell you what to check and when it was last reviewed.

Install

npm install @pametan/rails-matrix

Requires Node 24+. Ships ESM + types, and the raw dataset at @pametan/rails-matrix/data.

Rails covered (v1)

Region Rails
UK Faster Payments (FPS), Bacs, CHAPS
EU SEPA Credit Transfer (SCT), SEPA Instant (SCT Inst)
US ACH, FedNow, RTP, Fedwire
CA Interac e-Transfer, EFT/AFT, Real-Time Rail (RTR — forthcoming)

Forthcoming rails are included and clearly flagged with status: 'forthcoming'.

What each rail records

id, name, region, status, schemeOwner, currencies, realTime, clearing (real-time / batch / rtgs), settlement (speed + finality), limits (per-transaction in major units + currency, with a note where scheme and PSP limits differ), operatingHours, a structured cutOff (days + time + IANA timezone) for non-24/7 rails, irrevocable, accountIdentifier (with a validatedBy cross-link where a validator exists, e.g. @pametan/modulus-check-uk), and source (url + verifiedOn). See schema/rails.schema.json for the full contract.

API

Export Description
rails() All rails.
getRail(id) One rail by id (e.g. 'us-rtp').
byRegion(region) / byCurrency(code) Filter by region / currency (currency is case-insensitive).
instantRails() Real-time rails.
findRails(filter) Filter by region/currency/realTime/clearing/status.
staleRails(maxAgeDays, now?) Rails not verified within N days — a maintenance aid.
dataAsOf() The dataset's last review date.

Types Rail, RailsDataset, RailFilter, Money, CutOff, Region, Clearing, Finality, RailStatus are exported.

Provenance & freshness

  • Each rail has source.url + source.verifiedOn; the dataset has dataAsOf.
  • staleRails(180) surfaces records due for re-checking.
  • The data lives in data/rails.json (the source of truth); npm run build:data regenerates the typed src/generated.ts. See DATA.md for the update process.

Development

npm install
npm run build:data   # regenerate src/generated.ts from data/rails.json
npm run typecheck
npm test             # data integrity + accessors + generated-in-sync
npm run build

Disclaimer

Reference data provided as-is, not financial, legal or compliance advice. Figures change and vary by provider — verify with the scheme operator before relying on them. MIT licensed — see LICENSE.


Need the production version of this?

We're Pametan — a specialist fintech/regtech engineering agency working across UK, US and Canadian rails (FCA · CFPB · FCAC). We build the rail integrations behind this data — routing, limits enforcement, cut-off-aware scheduling and settlement reconciliation.

Talk to us →

About

Open, machine-readable dataset of payment-rail capabilities (limits, cut-offs, settlement, identifiers) across UK/EU/US/CA, with typed accessors. Every fact is sourced and dated.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors