How Stellar anchors off-ramp USDC through SEP-24, SEP-31, and SEP-38 quotes, how a payout API does the same job, and which one fits your product.
Stellar anchors and payout APIs both turn USDC on Stellar into money in a bank account. Anchors do it through open standards: SEP-24 for a user's own withdrawals, SEP-31 for business cross-border payments, and SEP-38 for quotes. A payout API does it behind one REST integration. The choice comes down to who owns the user, the KYC, and the corridors.
Stellar is unusual here. Most networks have no shared standard for off-ramps, so every provider invents its own. Stellar has a whole family of them. That's worth understanding even if you end up using an API, because the SEPs spell out the same steps every off-ramp has to solve.
Key takeaways
expires_at. It's still a Draft.An anchor is a business that connects Stellar to the outside financial system. It accepts bank currency and delivers a Stellar asset, or accepts a Stellar asset and pays bank currency out. The SEP-24 spec describes its goal as "the standard way for anchors and wallets to interact on behalf of users" (SEP-24).
Anchors publish what they support in a stellar.toml file and authenticate clients with SEP-10 web authentication. On top of that sit the flows. Three matter for off-ramps: SEP-24, SEP-31, and SEP-38.
In payment terms, an anchor is an off-ramp with a public protocol. Types of crypto off-ramps places it next to exchanges, widgets, and payout APIs.
SEP-24 is the hosted flow. The wallet asks, the anchor collects what it needs on its own page, and the wallet sends the funds.
pending_user_transfer_start.withdraw_memo.completed.Good for a consumer wallet: the user picks a local anchor, and the anchor owns its compliance screen. The tradeoff is that you don't control that screen, and each anchor's form looks different.
SEP-31 is the business version. It "defines a protocol for enabling payments between two financial accounts that exist outside the Stellar network" (SEP-31). A sending anchor collects from its client and pays a receiving anchor, which delivers to the recipient's bank.
What the receiving anchor requires:
KYC_SERVER.ANCHOR_QUOTE_SERVER.Transactions report statuses like pending_sender, pending_stellar, pending_receiver, pending_external, completed, refunded, expired, and error. SEP-31 is marked Active at version 3.1.0.
The catch is in the plural. Every receiving anchor is a separate counterparty with its own KYC fields and its own quote server. Three corridors can mean three integrations.
SEP-38, the Anchor RFQ API, has two kinds of price (SEP-38):
GET /prices and GET /price. "These prices are indicative." The actual price is set at conversion time.POST /quote. The quoted amount "must be held in reserve" until expiry, and expires_at is "the date and time by which the anchor must receive funds from the client."SEP-31 ties the two together: with a firm quote, "the Stellar transaction must be submitted to the Stellar network prior to the quote's expiration." Same idea as any binding payout quote. One more detail: SEP-38 is still a Draft, at version 2.5.0, so anchors may implement it differently.
That split mirrors the RFQ model in wholesale FX, covered in RFQ pricing for stablecoin FX.
One integration, one quote format, one KYC relationship. On BlindPay, a Stellar payout funded from your own wallet takes three calls (payout with Stellar):
network. It locks the rate and fees for 5 minutes.On Stellar, BlindPay payouts are funded in USDC on mainnet, and development instances use USDB on stellar_testnet (supported chains). The fiat side runs on local rails: ACH, wire, RTP, and SWIFT (POBO/COBO) in the US and globally, Pix and TED in Brazil, SPEI in Mexico, ACH Colombia, Transfers 3.0 in Argentina, and SEPA in Europe. The recipient never sees Stellar. They see a bank deposit.
Which network to fund from in the first place is its own question; the best network to off-ramp stablecoins compares finality and fees.
| SEP-24 | SEP-31 | SEP-38 | Payout API (BlindPay) | |
|---|---|---|---|---|
| Job | User's own deposit or withdrawal | Business cross-border payment | Prices and firm quotes | Business payout to a bank account |
| Who runs KYC | Anchor, on its hosted page | Receiving anchor, via SEP-12 | n/a | BlindPay, through the API |
| Price | Anchor's terms | SEP-38 quote, optional | Indicative or firm with expires_at | Locked quote, 5 minutes |
| Integration per corridor | One per anchor | One per receiving anchor | Per anchor quote server | One API for every rail |
| Spec status | Active, v3.8.0 | Active, v3.1.0 | Draft, v2.5.0 | Versioned REST API |
Illustrative example. A company holding USDC on Stellar pays contractors in Brazil, Mexico, and the US every month. These counts describe integration work, not prices.
| Step | Through anchors (SEP-31) | Through a payout API |
|---|---|---|
| Find a counterparty per country | 3 receiving anchors | 1 provider |
| Auth setups (SEP-10 or API key) | 3 | 1 |
| KYC field sets to map | 3 SEP-12 schemas | 1 customer schema |
| Quote formats to parse | Up to 3 SEP-38 servers | 1 quote object |
| Status models to reconcile | 3 implementations of the SEP-31 statuses | 1 payout status model |
The anchor column isn't wrong. It's open, and nobody sits in the middle. It's just more surface. Add a fourth country and the left column grows by one of everything.
Pick by who owns the user.
You can mix them. A wallet that offers SEP-24 to its users can still send its own treasury payouts through an API. And the hub question behind both, who earns what on a conversion, is in how on/off-ramp providers make money.
If you hold USDC on Stellar, run one test payout on a development instance: create a quote with stellar_testnet and USDB, call authorize, sign, and create the payout. Time it end to end and compare it with the anchor flow you have today. The Stellar payout guide has the code.
The five risks of a stablecoin card: peg, program failure, custody, smart contracts, and fraud, with the August 2026 incident and a safety checklist.
Stablecoin payments are as safe as the issuer, the network, the provider, and your own controls. The seven risks to check, with real incidents and fixes.
Five stablecoin APIs compared for cross-border payments: primary use case, pre-funding requirement, payout regions, and developer experience, plus how to choose by buyer scenario.