Skip to main content

Direct NFT Trading

🤝 Direct NFT Trading​

Direct trading lets you advertise an NFT you want to sell or buy, and then settle the deal with someone in a private trade room on the TekTools website.

You never hand your NFT over to anyone to advertise it. It stays in your wallet the whole time, and the swap happens in one single transaction that you and the other person both sign. Either the whole trade happens, or nothing happens.

Works anywhere

These commands are installed to you, not to a server. Once you add TekTools to your Discord account, you can use them in any server, in DMs, and in group DMs — even where the TekTools bot isn't a member.

📋 Table of Contents​

  • Adding TekTools to Your Account
  • Who Can See Your Listing
  • Commands Overview
  • Advertising an NFT for Sale
  • Advertising an NFT You Want to Buy
  • Checking Who's Waiting
  • Starting a Trade
  • How the Swap Works
  • Fees
  • Tips & Best Practices
  • Troubleshooting

➕ Adding TekTools to Your Account​

This is a one-time approval, and it's what makes /otc-wts and /otc-wtb appear for you. Until you do it, the commands won't show up — including in DMs.

Any TekTools trade card has an Add to my apps button next to Start Trade, and you'll also see it when you start a trade. Click it, choose your account rather than a server, and approve.

Discord can take a few minutes to show newly added commands. If they don't appear straight away, fully restart your Discord client.

Adding it to your account isn't the same as inviting the bot

Server admins invite the bot to a server for roles, verification and the rest. Adding TekTools to your account only gives you the trading commands and doesn't change anything for the server.


👀 Who Can See Your Listing​

A card you post in a channel is visible to everyone who can see that channel — that's how someone finds it and clicks Start Trade.

A public browse page is coming

A page for browsing every open trade in one place is still being designed and isn't available yet. For now, listings live in the channels they're posted in.

Trades started in DMs stay private

Only cards posted in a channel appear publicly. If you use the commands in a DM or group DM, that trade is between the two of you and is never listed.


💬 Commands Overview​

CommandWhat it does
/otc-wts"Willing to sell" — advertise an NFT you want to sell
/otc-wtb"Willing to buy" — advertise an NFT you want to buy

Both commands post a card showing the NFT's image, its price, and a Start Trade button that anyone reading can click — plus See all open trades, which opens the public board where every listing lives.


🏷️ Advertising an NFT for Sale​

/otc-wts​

Parameters

  • mint — the mint address of the NFT you're selling, or a link to it on Tensor, Magic Eden, Solscan or any other marketplace
  • price — your asking price, in SOL unless you pick USDC
  • currency — (optional) SOL (the default) or USDC

Examples

/otc-wts mint:5Xy...9kQ price:12.5
/otc-wts mint:https://magiceden.io/item-details/5Xy...9kQ price:12.5
/otc-wts mint:5Xy...9kQ price:40 currency:USDC

TekTools looks up the NFT and posts a card with its picture, name and your asking price, plus a Start Trade button.

Your NFT stays in your wallet. Posting a card doesn't lock it, transfer it, or list it anywhere — you can keep using it, and you can still sell it elsewhere.


🛒 Advertising an NFT You Want to Buy​

/otc-wtb​

Parameters

  • mint — the mint address of the one NFT you want, or a link to it on Tensor, Magic Eden, Solscan or any other marketplace
  • collection — use this instead of mint to want any NFT from a collection. Give the collection's address, or a link to any item in it
  • offer — what you're offering, in SOL unless you pick USDC
  • notes — (optional) narrow a collection want down, e.g. PSA 6+
  • currency — (optional) SOL (the default) or USDC

Give either mint or collection — not both.

Examples

/otc-wtb mint:5Xy...9kQ offer:9
/otc-wtb mint:https://www.tensor.trade/item/5Xy...9kQ offer:9
/otc-wtb collection:7Bn...2mF offer:40 notes:PSA 6+
/otc-wtb collection:7Bn...2mF offer:120 currency:USDC

With mint, this posts the same kind of card from the buyer's side, and whoever owns that NFT can hit Start Trade to take you up on it.

