> ## Documentation Index
> Fetch the complete documentation index at: https://pond.dflow.net/llms.txt
> Use this file to discover all available pages before exploring further.

# FAQs

> Answers to common questions about building with DFlow

## General

<AccordionGroup>
  <Accordion title="Which wallets are supported?">
    Any Solana wallet that supports standard transaction signing.
  </Accordion>

  <Accordion title="Does DFlow custody user funds?">
    No. Funds stay in the user's wallet throughout the trade lifecycle.
  </Accordion>

  <Accordion title="Do users need to KYC to trade?">
    Spot trades are non-custodial and don't require KYC.
  </Accordion>

  <Accordion title="Does DFlow charge a protocol fee on spot trades?">
    No.
  </Accordion>

  <Accordion title="Does DFlow take positive slippage?">
    No.
  </Accordion>

  <Accordion title="Does DFlow support Pump.fun tokens?">
    Yes. Both on the bonding curve and after graduation to PumpSwap (Pump.fun's native AMM).
  </Accordion>

  <Accordion title="Will DFlow support limit orders?">
    On the roadmap. No timeline yet.
  </Accordion>
</AccordionGroup>

## Trading & Routing

<AccordionGroup>
  <Accordion title="How do I trade with native SOL?">
    Use the WSOL mint (`So11111111111111111111111111111111111111112`) as `inputMint` or `outputMint` and set `wrapAndUnwrapSol=true`. DFlow auto-wraps and unwraps SOL.
  </Accordion>

  <Accordion title="In POST /swap, what should destinationTokenAccount.address be for native SOL output?">
    Use the destination wallet address, not the wallet's WSOL associated token account address.
  </Accordion>

  <Accordion title="What's the difference between price impact and slippage?">
    Slippage is the price drift between quote and execution. Price impact is the gap between market price and your effective fill, caused by your trade's size relative to available liquidity.
  </Accordion>

  <Accordion title="What's the maximum price impact allowed on a trade?">
    The server applies a default threshold and rejects trades that exceed it with a `price_impact_too_high` error. Override with [`priceImpactTolerancePct`](/resources/trading-api/order/order#parameter-price-impact-tolerance-pct).
  </Accordion>

  <Accordion title="How does DFlow handle multiple token accounts for the same mint?">
    DFlow uses the associated token account by default. To send output elsewhere, pass [`destinationTokenAccount`](/resources/trading-api/order/order#parameter-destination-token-account) on `/order`; output lands in that account even if it isn't the ATA.
  </Accordion>

  <Accordion title="What is JIT routing?">
    Traditional aggregators commit a route at quote time. DFlow's [JIT routing](/spot/jit-routing) may refine the route at execution onchain, reflecting current conditions.
  </Accordion>

  <Accordion title="Does DFlow offer an intent-based swap?">
    Yes, as an opt-in. Most builders use [`/order`](/resources/trading-api/order/order) (imperative): the app signs a fully constructed transaction and submits through its own RPC. The intent flow ([`GET /intent`](/resources/trading-api/declarative/quote) + [`POST /submit-intent`](/resources/trading-api/declarative/submit)) gives stronger sandwich resistance on standard SPL pairs: the user signs an open order without a fixed route, and DFlow submits the open order and fill atomically as a Jito bundle. Token-2022 mints aren't supported on `/intent`.
  </Accordion>

  <Accordion title="Why do intermediate token accounts and residual dust sometimes remain after a swap?">
    Multi-leg routes can create intermediate token accounts to pass value between legs.

    * **Full consumption:** If subsequent legs consume the intermediate amount, the accounts are closed.
    * **Partial consumption:** If a residual remains (venue rounding, leg constraints), the accounts stay open with small dust.
  </Accordion>

  <Accordion title="Why am I getting route_not_found?">
    It means DFlow couldn't find a route for the pair at your trade size. A likely cause is insufficient liquidity for that pair and size. It's also worth confirming both mint addresses are correct and that `amount` is in atomic units (scaled by the input token's decimals, e.g. `5000000` for 5 USDC).
  </Accordion>

  <Accordion title="Can I use token symbols like &#x22;USDC&#x22; with the API?">
    No. The Trading API accepts **base58 mint addresses only**; there's no symbol resolver. (The `dflow` CLI resolves a small set of common symbols, but the API does not.)
  </Accordion>

  <Accordion title="How do I get a price quote without a connected wallet?">
    Call [`/order`](/resources/trading-api/order/order) **without** `userPublicKey`. It returns the price fields (`inAmount`, `outAmount`, `priceImpactPct`) and no transaction, so you can show a price before the user has connected a wallet. A separate `/quote` endpoint still works, but `/order` is preferred for new integrations.
  </Accordion>
</AccordionGroup>

## Fees & Sponsorship

<AccordionGroup>
  <Accordion title="What fees apply to a trade?">
    Network fees, optional [priority fees](/spot/trading/priority-fees), optional [platform fees](/spot/trading/platform-fees) if you set them, and any DEX fees baked into the route. Slippage depends on market liquidity and trade size.
  </Accordion>

  <Accordion title="How do I set a priority fee on a trade?">
    Pass [`prioritizationFeeLamports`](/resources/trading-api/order/order#parameter-prioritization-fee-lamports) on `/order` as a lamport amount or one of `auto`, `medium`, `high`, `veryHigh`, `disabled`. See [Priority Fees](/spot/trading/priority-fees) for the two fee modes.
  </Accordion>

  <Accordion title="Does DFlow support gas sponsorship?">
    Yes. Pass the [`sponsor`](/resources/trading-api/order/order#parameter-sponsor) parameter on `/order` to have a sponsor wallet cover the transaction fee.
  </Accordion>

  <Accordion title="Should I set platformFeeBps if I'm not collecting a fee?">
    No. The API factors `platformFeeBps` into slippage tolerance, so declaring a fee you don't collect wastes slippage budget and gives users worse pricing. See [Platform Fees](/spot/trading/platform-fees#how-platform-fees-affect-trades).
  </Accordion>
</AccordionGroup>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Why is my trade failing with &#x22;exceeded CUs meter at BPF instruction&#x22;?">
    The transaction hit its compute unit (CU) limit. Pass `dynamicComputeUnitLimit=true` on `/order` to have the API size the limit automatically.
  </Accordion>

  <Accordion title="Does dynamicComputeUnitLimit add latency?">
    Enabling [`dynamicComputeUnitLimit`](/resources/trading-api/order/order#parameter-dynamic-compute-unit-limit) may add latency; however, it depends on the rest of your parameters.
  </Accordion>

  <Accordion title="Can I call /order directly from the browser?">
    No. The Trading API doesn't set CORS headers, so browser requests are blocked. Proxy `/order` through your backend; most builders use an edge function (Cloudflare Workers, Vercel Edge Functions) to keep added latency low.
  </Accordion>

  <Accordion title="Can I connect to the market-data streams from the browser?">
    No. As a security best practice, your DFlow API key belongs on the backend, not in browser code where anyone can read it. Stream through a backend proxy that holds the key, connects to DFlow, and relays messages to the browser.
  </Accordion>

  <Accordion title="My API key works for /order but the stream rejects it. Why?">
    Access to the quote and book streams is granted per API key; it's a separate permission, not automatic with a valid or production key. A key that trades fine on `/order` can still be refused on the stream until the team enables stream access on that specific key. So if a working key is rejected only on the stream, that's a key permission, not a bug in your integration; request stream access from the team.
  </Accordion>
</AccordionGroup>

## Proof

<AccordionGroup>
  <Accordion title="Who provides KYC for Proof?">
    [Stripe Identity](https://docs.stripe.com/identity).
  </Accordion>

  <Accordion title="Is there a fee to use Proof?">
    No.
  </Accordion>

  <Accordion title="Does Proof work with embedded wallet providers like Privy?">
    Yes. Your app directs the user to `https://dflow.net/proof` to complete KYC, with a [redirect URL](/proof/partner-integration#deep-link-parameters) to send them back to your app after verification.
  </Accordion>

  <Accordion title="Why isn't my Proof redirect firing after verification?">
    Proof only redirects to `https:`, `moz-extension://`, or `chrome-extension:` URLs. Custom schemes (e.g. `myapp://callback`) silently fail. Native mobile apps should use [universal links](https://developer.apple.com/ios/universal-links/) (iOS) or [app links](https://developer.android.com/training/app-links) (Android). See [redirect\_uri parameter docs](/proof/partner-integration#deep-link-parameters).
  </Accordion>
</AccordionGroup>
