# Stellar Ecosystem Proposals (SEPs)

Each SEP is a distinct blueprint meant to help users build a product or service that interoperates with other products and services on the Stellar network.

When you build on Stellar, you generally use the Horizon API to interact with the network. However, anytime you want your product or service to interoperate with other products or services in the ecosystem, you must create additional infrastructure to handle those components of an interaction.

SEPs define standards for building that infrastructure on top of the Stellar network. They are designed to help different entities, such as asset issuers, wallets, exchanges, and other service providers interoperate using a single common integration. Generally, they define two sides of an interaction — often a server-side and a client-side — and using them as a blueprint allows you to connect to multiple counterparties without starting from scratch every time.

SEPs are publicly created, open-source documents that live in the GitHub repository and have a lightweight approval process. New SEPs and upgrades are discussed constantly. We encourage participation in these discussions to help build new standards and make Stellar services more accessible.

## Notable SEPs​

There are many SEPs, and they cover a wide variety of standards for interoperation. Whatever you're building, you may want to take a look at the complete list to see if there's a standard for your use case.

Here, we'll cover a few notable SEPs that define the standards for the most common Stellar use cases.

### SEP-0001 - Stellar Info File​

Defines how to create and host a stellar.toml file: a common place where the Internet can find information about your Stellar integration. You can store a lot of information in your stellar.toml file including organization information, currency information, and contact information. TOML is a simple and commonly used configuration file format designed to be readable by both humans and machines.

Using the set_options operation, you can link your Stellar account to the domain that hosts your stellar.toml, creating an on-chain connection between this information and that account.

Used by anchors, issuers, and validators.

### SEP-0005 - Key Derivation Methods for Stellar Accounts​

Describes methods for key derivation for Stellar, improving key storage and moving keys between wallets and applications. Guidance in this SEP improves the Stellar ecosystem by:

• Making key derivation the same across wallets and applications
• Allowing users to hold keys in hardware wallets
• Allowing users to hold keys in cold storage more reliably (using mnemonic codes)
• Allowing users to generate multiple keys from a single seed (for example, first for storing funds and second as a signer for a shared account)

Used by wallets and other applications.

### SEP-0006 - Deposit and Withdrawal API​

Defines the standard way for anchors and wallets to interact on behalf of users. With this SEP’s guidance, wallets and other clients can interact with anchors directly without the user needing to leave the wallet to go to the anchor’s site.

This SEP defines a standard protocol enabling the following features within a wallet or other Stellar client:

• Deposit external assets with an anchor
• Withdraw assets from an anchor
• Execute deposit/withdrawal between non-equivalent assets
• Communicate deposit & withdrawal fee structure for an anchor to the user
• Handle anchor KYC needs, including transmitting KYC information about the user to the anchor via SEP-12
• Check the status of ongoing deposits or withdrawals involving the user
• View history of deposits and withdrawals involving the user

SEP-0024 is the alternative to SEP-0006 which supports hosted deposits and withdrawals.

Used by anchors, wallets, and other applications.

### SEP-0010 - Stellar Authentication​

Defines a standard way for clients (such as wallets or exchanges) to create authenticated web sessions for users holding a Stellar account. This SEP also supports authenticating users of shared or pooled Stellar accounts. Clients can use muxed accounts to distinguish users or sub-accounts of shared accounts.

Proves that the user has a Stellar account and that they control the account with a single master key or sufficient signers needed.

Used by wallets and exchanges.

### SEP-0012 - KYC API​

Allows for sharing of KYC data and defines a standard way for Stellar clients to upload KYC and other information to anchors and other services. This SEP was made with these goals in mind:

• Allow a customer to enter their KYC information into their wallet once and use it across many services without re-entering information manually
• Handle image and binary data
• Support the set of fields defined in SEP-9
• Support authentication via SEP-10
• Support the provision of data for SEP-6, SEP-24, SEP-31, and others
• Give customers control over their data by supporting complete data erasure

Used by anchors, wallets, and other applications.

### SEP-0020 - Self-Verification of Validator Nodes​

Defines how validators self-verify by setting the home domain of their Stellar account to their website, where they publish information on-chain about their node and organization in a stellar.toml file. This allows other participants to discover other nodes and add them to their quorum sets without needing a centralized database.

Used by validators.

### SEP-0024 - Hosted Deposit and Withdrawal​

Defines the standard way for anchors and wallets to interact on behalf of users interactively. This means that the user’s application must open a webview hosted by a third-party anchor for the user to provide the information necessary to complete the transaction.

Users use applications that implement SEP-0024 to connect to businesses that will accept off-chain value (such as USD) in exchange for on-chain value (such as USDC) and vice-versa.

SEP-0006 is the alternative to SEP-0024 that supports an API-style solution for the same use case.

Used by anchors, wallets, and other applications.