For AI agents: the documentation index is at /llms.txt, and this page is available as Markdown at /gateway/wallet-control.md.

Wallet control

True Markets is non-custodial. Every user wallet needs two approvals to move funds: a signer key and True Markets. We can never move funds on our own. Whoever holds the signer key, your servers or your user, controls the wallet, and you choose which for each user.

How wallets work

Approval 1
Signer key
Held by your servers or your user
Signs each transaction you execute.
User's walletSOLEVM
Two approvals to move funds
Runs on Turnkey
Private key sealed in a secure enclave
One wallet per user, on Solana and EVM.
Approval 2
True Markets
Co-signs what you execute with your organization token
Can't move funds on its own.
Nobody holds a wallet's private key: not Turnkey, not True Markets, not you. The signer key holds the authority to approve.

Wallets run on Turnkey, and each private key is created inside a secure enclave it never leaves. Each user's wallet is separate, and every transaction from it needs both approvals.

Funds in a user's wallet can be sent to any address, at any time. We approve only the transactions we built for an order or transfer you placed.

Who signs

Where the signer key lives decides who controls the wallet. There are three setups.

Your servers sign, one key
Your servers
one key
Wallets
cust_7781
cust_7782
cust_7783
✓ Trades run without the user.
△ One key signs for every user.
Your servers sign, a key per user
Your servers
key A
key B
key C
Wallets
cust_7781
cust_7782
cust_7783
✓ Trades run without the user.
△ You keep a key for every user.
Your user signs
User's device
key A
key B
key C
Wallets
cust_7781
cust_7782
cust_7783
✓ You never move their funds.
△ The user approves every trade.
Your servers sign, one keyYour servers sign, a key per userYour user signs
Who approves each tradeyour serversyour serversyour user
Runs without the useryesyesno
You can move the user's fundsyesyesno
One signer key signs forevery userone userone user
Built forone-tap buying and automated strategiesautomated products that keep each customer separateapps where users trade for themselves

You choose the setup when you create each user, so one organization can mix them: automated accounts your servers sign for, next to users who sign their own trades.

How each setup signs a trade

Orders and transfers are placed and executed the same way in every setup. Only the signing step moves.

Your servers sign
  1. Your serverPlaces the order
  2. True MarketsReturns the payloads
  3. Your serverSigns each payload
  4. Your serverExecutes
Your user signs
  1. Your serverPlaces the order
  2. True MarketsReturns the payloads
  3. Your appUser approves and signs
  4. Your serverExecutes

When your user signs, your server passes each payload to your app, the user's device signs it, and the signature comes back to your server for execute. Your users never call True Markets themselves.

If a key leaks

Moving funds takes two keys: your organization API key, which mints the token that executes, and a signer key, which signs. One without the other moves nothing.

What leakedCan it move funds?
A signer keyNo. We approve only what you execute with your organization token.
Your organization API keyNo. It can place orders, but it can't sign them.
BothYes, for every user registered with that signer key.

How far a leak of both reaches depends on the setup:

One key for every user
Your servers
one key
Wallets
cust_7781
cust_7782
cust_7783
✕ Every user's wallet is exposed.
A key per user
Your servers
key A
key B
key C
Wallets
cust_7781
cust_7782
cust_7783
✕ Only cust_7781's wallet is exposed.

You can revoke an organization API key on the developer console's API keys page. No new tokens can be minted from it, and the tokens it already minted expire within the hour.

Register the signer key

Send signer_public_key when you create a user: a 33-byte compressed P-256 public key, as 66 hex characters. Every setup uses the same field; only who holds the private half differs. User accounts shows the call, and How requests and signing work shows how a payload is signed.

Next: User accounts

Was this page helpful?YesNo