npm packages are not installable yet: [email protected] can be published after 2026-09-16 10:30 UTC. Details
Tollstile

Community rails

Rails published by others, how to get yours listed, and how a rail becomes an official @tollstile/* package.

Public Beta · early access

Anyone can add a payment protocol or provider to Tollstile. A rail is a package that follows the contract and passes the conformance kit; core never needs to change. Start with Build a rail.

Listed rails

No community rails are listed yet. Be the first: list your rail.

PackageProtocol or providerConformanceVerified againstMaintainer

A listing means the checklist below is met. It is not an endorsement: read a rail's README and verification status before it moves your money.

Three ways to ship a rail

Who uses itWhat it takes
In your appYoucreateRail() in your code, passed to createTollstile({ rails }). Nothing else.
Community railAnyone who installs itPublish it yourself and meet the listing checklist
Official @tollstile/*Everyone who trusts the Tollstile nameLive in this repository and meet the acceptance criteria

Most rails should go in that order: prove it in your own app, publish it, gain users and a sandbox record, then propose it.

Listing checklist

  • Named tollstile-rail-<name> or @<scope>/tollstile-rail-<name>, with the tollstile-rail keyword
  • tollstile as a peer dependency
  • railConformance() runs in its tests; the README says which cases pass and why any are skipped
  • The README states capabilities, flows, what data stores, retry behavior, and what was verified against the provider's sandbox or testnet
  • No secrets, tokens, or payer evidence in errors, events, receipts, or logs

Becoming official

An official rail carries Tollstile's name, so it must meet all of these:

  • Every conformance case passes, or is skipped for a reason that holds for the protocol
  • A recorded run against the provider's sandbox or testnet: a payment, a replay, a handler failure, and a lost response resolved by reconciliation
  • The protocol has real users and a public specification or API reference
  • A named maintainer who answers issues for it
  • It meets SPEC.md: canonical payer ids, amounts checked against the quote or configuration, proofId on rejected-but-genuine proofs, provider failures thrown as PROVIDER_*, evidence redacted, no secrets anywhere visible
  • No protocol-specific change to core
  • A docs page and a complete README

Propose it with a rail proposal. The full policy is in CONTRIBUTING.md.

On this page