Stellar Info File (SEP-1)
Overview
SEP-1 (Stellar Info File) allows wallets and other Stellar applications to discover information about your anchor service. By hosting a stellar.toml file at /.well-known/stellar.toml, you enable applications to automatically find:
- Your organization's information
- Supported assets and currencies
- Authentication endpoints (SEP-10)
- SEP endpoints for SEP-6, SEP-24, SEP-31, SEP-38, SEP-45
For details, please refer to the SEP-1 specification.
Creating Your stellar.toml File
Create a stellar.toml file with your service information. Here's a minimal example to get started:
- TOML
# dev.stellar.toml
ACCOUNTS = ["GD...G"] # Your distribution account public keys
SIGNING_KEY = "GD...G" # Your signing key (public key) for SEP-10 authentication
NETWORK_PASSPHRASE = "Test SDF Network ; September 2015" # Use "Public Global Stellar Network ; September 2015" for mainnet
[DOCUMENTATION]
ORG_NAME = "Your organization"
ORG_URL = "https://your-website.com"
ORG_DESCRIPTION = "A description of your organization"
For a complete list of all available stellar.toml attributes, see the SEP-1 specification. You'll need to add additional sections like [[CURRENCIES]], TRANSFER_SERVER, TRANSFER_SERVER_SEP0024, WEB_AUTH_ENDPOINT, WEB_AUTH_FOR_CONTRACTS_ENDPOINT, DIRECT_PAYMENT_SERVER etc., as you configure the supported assets and other SEPs.
A stellar.toml describes one network. If you need a testnet file as well as a mainnet file, host each on its own host. See Testnet and mainnet files for when a testnet file is needed.
Testnet and mainnet files
A domain serves one stellar.toml, at /.well-known/stellar.toml, and that file describes one network. Its NETWORK_PASSPHRASE, accounts, signing key, and service URLs all belong to either testnet or mainnet. One file cannot describe both.
Do you need a testnet file?
Applications do not find your stellar.toml through the network. They read the home_domain of your issuing account and fetch https://<home_domain>/.well-known/stellar.toml. A wallet or SEP client on testnet starts from your testnet issuing account. If that account's home_domain serves your mainnet file, the client finds mainnet accounts and endpoints, and the testnet integration fails.
Host a testnet file when another party needs to discover your testnet deployment: a wallet integrating against your testnet anchor, the Demo Wallet, or your own end-to-end tests. If you only call your testnet endpoints directly, you can skip it. Stellar Lab does not read stellar.toml. It builds transactions and calls Horizon and RPC directly, so using Lab alone does not need a testnet file.
Use one host per network
Give each network its own host and serve a separate file on each. A subdomain is the common pattern:
| Network | Example host | NETWORK_PASSPHRASE |
|---|---|---|
| Testnet | testnet.example.com | Test SDF Network ; September 2015 |
| Mainnet | example.com | Public Global Stellar Network ; September 2015 |
SDF's test anchor uses a dedicated testnet host: testanchor.stellar.org/.well-known/stellar.toml.
Set the home_domain of your issuing account on each network to the host for that network: testnet.example.com on testnet and example.com on mainnet. The subdomain name is a convention, not a SEP-1 rule. Any host works as long as the issuing account's home_domain matches it.
What differs per network
NETWORK_PASSPHRASE.ACCOUNTS. List the accounts of that network's deployment. Separate keys per network are common but not required. The same public key can exist on both networks.SIGNING_KEY. Use the public key of the SEP-10 signing seed for that deployment.[[CURRENCIES]]issueraddresses, if your testnet issuer uses a different key than your mainnet issuer. The assetcodeis usually the same.- Service URLs such as
WEB_AUTH_ENDPOINT,WEB_AUTH_FOR_CONTRACTS_ENDPOINT,TRANSFER_SERVER,TRANSFER_SERVER_SEP0024,DIRECT_PAYMENT_SERVER,KYC_SERVER, andANCHOR_QUOTE_SERVER. Point each at the deployment on that host. HORIZON_URL, if you publish one.
[DOCUMENTATION] and [[PRINCIPALS]] usually stay the same.
With the Anchor Platform, each deployment serves its own file. Give the testnet deployment and the production deployment their own SEP1_TOML_VALUE, as described under Configuration.
Test discovery before mainnet
-
Fetch the testnet file and check the response headers. You need a
200status and the CORS header that SEP-1 requires:curl -s -D - -o /dev/null https://testnet.example.com/.well-known/stellar.tomlLook for
Access-Control-Allow-Origin: *in the output. This command sends aGETrequest and discards the body. UseGET, notHEAD: some servers, including the nginx example on the asset publishing page, add the CORS header only toGETresponses. -
Confirm that your testnet issuing account points at that host:
curl -s https://horizon-testnet.stellar.org/accounts/YOUR_ACCOUNT_ID | grep home_domain -
Open the Demo Wallet, which runs on testnet by default, add your asset with your testnet home domain, and run the SEP flows you support. The Demo Wallet reads your
stellar.tomlthe same way production wallets do.
Repeat the first two checks against your mainnet host when you go live.
Configuration
To enable SEP-1, you need to configure how the Anchor Platform should access your stellar.toml file. The platform supports three methods:
| Type | Use Case | Description |
|---|---|---|
file | Recommended for most cases | Read from a local file on the server |
string | Quick testing or simple configs | Provide the TOML content directly in the config |
url | External hosting | Fetch from a remote URL (useful for dynamic content) |
Environment Variables
Configure SEP-1 using the following environment variables:
SEP1_ENABLED: Set totrueto enable SEP-1SEP1_TOML_TYPE: One offile,string, orurlSEP1_TOML_VALUE: The value depends on the type (see examples below)
Method 1: File (Recommended)
Best for: Production deployments where you manage the file on disk.
- bash
# dev.env
SEP1_ENABLED=true
SEP1_TOML_TYPE=file
SEP1_TOML_VALUE=/path/to/your/stellar.toml
When using Docker, mount your stellar.toml file as a volume and reference the path inside the container. For example:
# docker-compose.yaml
volumes:
- ./config/stellar.toml:/config/stellar.toml:ro
Then set SEP1_TOML_VALUE=/config/stellar.toml in your environment.
Method 2: String
Best for: Quick testing, development, or when managing config via environment variables.
- bash
# dev.env
SEP1_ENABLED=true
SEP1_TOML_TYPE=string
SEP1_TOML_VALUE="ACCOUNTS = [\"GD...G\"]
SIGNING_KEY = \"GD...G\"
NETWORK_PASSPHRASE = \"Test SDF Network ; September 2015\"
[DOCUMENTATION]
ORG_NAME = \"Your organization\"
ORG_URL = \"https://your-website.com\""
When using the string type, ensure your TOML content is properly escaped for your environment file format. For complex configurations, the file type is easier to manage.
Method 3: URL
Best for: Dynamic content or when hosting the file externally.
- bash
# dev.env
SEP1_ENABLED=true
SEP1_TOML_TYPE=url
SEP1_TOML_VALUE=https://example.com/stellar.toml
When using the url type, the Anchor Platform will fetch the file on each request. Make sure the URL is accessible from your Anchor Platform server and returns valid TOML content.
Accessing Your stellar.toml File
Once configured and enabled, the Anchor Platform automatically serves your stellar.toml file at the standard SEP-1 endpoint:
/.well-known/stellar.toml- The primary endpoint (served withContent-Type: text/plain)/- Redirects to/.well-known/stellar.tomlwhen SEP-1 is enabled
Testing Your Configuration
After starting the Anchor Platform, verify your configuration:
# Test the endpoint
curl http://localhost:8080/.well-known/stellar.toml
# Or test the redirect
curl -L http://localhost:8080/
You should see your stellar.toml content returned as plain text.
Alternative: External Hosting
You can also host your stellar.toml file using a static file server like nginx or a CDN. If you choose this approach:
- Host the file at
https://your-domain.com/.well-known/stellar.toml - Ensure it's publicly accessible
- Make sure your
stellar.tomlfile includes the correct URLs pointing to your Anchor Platform endpoints
The Anchor Platform's SEP-1 service is optional if you're hosting the file externally, but it provides a convenient way to manage everything in one place.