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.
- 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 rail | Example | Where it belongs |
|---|---|---|
| Interbank infrastructure the customer does not choose | TIPS, CHIPS, SPI (under Pix) | The rail's profile. Never `accepts` |
| An alias or proxy service over a rail | PayID, PayNow, PromptPay, DuitNow | A beneficiary format, or an identifier type in PATH ID |
| A request-to-pay service over a rail | CoDi, UPI Collect, Pix Cobrança, SEPA Request-to-Pay | The rail's profile, mapped to PATH REQUEST |
| A wallet or a brand over a rail | Wero | The rail's profile |
| An account provider | A 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 transfers | Not carried in this version |
| `book` | `path_address`: the payee's PATH address | `book_entry`: the member's ledger entry identifier | Up 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
| id | Name | Zone | Category | Currencies | Status |
|---|---|---|---|---|---|
| `blockchain` | Distributed ledger | Global | dlt | tokens | defined here |
| `book` | Member ledger | — | book | the member's | defined here |
| `swift` | SWIFT credit transfer | Global | cross_border | any | reserved |
| `sepa-ct` | SEPA Credit Transfer | SEPA | batch | EUR | reserved |
| `sepa-inst` | SEPA Instant Credit Transfer | SEPA | instant | EUR | reserved |
| `t2` | T2 | Euro area | rtgs | EUR | reserved |
| `ach-us` | ACH | US | batch | USD | reserved |
| `fedwire` | Fedwire Funds Service | US | rtgs | USD | reserved |
| `fednow` | FedNow | US | instant | USD | reserved |
| `rtp-us` | RTP | US | instant | USD | reserved |
| `fps-uk` | Faster Payments | GB | instant | GBP | reserved |
| `chaps` | CHAPS | GB | rtgs | GBP | reserved |
| `bacs` | Bacs Direct Credit | GB | batch | GBP | reserved |
| `pix` | Pix | BR | instant | BRL | reserved |
| `spei` | SPEI | MX | instant | MXN | reserved |
| `upi` | UPI | IN | instant | INR | reserved |
| `imps` | IMPS | IN | instant | INR | reserved |
| `neft` | NEFT | IN | batch | INR | reserved |
| `rtgs-in` | RTGS | IN | rtgs | INR | reserved |
| `npp` | New Payments Platform | AU | instant | AUD | reserved |
| `fast-sg` | FAST | SG | instant | SGD | reserved |
| `fps-hk` | Faster Payment System | HK | instant | HKD, CNY | reserved |
| `zengin` | Zengin System | JP | instant | JPY | reserved |
| `interac` | Interac e-Transfer | CA | instant | CAD | reserved |
| `lynx` | Lynx | CA | rtgs | CAD | reserved |
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:
| Field | Meaning |
|---|---|
| `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.
| slug | CAIP-2 | EVM chain id | Native | Decimals |
|---|---|---|---|---|
| `ethereum` | `eip155:1` | 1 | ETH | 18 |
| `base` | `eip155:8453` | 8453 | ETH | 18 |
| `arbitrum` | `eip155:42161` | 42161 | ETH | 18 |
| `optimism` | `eip155:10` | 10 | ETH | 18 |
| `polygon` | `eip155:137` | 137 | POL | 18 |
| `bnb` | `eip155:56` | 56 | BNB | 18 |
| `avalanche` | `eip155:43114` | 43114 | AVAX | 18 |
| `solana` | `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp` | — | SOL | 9 |
| `bitcoin` | `bip122:000000000019d6689c085ae165831e93` | — | BTC | 8 |
| `tron` | — | — | TRX | 6 |
| `celo` | `eip155:42220` | 42220 | CELO | 18 |
| `arc` | `eip155:5042` | 5042 | USDC | 18 |
| `tempo` | `eip155:4217` | 4217 | — | — |
| `stellar` | `stellar:pubnet` | — | XLM | 7 |
| `sui` | `sui:mainnet` | — | SUI | 9 |
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
| Chain | asset_code | standard | contract | Decimals |
|---|---|---|---|---|
| `ethereum` | USDC | erc20 | `0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48` | 6 |
| `ethereum` | USDT | erc20 | `0xdac17f958d2ee523a2206206994597c13d831ec7` | 6 |
| `base` | USDC | erc20 | `0x833589fcd6edb6e08f4c7c32d4f71b54bda02913` | 6 |
| `solana` | USDC | spl | `EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v` | 6 |
| `tron` | USDT | trc20 | `TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t` | 6 |
| `celo` | USDC | erc20 | `0xceba9300f2b948710d2653dd7b07f33a8b32118c` | 6 |
| `arc` | USDC | erc20 | `0x3600000000000000000000000000000000000000` | 6 |
| `tempo` | PATHUSD | tip20 | `0x20c0000000000000000000000000000000000000` | 6 |
| `stellar` | USDC | stellar-asset | `GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN` | 7 |
| `sui` | USDC | sui-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.