Skip to main content
The Gasless Trustline feature lets your users receive a brand-new asset without ever needing to understand, fund, or manually pay for a Stellar trustline. It is one of the most powerful onboarding tools in the Soroswap API, and it is designed to remove the single biggest friction point that new users hit on Stellar.
TL;DR — A sponsor account fronts the ~0.5 XLM reserve needed to open the user’s trustline, and the user repays it inside the same swap using the assets they are already trading. The user does not need to hold XLM beforehand, and never has to think about trustlines at all.
New to trustlines? Read the Trustlines concept page first. In short: on Stellar, an account must open a trustline — and lock up a small XLM base reserve — before it can hold any non-native asset.

The problem it solves

On Stellar, before an account can receive a token (say USDC), it must:
  1. Understand what a trustline is.
  2. Own XLM to pay the base reserve (~0.5 XLM per trustline) plus the transaction fee.
  3. Submit a separate changeTrust transaction before the swap.
For a brand-new user who only holds, for example, some bridged USDC and no XLM, this is a dead end: they can’t open the trustline needed to receive the very asset they want, because they have no XLM to pay for it. This “empty wallet” problem is a classic onboarding cliff. Gasless Trustline removes all three barriers. The user just swaps. The trustline is created, funded, and repaid automatically as part of the transaction they were going to sign anyway.

Benefits

How it works

Gasless Trustline runs on the Stellar Classic DEX (SDEX) using path payments, and applies only to the first swap for a given user (i.e., when that user does not yet have a trustline for the output asset).

The role of the sponsor

A sponsor is a wallet you control (your app’s account) that temporarily covers the XLM base reserve required to open the user’s trustline. Two Stellar primitives make this safe and atomic:
  • beginSponsoringFutureReserves — the sponsor starts paying reserves on behalf of the user.
  • endSponsoringFutureReserves — the sponsorship window closes.
Between those two operations, the transaction opens the trustline, performs the swap, and repays the sponsor’s ~0.5 XLM out of the assets being swapped — so the sponsor is made whole within the same transaction.

The operations, step by step

When gasless trustline is enabled, /quote/build assembles a single SDEX transaction (built on the sponsor’s account as source) containing all of the operations below. For an EXACT_IN swap:
  1. beginSponsoringFutureReserves — sponsor starts sponsoring the user’s future reserves.
  2. changeTrust — the user opens the trustline for the output asset (reserve paid by the sponsor).
  3. (optional) Platform-fee payments — if feeBps / referralId are set.
  4. pathPaymentStrictSend — the user performs the actual swap (assetInassetOut).
  5. pathPaymentStrictReceive — the user buys 0.5 XLM using the output asset and sends it to the sponsor, repaying the reserve.
  6. endSponsoringFutureReserves — the sponsorship window closes.
The EXACT_OUT flow is analogous but reorders the steps: the user first buys the 0.5 XLM for the sponsor (via a pathPaymentStrictReceive, or a plain payment when the input asset is XLM), then opens the trustline, then performs the main swap.
Because the transaction touches both the user’s account (trustline + swap) and the sponsor’s account (reserve), the resulting XDR must be signed by both the user and the sponsor.

Using it in the API

Gasless Trustline touches two endpoints: /quote and /quote/build.

Step 1 — Request a gasless quote

Add gaslessTrustline: "create" to your /quote request body.
Only set gaslessTrustline: "create" when you are sure the user does not already have a trustline for the output asset, and you have a funded sponsor account. If the user already trusts the asset, use a regular quote instead.
The response is a Gasless Trustline Swap Quote. It always routes through "platform": "sdex" and includes two extra objects:
Key fields:

Step 2 — Build the transaction

Pass the quote to /quote/build along with the user (from) and the sponsor account.
The response contains the unsigned XDR:
Requirements & limits
  • sponsor is required when gaslessTrustline is set — the build fails without it.
  • The from and to addresses must currently be the same (a different recipient is not yet supported for gasless trustlines).
  • Gasless trustline works only on the Stellar Classic DEX (SDEX) and applies only to the user’s first swap for that asset.

Step 3 — Sign with both wallets, then send

Because the transaction spans the user and the sponsor, collect both signatures before submitting:
  1. The user signs the XDR (opens the trustline, performs the swap, repays the sponsor).
  2. The sponsor signs the XDR (authorizes covering the reserve).
  3. Submit the fully-signed XDR to POST /send (or through your own Soroban RPC / Horizon).

End-to-end example (JavaScript)

When to use it

Use gasless trustline when:
  • The user is acquiring an asset for the first time (no existing trustline).
  • You want the smoothest possible onboarding, especially for users with no XLM.
  • You operate a funded sponsor account to front the reserve.
Don’t use it when:
  • The user already has a trustline for the output asset (use a regular quote — it will be cheaper and can route across all protocols, not just SDEX).
  • You need to send the output to a different recipient than the swapper (fromto is not yet supported).
  • You want routing across Soroswap / Phoenix / Aqua — gasless trustline is SDEX-only.