Stellar Anchors Explained: SEP-6, SEP-24, SEP-31 and On-Ramps
How Stellar anchors move fiat on and off the network: SEP-6, SEP-24 and SEP-31, KYC via SEP-12, MoneyGram's cash ramps, and the risks of trusting an anchor.
Every dollar of USDC on Stellar, and every peso or naira token, got there through an anchor: a regulated business that takes money in through a bank or cash counter and hands out tokens on-chain, or the reverse. Anchors are why Stellar is used for remittances, and they are also the point where a "decentralised" token depends entirely on one company keeping its promises.
Anchors plug into wallets through open standards. SEP-24 opens the anchor's own web page inside your wallet; SEP-6 does the same job through an API, with KYC sent via SEP-12; SEP-31 lets two businesses settle a cross-border payment over Stellar. The token you receive is a claim on the anchor or issuer, so check who issued it before you trust it.
What an anchor actually is
An anchor is Stellar's name for an on- and off-ramp. It accepts fiat through existing rails such as bank transfers or cash points and sends the user equivalent tokens on Stellar, or redeems tokens for the real-world asset they represent. Anchors can issue their own asset or honour one that already exists.
The Stellar developer documentation defines anchors as the bridges between the network and "traditional financial rails, such as financial institutions or fintech companies". Two business models sit under that label:
- Issuing anchors hold the off-chain reserve and create the token themselves. Each token is a claim on that reserve.
- Non-issuing anchors run the cash or bank side for a token someone else issues. MoneyGram's ramp, for example, pays out against Circle's USDC rather than its own token.
SEP-38, the anchor quote API, exists precisely because the two functions are separate: it lets an anchor take an off-chain asset in exchange for a different on-chain asset "regardless of whether a one-for-one reserve-backed Stellar asset exists". The Stellar Development Foundation (SDF) keeps a public directory at anchors.stellar.org, and maintains the open-source Anchor Platform so that businesses do not have to build the standards from scratch. For the stablecoins that most anchors handle, see stablecoins on Stellar.
The standards: SEP-1, 10, 12, 6, 24, 31 and 38
Anchors interoperate with wallets through Stellar Ecosystem Proposals (SEPs), open documents in the stellar-protocol repository. The core set is SEP-1 for discovery, SEP-10 for login, SEP-12 for KYC, SEP-6 and SEP-24 for deposits and withdrawals, SEP-31 for cross-border payments and SEP-38 for quotes.
SEPs are not protocol rules; validators do not enforce them. They are agreements between wallets and businesses so that one wallet integration works with any compliant anchor.
| SEP | What it does | Status (Oct 2026) |
|---|---|---|
| SEP-1 | The stellar.toml file at /.well-known/ on the anchor's domain. Lists its accounts, assets and the URLs of its other SEP servers. | Active, v2.7.0 |
| SEP-10 | Web authentication: the wallet proves it controls a Stellar account by signing a challenge transaction, and receives a session token. | Active, v3.4.1 |
| SEP-12 | KYC API. A standard way to upload identity data to an anchor, including a DELETE /customer endpoint for erasure. | Active, v1.15.0 |
| SEP-6 | Programmatic deposit and withdrawal. The wallet collects KYC and sends it via SEP-12. | Active, v4.3.0 (interactive parts deprecated for SEP-24) |
| SEP-24 | Hosted deposit and withdrawal. The anchor's own web page runs inside the wallet and collects KYC. | Active, v3.8.0 |
| SEP-31 | Cross-border payments between a sending and a receiving anchor. | Active, v3.1.0 |
| SEP-38 | Anchor quotes: indicative prices and firm quotes with an expiry. | Draft, v2.5.0 |
The practical difference between SEP-6 and SEP-24 is who owns the user interface. SDF's guidance lists the trade-offs: with SEP-6 the wallet "must collect KYC information they may not need" and must know what each anchor requires; with SEP-24 the wallet does none of that, but "must allow anchors to temporarily control UX". SEP-24 moves the compliance burden to the regulated party, and it is the standard MoneyGram's ramp uses. A newer draft, SEP-45, extends web authentication to smart-contract accounts; SEP-24 now accepts either SEP-10 or SEP-45 for login.
A SEP-24 deposit and withdrawal, step by step
In SEP-24 the wallet reads the anchor's stellar.toml, logs in with SEP-10, and requests an interactive URL. The user completes KYC and payment details on the anchor's page. For deposits the anchor then sends tokens; for withdrawals the wallet sends tokens to the anchor's account with a memo, and the anchor pays out fiat.
The SEP-24 specification spells out the sequence:
- Discover. The wallet reads the anchor's
stellar.tomlto findTRANSFER_SERVER_SEP0024andWEB_AUTH_ENDPOINT, then calls/infoto learn which assets, limits and fees apply. - Authenticate. The wallet signs a SEP-10 challenge with the user's key and receives a token. No funds move.
- Start. The wallet posts to
/transactions/deposit/interactiveor/transactions/withdraw/interactive, optionally pre-filling SEP-9 fields such as name and email. The anchor returns a URL and a transaction ID, with statusincomplete. - Interact. The user completes KYC, chooses a bank account or cash pickup, and sees the fee, all on the anchor's page.
- Move the money. For a deposit, the user pays the anchor off-chain and the anchor sends the tokens. For a withdrawal, once status reaches
pending_user_transfer_start, the wallet sends a Stellar payment towithdraw_anchor_accountusing the exactwithdraw_memothe anchor supplied. - Settle. The anchor detects the payment and pays out. Status moves through
pending_user_transfer_complete(funds ready to collect) tocompleted.
Three details catch people out. First, the memo: anchors use one shared receiving account and identify your withdrawal by memo, so a payment without it may not be credited. Second, anchors are told to accept a ±10% variation between the quoted amount and what actually arrives, because wallets sometimes convert currencies at the last moment. Third, a deposit to an account that has no trustline for the asset cannot simply arrive; the spec covers this with claimable balances, which the user claims once the trustline exists. Each trustline locks 0.5 XLM of reserve, as explained in Stellar fees and reserves.
SEP-31: anchors paying anchors
SEP-31 is a business-to-business standard for cross-border payments. A sending anchor takes money from a customer, pays a receiving anchor over Stellar, and the receiving anchor pays the recipient's local account. The end customers never need a Stellar wallet; Stellar is the settlement layer between the two businesses.
The specification names four parties: a sending client, a sending anchor, a receiving anchor and a receiving client. The two anchors "must have a business relationship", and because the clients usually sit in different jurisdictions, both anchors run KYC on their own customer, with the receiving anchor collecting sender and receiver data through SEP-12. The on-chain leg is a single payment between the two anchors' accounts, typically in a stablecoin, which takes seconds and costs a fraction of a cent in network fees. This is the pattern Stellar's remittance pitch rests on, and it is largely invisible to retail users.
MoneyGram: the largest cash ramp
MoneyGram has run a cash-to-USDC and USDC-to-cash service on Stellar since June 2022, now branded MoneyGram Ramps and integrated into wallets through SEP-24. Stellar's case study cites cash-out in 170+ countries, 475,000+ locations and 21 integrated wallets. In June 2026 MoneyGram also launched its own stablecoin, MGUSD, on Stellar.
The original press release (June 2022) launched the service in Canada, Kenya, the Philippines and the US, with the Vibrant and LOBSTR wallets. In May 2025 MoneyGram relaunched the developer API as MoneyGram Ramps, quoting cash deposits in 30+ countries and cash withdrawals in 170+. MoneyGram's developer portal now lists Ramps for USDC on both Stellar and Solana.
| Metric | Figure | Source |
|---|---|---|
| Countries with USDC cash-out | 170+ | Stellar case study |
| MoneyGram locations | 475,000+ | Stellar case study |
| Wallets integrated | 21 | Stellar case study |
| Payment volume | $29M+ | Stellar case study |
| Cash-in countries | 30+ | MoneyGram, May 2025 |
Treat the volume figure with perspective: about $29M over several years is modest next to MoneyGram's core remittance business, and SDF's own three-year retrospective put the total at "nearly $30 million". On 2 June 2026 MoneyGram launched MGUSD, a dollar stablecoin issued by Bridge (a Stripe company) on Stellar, starting in the US and held in a self-custodial wallet inside the MoneyGram app. That makes MoneyGram both an issuer and a ramp, rather than only paying out someone else's token.
What you are trusting
An anchored token is only as good as the company behind it. You rely on the issuer holding reserves and honouring redemptions, on the anchor operating legally where you are, and on it handling your identity data responsibly. The blockchain settles fast; it does not guarantee any of those things.
- Issuer credit risk. A deposit token is a claim. If the issuer's reserve is short or frozen, the token trades below face value however well the ledger works.
- Lookalike tokens. Asset codes are not unique on Stellar. On 2 October 2026, Horizon returned at least 200 assets using the code USDC. Circle's is the one issued by
GA5ZSE…KZVN, whosehome_domainis circle.com. Verify the issuer as described in how assets are issued on Stellar. - Issuer controls. Many regulated issuers can freeze balances. Circle's USDC issuer has the revocable flag set, which lets it freeze a trustline. That is a compliance feature, but it is power held by one party.
- KYC data. SEP-24 hands identity collection to the anchor's web page. You are trusting that anchor's data practices. SEP-12 includes a deletion endpoint, but whether an anchor honours it is a matter of its policies and local law.
- Availability. Anchors serve specific countries and change coverage. A ramp listed in your wallet may not accept you.
- Operational errors. A withdrawal sent without the memo, or to an old address, depends on the anchor's support desk to recover.
None of this is unique to Stellar; it is what any fiat on-ramp involves. Stellar's contribution is that the interfaces are open and the settlement is public. Pick a wallet that shows the issuer and home domain of every asset, which most of those in our Stellar wallet guide do.
The takeaway
Anchors are where Stellar meets the banking system, and the SEP standards make them pluggable: SEP-24 for consumer wallets, SEP-6 where the wallet owns the experience, SEP-31 for businesses settling cross-border. The settlement is quick and cheap. The trust sits off-chain, in an issuer's reserves and an anchor's compliance, so verify both before moving meaningful money. Once funds are on-chain, the Stellar DEX and the wider Stellar DeFi ecosystem are where they can be traded or put to work.
Sources: Stellar developer docs (Anchors; Publish Information About an Asset); SEP-1, SEP-6, SEP-10, SEP-12, SEP-24, SEP-31, SEP-38 and SEP-45 in the stellar-protocol repository (versions as of October 2026); Stellar MoneyGram case study and "Three years with MoneyGram" post; MoneyGram press releases of June 2022, 2 May 2025 and 2 June 2026; MoneyGram developer portal; Horizon mainnet data, 2 October 2026.
Frequently asked questions
What is a Stellar anchor?
An anchor is a business that connects Stellar to traditional payment rails. It takes a deposit of fiat through a bank transfer, card or cash point and sends you the equivalent tokens on Stellar, or takes tokens back and pays out fiat. Some anchors issue their own asset; others honour an asset someone else issues, such as USDC.
What is the difference between SEP-6 and SEP-24?
Both standardise deposits and withdrawals between a wallet and an anchor. Under SEP-6 the wallet collects the user's KYC data and passes it to the anchor through the SEP-12 API, so the user never leaves the wallet. Under SEP-24 the wallet opens a web page hosted by the anchor, and the anchor collects KYC itself. SEP-6's interactive parts are deprecated in favour of SEP-24.
Is SEP-31 for retail users?
No. SEP-31 is a business-to-business API for cross-border payments between a sending anchor and a receiving anchor, which must have a business relationship. The sender and recipient never need to hold Stellar assets themselves; the anchors settle with each other on Stellar.
How do I know an anchored token is genuine?
Check the issuer, not the code. Anyone can issue a token called USDC; Horizon listed at least 200 different USDC assets on 2 October 2026. The genuine one is identified by its issuer account, whose home_domain points to a stellar.toml on the issuer's own website listing that asset. See how assets are issued on Stellar.
Already on Stellar? Put the assets to work
WhaleHub stakes AQUA, aggregates ICE voting power and auto-compounds Aquarius rewards, with the risks written down.
Launch the appThis article is for education only and is not financial advice. Figures are taken from the sources linked in the text as of the date shown and change constantly. Verify them before acting.



