stellar:testnet, verifying and settling payments, with the Bazaar co-deployed in the same process. This uses @rail402.dev/facilitator.
The facilitator is non-custodial. It never holds buyer funds. The only value it moves is the buyer-signed Soroban authorization, submitted exactly as authorized. It also sponsors the network fee, so a buyer needs only the payment asset and no XLM. On
stellar:testnet it is free and needs no API key.Pick how you run it
Use the hosted facilitator
Point clients at
https://facilitator.rail402.dev. Nothing to install or operate.Run it yourself
npx @rail402.dev/facilitator on testnet with zero config, a real signer, or Docker.Option 1: use the hosted facilitator
Rail402 runs a public testnet facilitator. If you only need something to point clients at, use it and skip the rest of this page:/verify, /settle, /supported, /health, and the Bazaar at /discovery/resources and /discovery/search. It is free, needs no API key, and sponsors fees.
Option 2: run it on testnet with zero config
Run the facilitator with no signer of your own. On testnet it generates an ephemeral signing account and funds it from friendbot, so you get a working service in one command:4022. The ephemeral signer is fine for local testing. It is regenerated on every restart, so use a real signer for anything you keep.
Option 3: run it with your own signer
1
Fund a testnet account
The signer pays each settlement fee it sponsors, so it needs a funded It prints the secret (
stellar:testnet account.
Generate and fund one with the Rail402 CLI:S...). Keep it out of source control. (Option 2: create and fund one at
Stellar Lab.)2
Start the facilitator
Pass the secret, a port, and a catalog file so listings survive a restart:Flags:
--secret, --network, --port, --catalog-db, plus --help and --version. The default network is stellar:testnet and the default port is 4022.Option 4: run it with Docker
The repositoryDockerfile builds the facilitator and Bazaar as one image. Mount a volume so the catalog persists:
CATALOG_DB_PATH at /data, so the -v rail402-catalog:/data volume keeps the catalog across restarts.
Verify it is serving
Whichever option you chose, confirm the surface before you point clients at it:/supported lists the exact and upto schemes on stellar:testnet with areFeesSponsored: true and bazaar in extensions. /health returns HTTP 200 with the networks served, the signer count, and the catalog storage mode:
catalog.storage reads memory for a zero-config run and durable once you give the catalog a file or volume (CATALOG_DB_PATH).
Configuration is validated before the port binds, so a misconfigured deployment fails immediately with a coded reason instead of serving broken payments.
Next steps
Configuration
Every environment variable, the fee ceiling, and the fee model.
Bazaar operations
The co-deployed catalog, durability, and the cataloging lifecycle.
Monitoring and runbook
/health, /metrics, and the degraded-mode story.Self-facilitation
Run verify and settle in-process, with no separate service.