Wanting any from a collection

Usually you don't care which one — you want a Lugia, not one exact serial. collection posts a card that anyone holding one can answer with Offer yours, and they pick which of theirs to put up once you're both in the trade room.

It's also the only way to reach items that aren't listed anywhere: nobody can browse for them, but the person holding one can see that you're looking.

Pasting a link to one NFT from the collection works, as long as that NFT belongs to an on-chain collection — TekTools follows it up to the collection it came from. Some older collections don't have one, and those can't be asked for as "any of them".


📋 Checking Who's Waiting​

/otc-my-trades​

Shows your open listings, how many people have opened a trade on each, and links to your live trade rooms. Only you can see the reply.

TekTools DMs you when someone takes up a listing, but Discord doesn't always allow bots to DM — so this is the reliable way to check. Run it anywhere the commands work, including DMs.


🤝 Starting a Trade​

  1. Someone clicks Start Trade on your card.
  2. TekTools creates a private trade room and sends both of you a link. Only the two of you can open it.
  3. Both people open the link, sign in with Discord, and connect a wallet.
  4. The room starts pre-filled with the deal that was advertised. Either side can change what they're putting in.
  5. There's a chat in the room, so you can agree details with the other person without leaving the page. You'll see when they're online and typing, and any change they make appears immediately.
  6. When you're both happy, you each hit Approve.
  7. Once both have approved, the swap button unlocks. You both sign, and the trade settles. The second signature has to follow the first within about a minute — the room counts it down for both of you.
Nobody there?

Trade rooms stay open for a day, so the two of you don't have to arrive at the same moment. If the other person isn't around, Nudge them sends them a DM saying you're waiting in the room.

You can nudge once every 10 minutes, up to three times per trade — enough to get someone back, not enough to pester them. The button only appears while the room is waiting on them.

Changing the deal resets approval

If either person changes what they're putting into the trade, both approvals are cleared. Nobody can quietly swap in something different after you've already agreed.


🔒 How the Swap Works​

Everything moves in a single transaction that both people sign:

  • the NFT goes to the buyer
  • the payment goes to the seller
  • the fee is collected

Because it's one transaction, it's all-or-nothing. There's no moment where one person has handed something over and is waiting on the other. If any part of it can't go through — for example the buyer doesn't have enough SOL, or the seller no longer owns the NFT — the whole thing fails and nothing moves.

Nobody, including TekTools, ever holds your NFT, your SOL or your USDC.


💵 Paying in USDC​

A price can be in SOL or USDC. Pick USDC with the currency option on either command, or with the SOL / USDC switch when posting from the website. Every price on the board and in the room says which currency it's in.

In a trade room each side can put up SOL, USDC or both, alongside NFTs, and the USDC moves in the same single transaction as everything else.

  • Fees are still paid in SOL. Each wallet needs the 0.01 SOL fee even when the price is in USDC, and a wallet receiving USDC for the first time needs about 0.002 SOL more to open its USDC account. A wallet holding only USDC can't trade.
  • The room checks the USDC is there. If the wallet offering USDC doesn't hold that much, both of you see it before approving, and the swap won't be built until it's covered.
  • USDC goes to 6 decimal places, e.g. 25.5.

💰 Fees​

A flat 0.01 SOL is charged to each side of the trade, collected as part of the same transaction. There's no percentage cut, no matter how large the trade is. The fee is always in SOL, even when the price is in USDC.

You'll also pay the normal Solana network fee, which is a tiny fraction of a cent.


💡 Tips & Best Practices​

  • You don't need to hunt for the mint address. Open the NFT on Tensor, Magic Eden or Solscan and paste the whole page link into mint — TekTools pulls the address out of it. In Phantom or Solflare, open the NFT and look under Details.
  • Double-check the mint address. The card shows the NFT's picture and name — make sure it's the one you mean before trading.
  • Both people need to be around. The final signing happens with both of you in the room at the same time, so agree on a time if you're in different timezones.
  • Keep some SOL for fees. The buyer needs the purchase price plus the fee and a little for network costs.
  • The link is private. Only the two people in the trade can open a trade room. Don't worry about someone else jumping in.

