GitHub

07 — PIPs · PIP-0007

Rail register and chain register

What a rail is in PATH, the identifiers rails take, and the register of chains and tokens that `rail: "blockchain"` points into.

ImplementedCore
Number
PIP-0007
Status
implemented
Type
Core
Author
PATH
Date
2026-10-04
Source
On the register

Why

rail is the first field of every capability (PIP-0006). A rail identifier that each member spells its own way does not interoperate. This PIP fixes what a rail is, how identifiers are spelled, and the initial register. It amends PIP-0003, which requires one spelling per rail.

What a rail is

A rail is a settlement scheme a payer can direct a payment to, in order to credit an identifiable beneficiary. It has its own rules, its own beneficiary formats and its own transaction identifiers.

The following are not rails:

Not a railExampleWhere it belongs
Interbank infrastructure the customer does not chooseTIPS, CHIPS, SPI (under Pix)The rail's profile. Never `accepts`
An alias or proxy service over a railPayID, PayNow, PromptPay, DuitNowA beneficiary format, or an identifier type in PATH ID
A request-to-pay service over a railCoDi, UPI Collect, Pix Cobrança, SEPA Request-to-PayThe rail's profile, mapped to PATH REQUEST
A wallet or a brand over a railWeroThe rail's profile
An account providerA bank, an e-money issuer, a mobile money operator`book` within the provider, or the interoperable rail between providers

Identifiers

Lower case, hyphenated, the scheme's own short name. A two-letter ISO 3166 suffix is added only when the short name collides with another scheme or is generic: ach-us, rtp-us, fps-uk, fps-hk, rtgs-in, fast-sg.

An identifier is never a member or network slug.

Two rails defined by PATH

`blockchain` — settlement on a distributed ledger. The ledger is named by the capability's chain object, from the chain register below. Assets are token.

`book` — a transfer within the ledger of the member that signed the object carrying the capability. Both parties hold an account with that member. The member is identified by the signature; the capability does not name it. Assets are fiat in this version.

Rail`beneficiary_formats``rail_reference_types``payment_reference`
`blockchain``chain_address`: an address in the chain's canonical form`tx_hash`, with `index` when the transaction holds several transfersNot carried in this version
`book``path_address`: the payee's PATH address`book_entry`: the member's ledger entry identifierUp to 140 characters

A reserved rail has no beneficiary format until its profile is published: payment instructions are not issued on it. Until then its only rail reference type is scheme_reference, the identifier the scheme assigned to the transfer.

Rail register

idNameZoneCategoryCurrenciesStatus
`blockchain`Distributed ledgerGlobaldlttokensdefined here
`book`Member ledger—bookthe member'sdefined here
`swift`SWIFT credit transferGlobalcross_borderanyreserved
`sepa-ct`SEPA Credit TransferSEPAbatchEURreserved
`sepa-inst`SEPA Instant Credit TransferSEPAinstantEURreserved
`t2`T2Euro areartgsEURreserved
`ach-us`ACHUSbatchUSDreserved
`fedwire`Fedwire Funds ServiceUSrtgsUSDreserved
`fednow`FedNowUSinstantUSDreserved
`rtp-us`RTPUSinstantUSDreserved
`fps-uk`Faster PaymentsGBinstantGBPreserved
`chaps`CHAPSGBrtgsGBPreserved
`bacs`Bacs Direct CreditGBbatchGBPreserved
`pix`PixBRinstantBRLreserved
`spei`SPEIMXinstantMXNreserved
`upi`UPIINinstantINRreserved
`imps`IMPSINinstantINRreserved
`neft`NEFTINbatchINRreserved
`rtgs-in`RTGSINrtgsINRreserved
`npp`New Payments PlatformAUinstantAUDreserved
`fast-sg`FASTSGinstantSGDreserved
`fps-hk`Faster Payment SystemHKinstantHKD, CNYreserved
`zengin`Zengin SystemJPinstantJPYreserved
`interac`Interac e-TransferCAinstantCADreserved
`lynx`LynxCArtgsCADreserved

Categories describe when the beneficiary is credited: instant within seconds, batch after a processing cycle, rtgs individually in central bank money, cross_border through correspondents, dlt on a ledger, book within one member.

Reserved fixes the spelling. A reserved rail may appear in accepts. Its beneficiary formats and rail reference types are fixed by its profile (PIP-0003) when a member first publishes one; the status then becomes profiled.

A rail is added by an informational PIP. The register lists rails in use by a member or about to be. It is not a catalogue of every scheme in existence.

Rail entry

Each entry carries:

FieldMeaning
`id`, `name`, `zone`, `category`, `currencies`As in the table
`beneficiary_formats`The forms a destination takes on this rail, used by [payment instructions](/pips/0009)
`rail_reference_types`The values allowed in a receipt's `rail_references[].type`
`payment_reference`Whether the rail carries one, and its maximum length
`request_overlay`The rail's request-to-pay service, when it has one
`profile`The PIP or annex that defines the mapping
`status``reserved`, `profiled`, or `defined here`

Chain register

rail: "blockchain" names its ledger in chain. The register maps the identifiers onto one another.

slugCAIP-2EVM chain idNativeDecimals
`ethereum``eip155:1`1ETH18
`base``eip155:8453`8453ETH18
`arbitrum``eip155:42161`42161ETH18
`optimism``eip155:10`10ETH18
`polygon``eip155:137`137POL18
`bnb``eip155:56`56BNB18
`avalanche``eip155:43114`43114AVAX18
`solana``solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp`—SOL9
`bitcoin``bip122:000000000019d6689c085ae165831e93`—BTC8
`tron`——TRX6
`celo``eip155:42220`42220CELO18
`arc``eip155:5042`5042USDC18
`tempo``eip155:4217`4217——
`stellar``stellar:pubnet`—XLM7
`sui``sui:mainnet`—SUI9

EVM chains carry evm.chain_id. Other chains do not: CAIP-2 is the general identifier, and a chain without a registered CAIP-2 value is named by slug.

On arc, USDC is the native gas asset with 18 decimals, and its ERC-20 interface uses 6. A capability names the ERC-20 interface, listed below. tempo has no native token: fees are paid in stablecoins, and tokens follow the tip20 standard. The listed Tempo token is PATHUSD (pathUSD).

Each chain entry also states the address format, the canonical case of contracts (lower case for EVM chains), whether a memo or tag is supported, and the token standards in use. Test networks are not in the register, and a capability naming one is not valid in production.

Tokens

Chainasset_codestandardcontractDecimals
`ethereum`USDCerc20`0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48`6
`ethereum`USDTerc20`0xdac17f958d2ee523a2206206994597c13d831ec7`6
`base`USDCerc20`0x833589fcd6edb6e08f4c7c32d4f71b54bda02913`6
`solana`USDCspl`EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`6
`tron`USDTtrc20`TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t`6
`celo`USDCerc20`0xceba9300f2b948710d2653dd7b07f33a8b32118c`6
`arc`USDCerc20`0x3600000000000000000000000000000000000000`6
`tempo`PATHUSDtip20`0x20c0000000000000000000000000000000000000`6
`stellar`USDCstellar-asset`GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN`7
`sui`USDCsui-coin`0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC`6

On stellar, contract is the issuing account; the asset is the pair of asset_code and issuer. On sui, contract is the full coin type.

A token absent from this table is valid in a capability when standard, contract and decimals are all present. Listing it removes the need for decimals.

Compatibility

mobile_money, sepa, sepa-eu, pix-br, upi-in and provider names used as rails in 0.3 examples are not register identifiers. A member restates its standing intent in the register's identifiers. Signed 0.3 objects keep their original values.