# Buy SRC-20

Every step of buying an SRC-20 token on StampDEX, what to check before you sign, and what each thing that can go wrong actually means.

> Source: bitcoinuniverseio/stampdex (private application source), orders module, src20 marketplace service, buy panel. Applicable release continuous deployment, verify with GET /api/version. Last verified 2026-09-01. Chain bitcoin/mainnet.

import ProductShot from '../../../components/screens/ProductShot.astro';

**For:** a trader with a supported wallet.
**Goal:** own an amount of an SRC-20 token, having paid a known total.
**Chain and network:** Bitcoin mainnet. **Version:** continuous, verify with
[`GET /api/version`](/docs-stampdex/api/status/).

**Safety:** your BTC leaves your wallet before the tokens arrive, and sits in a
StampDEX-controlled escrow in between. Read
[Where your funds are](/docs-stampdex/concepts/custody/) first. It is the single most
important thing to understand about buying here.

## Prerequisites

- A [supported wallet](/docs-stampdex/reference/wallets/) that can sign a Bitcoin
  payment here. Universe Wallet and UniSat are the two where buying has been run end to
  end.
- Enough BTC for the trade total, the 1.5% buyer service fee with its 500 sat minimum,
  and the network fee. See [Fees](/docs-stampdex/reference/fees/).
- The token's identity, not just its ticker. See
  [Asset identity](/docs-stampdex/concepts/asset-identity/).

## Steps

1. **Open the token page.** From the market board, or directly at
   `stampdex.fun/trade/src20/<ticker>/<deploy transaction>`. Confirm the deployment
   transaction and block match the token you researched.
2. **Pick a listing.** The book shows real signed listings with amount, unit price in
   sats per token, and total. Unit price times amount always equals the total.
3. **Review the trade.** Before your wallet opens, StampDEX shows the token, the
   amount, the unit price, the total, the service fee, the network fee rate, and the
   payment address. The same panel states that your BTC goes to a trade address
   StampDEX controls and is released to the seller only when the tokens reach you. That
   line is on the buy panel whether or not you use the review step, so quick trade does
   not hide it.
4. **Sign in your wallet.** Your wallet displays the same transaction. Check it against
   the review panel. See
   [Review a PSBT before signing](/docs-stampdex/guides/psbt-review/). If the numbers
   differ, refuse and report it.
5. **Wait.** Your payment confirms, the token balance is verified against the index,
   and the settlement worker delivers the tokens. The order page names each state and
   each transaction id.

## Expected result

<ProductShot
  id="fixture-buy-review"
  caption="The review panel, reproduced as a controlled recorded state with example numbers. In production the same panel shows your real trade before your wallet opens."
/>

The order reaches **Filled**. You hold the tokens, the seller holds the total minus
their service fee, and the service fee appears as its own output in the settlement
transaction.

## How to verify

- Open your [portfolio](/docs-stampdex/guides/portfolio/) and check the balance.
- Read the order over the API:

  ```bash
  curl "https://stamp.api.bitcoinuniverse.io/api/v1/orders/ORDER_ID"
  ```

- Take the transaction ids from the order page to any block explorer.

## Common failure states

| You see | What happened | What to do |
| --- | --- | --- |
| "This item is currently being purchased by another buyer" | Another buyer locked it first | Pick another listing. Your funds never moved |
| "Purchase session expired" | Your buyer lock passed its 30 minute life | Start again. Nothing moved |
| "Listing is no longer valid: seller collateral UTXO has been spent" | The seller spent the output backing the listing | The listing is removed automatically. Pick another |
| "The seller no longer holds ..." | The seller moved the tokens | The listing is removed automatically. Nothing of yours moved |
| "Could not verify the seller collateral right now" | The index is unreachable. Different from the listing being invalid | Wait a few minutes and retry |
| The order sits in Awaiting transfer | Bitcoin confirmation times vary with the fee rate | Watch the confirmations. Nothing more is needed from you |
| The order shows **Failed** | The payment confirmed but the expected token balance was not verified within the grace period | Your BTC is in the listing escrow. See [Recovery](/docs-stampdex/concepts/recovery/) |

## Recovery path

Nothing here needs you to send a second payment. Repeating a payment confirmation with
the same transaction id is safe: it returns the answer already recorded rather than
paying twice. A **Failed** order holds your BTC in a named escrow address until an
operator completes or returns it. See [Recovery](/docs-stampdex/concepts/recovery/).

## Related

- [Where your funds are](/docs-stampdex/concepts/custody/)
- [Order lifecycle](/docs-stampdex/concepts/order-lifecycle/)
- [Fees](/docs-stampdex/reference/fees/)
- [Orders endpoints](/docs-stampdex/api/orders/)