Skip to main content
This guide is available on four different programming languages: Typescript, Kotlin, Flutter (Dart) and Swift. You can change the shown version on each page via the buttons above.
ImportantDocumentation for Kotlin is currently work in progress. Some of information may not be applicable for Kotlin, or missing. Code samples may be incomplete.
The SEP-38 standard defines a way for anchors to provide quotes for the exchange of an off-chain asset and a different on-chain asset, and vice versa. Quotes may be indicative or firm ones. When either is used is explained in the sections below.

Creating SEP-38 Object

Let’s start with creating a sep38 object, which we’ll use for all SEP-38 interactions. Authentication is optional for these requests, and depends on the anchor implementation. For our example we will include it. Authentication is done using Sep-10, and we add the authentication token to the sep38 object.

Get Anchor Information

First, let’s get information about the anchor’s support for SEP-38. The response gives what stellar on-chain assets and off-chain assets are available for trading.
For example a response will look like this. The asset identifiers are described below in Asset Identification Format.

Asset Identification Format

Before calling other endpoints we should understand the scheme used to identify assets in this protocol. The following format is used:
The currently accepted scheme values are stellar for Stellar assets, and iso4217 for fiat currencies. For example to identify USDC on Stellar we would use:
And to identify fiat USD we would use:
Further explanation can be found in SEP-38 specification.

Get Prices

Now let’s get indicative prices from the anchor in exchange for a given asset. This is an indicative price. The actual price will be calculated at conversion time once the Anchor receives the funds from a user. In our example we’re getting prices for selling 5 fiat USD.
The response gives the asset prices for exchanging the requested sell asset. For example, a response look like this:

Get Price

Next, let’s get an indicative price for a certain pair. Once again this is an indicative value. The actual price will be calculated at conversion time once the Anchor receives the funds from a User. Either a sellAmount or buyAmount value must be given, but not both. And context refers to what Stellar SEP context this will be used for (ie. sep6, sep24, or sep31).
The response gives information for exchanging these assets. For example, a response will look like this:

Post Quote

Now let’s get a firm quote from the anchor. As opposed to the earlier endpoints, this quote is stored by the anchor for a certain period of time. We will show how we can grab the quote again later. The request body is similar to the .price() call we made earlier.
However now the response gives an id that we can use to identify the quote. The expires_at field tells us how long the anchor will wait to receive funds for this quote. An example response looks like this:

Get Quote

Now let’s get the previously requested quote. To do that we use the id from the .requestQuote() response.
The response should match the one given from .requestQuote() we made earlier.