🔧 Troubleshooting​

/otc-wts and /otc-wtb don't show up You haven't added TekTools to your account yet — see Adding TekTools to Your Account above. It's a one-time approval, and the commands stay hidden until it's done. If you've already approved it, restart your Discord client.

"That doesn't look like a mint address" Nothing address-shaped was found in what you typed. Paste the NFT's page link from a marketplace instead, or copy the mint address from your wallet.

"No NFT found with that mint" The address is a valid Solana address, but nothing on chain matches it. Copy it again from your wallet or a marketplace listing.

"… is one NFT, not a collection" The address or link you gave is a single NFT that doesn't belong to any on-chain collection, so there's no group for "any of them" to match against. Ask for that exact NFT with mint instead, or paste the collection's own address. Some older collections have no on-chain collection at all, and can only be traded one NFT at a time.

"That trade listing is no longer open" The person who posted the card has closed it. Ask them to post a new one.

"You cannot open a trade room with yourself" You clicked Start Trade on your own card. Someone else needs to click it.

The swap button is greyed out Both people need to have connected a wallet and hit Approve. If someone changed the deal, both approvals reset and you'll each need to approve again.

The trade failed when we signed Nothing moved — that's by design. The usual causes are the buyer not having enough SOL or USDC, or the seller no longer holding the NFT. Fix the cause and try again.

"That USDC amount is too precise" USDC goes to 6 decimal places. Round the amount — 25.5, not 25.5000001.

"Doesn't hold this much USDC" in the trade room The wallet offering USDC doesn't have that much in it right now. Top it up or lower the amount; the swap can't be built until it's covered.

"Time ran out before you both signed" A signed swap is only valid for about a minute, and the other person didn't sign in time. Nothing moved. Hit Sign again — you'll both sign a fresh transaction, so agree in the chat that you're both ready first.

I can't connect a wallet on my iPhone Apple doesn't let Safari — or Discord's built-in browser — talk to wallet apps, so no wallet shows as "Detected" there. The connect window offers Open in Phantom and Open in Solflare: either one reopens the page inside that wallet's own browser, where connecting works normally. With any other wallet, open its app, find its browser, and load the page there. Android has no such restriction, which is why it works first time there.

The chat says "offline" The live connection dropped. The room still works — it just falls back to refreshing every few seconds, so changes take a moment longer to appear.

"That NFT isn't in one of your wallets" /otc-wts checks the NFT against the wallets verified on your TekTools account before posting the card, so nobody can advertise something they don't hold. If you're selling from a wallet you haven't added yet, add it at tektools.app/account and run the command again. If you've never verified a wallet there's nothing to check against, so the listing goes up either way.

"That NFT is frozen by its issuer" Some collections let their issuer freeze an NFT — Collector Crypt can, for example, while a card is being redeemed or reviewed. A frozen NFT can't move, so it can't be listed for sale, put into a trade room, or swapped until the issuer releases it. Frozen NFTs don't appear when you pick what to sell.

A trade room shows a warning next to an NFT A red triangle means that NFT isn't in the wallet that side connected, so the swap can't settle until it is. A grey question mark means it was advertised but nobody has connected a wallet yet, so there's been no way to check — treat it as a claim rather than a fact until the marker clears.

A trade room shows a shield next to a wallet That wallet isn't verified on that person's TekTools account — it's a wallet they named, not one they've proved they hold. It's not necessarily wrong, since trading from a new wallet is normal, but weigh it alongside everything else. Completing a trade from a wallet verifies it automatically, because co-signing the swap proves you control it.

I didn't get a DM with the link If your Discord DMs are closed, TekTools can't message you. When that happens and the buyer clicked Start Trade in a server, TekTools mentions you in that channel instead, so you still get the link. In a DM or group DM there's no channel to fall back to — but you never need the DM: run /otc-my-trades and any trade someone has opened with you is listed there.

The person who clicked is told when you couldn't be reached, so they know to message you rather than waiting on a reply that isn't coming.