Agent-native · non-custodial · settled on-chain

The agent-native
OTC desk.

One API. An agent trades for USDC, settled in a 2-of-3 escrow no one can move alone. No accounts, no KYC. BTX now, more assets soon.

How a trade actually works

Tell an agent what you want. It runs the whole trade through one API.

Your AI agent
peerotc · agent session
buy 100 BTX on PeerOTC
GET /v1/info → live · 2% fee
POST /v1/buy → deal #42 · escrow btx1z…
GET /v1/deals/42/wait?since=CREATED → FUNDED
pay 15 USDC on Base → tx 0x9f3a…
GET /v1/deals/42/wait?since=PAID → RELEASED
✓ BTX delivered to your wallet
If the buyer never paysThe seller can cancel and reclaim the BTX right away once the desk confirms no payment landed, or it auto-refunds at the deadline. Nobody is exposed.
If the two sides disagreeWe check Base for the payment and sign with the honest side. Our 1 of 3 keys can never take the funds.
USDC transacted
BTX transacted
Trades settled on-chain

A non-custodial, on-chain escrow model, made agent-native.

Non-custodialPer-deal 2-of-3 multisig. We hold 1 key, never enough to move funds alone.
On-chainEvery release and refund is a public, verifiable transaction.
Agent-nativeOne REST API. Any agent trades end-to-end. No signup.

BTX / USDC

No trades yet.
The chart appears after the first settled deal.
Sell offers
PriceSize (BTX)Total $
last price
Buy offers
Recent tradesSize · Time
USDC
BTX
Total
Trades run through an AI agent or the API. Funds lock in a per-deal 2-of-3 escrow; settlement is automatic once the USDC is verified on Base. 2% fee on completion.
Non-custodial 2-of-3 escrow Every settlement on-chain OFAC-screened counterparties Pre-signed timeout refunds No accounts, no KYC

Frequently asked questions

Is my BTX self-custodied?

Yes. Funds sit in a fresh per-deal 2-of-3 multisig (buyer · seller · arbitrator), not on our servers. Two of the three keys are required to move anything, and we hold only one. No one, including us, can move your funds alone.

How does the escrow work?

Four steps. Match: a seller posts an offer, a buyer takes it. Lock: the seller deposits the BTX into the fresh 2-of-3 escrow. Pay: the buyer sends USDC on Base directly to the seller. Release: the BTX releases on-chain: buyer and seller co-sign, or (if a party pre-signed at funding) the desk completes the settlement automatically once the payment is verified. Each side signs on its own machine; we never hold a buyer or seller key, and our key is only ever the second signature.

What if the buyer doesn't pay?

Nothing is lost. The seller can cancel and reclaim the BTX immediately once the desk verifies no USDC payment landed on Base. Failing that, every deal also has an on-chain refund deadline (about 3 hours): if the buyer never pays, the BTX auto-refunds to the seller, chain-enforced so it can never front-run a real payment.

What happens in a dispute?

Either side can escalate. The arbitrator (a 1-of-3 key) reviews the on-chain evidence and co-signs the outcome with the honest party: releasing to the buyer if the cash leg landed, or refunding the seller if it didn't. The arbitrator can never move funds alone, and arbitration is a best-effort service, not a guarantee.

What are the fees?

2%, charged only on a successfully completed settlement and deducted on-chain. Network/transaction fees are separate. No fee on offers, cancellations, or refunds.

Are you an exchange or broker?

PeerOTC is non-custodial escrow software for two peers to settle an agreed OTC deal: we never hold or transmit your funds, and the cash leg moves wallet-to-wallet between the peers. It is designed and intended to operate as software, not as an exchange, broker, custodian, or money transmitter; no regulator has reviewed or made any determination about this service. Counterparty addresses are screened against the OFAC SDN list, and trading is unavailable in sanctioned regions. Mined proof-of-work assets only. Provided as-is; not investment advice.

Which assets can I trade?

BTX today, against USDC on Base. More mined proof-of-work assets get their own desk (for example /prl) as they are added.

Is it audited?

Not yet. The software is an unaudited beta. Trade only what you can afford to lose, and read the Terms & Risk Disclosure.

Transparency

Total transacted
Trades settled
Transacted · 24h

This desk (live /v1/info)

loading /v1/info…

Completed settlements

loading…

Agents & API

Built for AI agents. Give it the brief below, a funded Base wallet, and a BTX key, and it runs the whole trade. No account.

Paste into any AI agent.

    
    

Quickstart: an agent buys BTX

1
Check the desk is liveGET /v1/info - only when "live": true is real USDC safe to send. Also returns the fee and refund timeout.
2
Take an offerPOST /v1/buy {asset, amount, taker_payout, taker_pubkey, taker_wallet, taker_usdc} → returns pay_usdc, pay_to, escrow_address, and your deal_token (store it). taker_usdc is the Base address you will pay from - payments are payer-bound.
3
Wait for FUNDEDGET /v1/deals/{id}/wait?since=CREATED long-polls until the seller locks the BTX. Never pay before FUNDED.
4
Pay on BaseSend exactly pay_usdc USDC to pay_to, from your declared taker_usdc address (USDC 0x8335…2913, 6 decimals).
5
Wait for RELEASEDGET /v1/deals/{id}/wait?since=PAID - settlement is automatic once the desk verifies your USDC; the BTX lands at taker_payout.

Authentication & identity

No accounts. Posting an offer or taking a deal returns a secret token (maker_token / deal_token); keep it - it authorizes dispute, cancel, and PSBT signing on that deal (send it in the JSON body, or as an X-Deal-Token header). Your identity is a BTX pubkey + payout address, per deal. Always send a User-Agent header.

Base URL

https://peerotc.com/v1

Endpoints

Market data
GET/v1/infodesk profile: live, fee, custody, arbitrator, timeout
GET/v1/book?asset=BTXbid/ask order-book depth
GET/v1/ticker?asset=BTXlast · bid · ask · 24h volume
GET/v1/trades?asset=BTXrecent settled trades (chart data)
GET/v1/offers?asset=BTXopen offers + each maker's reputation
GET/v1/statstotal transacted + trades settled
GET/v1/settlementscompleted deals + on-chain txids
Trade
POST/v1/buyone-call buy at best ask → escrow + pay + deal_token
POST/v1/offerspost a buy/sell offer → maker_token
POST/v1/offers/{id}/taketake a specific offer → escrow + pay + deal_token
Deal lifecycle
GET/v1/deals/{id}state: CREATED·FUNDED·PAID·RELEASED·REFUNDED·EXPIRED + txids
GET/v1/deals/{id}/wait?since=STATElong-poll: blocks ~25s, returns when the state changes
GET/v1/deals/{id}/psbt?action=release|refund|timeoutunsigned 2-of-3 PSBT to sign on your own node (token)
POST/v1/deals/{id}/psbtsubmit your signed PSBT; the desk finalizes at 2-of-3 (token)
POST/v1/deals/{id}/disputeescalate to the arbitrator (token)
POST/v1/deals/{id}/cancelseller: refund a FUNDED unpaid deal now (token)

Operator-only (need X-Admin-Token, agents don't call these): POST /v1/deals/{id}/release, POST /v1/deals/{id}/arbitrate, and on a demo desk POST /v1/deals/{id}/paid.

End-to-end example

# 1. take the best ask - include taker_usdc (the Base address you will pay from)
curl -X POST https://peerotc.com/v1/buy -H 'User-Agent: my-agent/1' \
  -d '{"asset":"BTX","amount":100,"taker_payout":"btx1z…","taker_pubkey":"<BTX pubkey>",
       "taker_wallet":"<wallet>","taker_usdc":"0xYourBaseAddress"}'
# → { "deal_id": 42, "pay_usdc": 15.0, "pay_to": "0x… (Base)",
#     "escrow_address": "btx1z…", "deal_token": "…" }

# 2. wait for the seller to lock the BTX
curl -H 'User-Agent: my-agent/1' 'https://peerotc.com/v1/deals/42/wait?since=CREATED'   # → FUNDED

# 3. pay the USDC on Base FROM taker_usdc (6 decimals: 15 USDC = 15000000)
cast send --keystore w.json --password $PW --rpc-url https://mainnet.base.org \
  0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 "transfer(address,uint256)" <pay_to> 15000000

# 4. wait for settlement
curl -H 'User-Agent: my-agent/1' 'https://peerotc.com/v1/deals/42/wait?since=PAID'     # → RELEASED

Terms of Service & Risk Disclosure

Last updated 10 June 2026. By accessing, browsing, or using PeerOTC: the website, the software, the API, the order book, the escrow mechanism, and any related interface (together, the "Service"): you agree to be bound by these Terms of Service and the Risk Disclosure below (the "Terms"). If you do not agree, do not access or use the Service. The operator of this Service is referred to as "we", "us", or "the Operator".

1. What the Service is: and is not

PeerOTC is proprietary, non-custodial escrow software that lets two independent parties settle a self-negotiated, peer-to-peer trade of a mined proof-of-work commodity token for a stablecoin. The Service is designed, intended, and operated not to be, and you agree that you do not treat it as, a broker, dealer, exchange, trading platform, marketplace operator, money services business, money transmitter, custodian, wallet provider, bank, fiduciary, escrow agent in the legal sense, investment adviser, or financial, legal, accounting, or tax adviser. No regulatory authority has reviewed, approved, or made any determination regarding the Service or these characterizations. We never take custody of, hold, control, or have access to your funds, assets, or private keys. Funds are locked in a per-deal multi-signature address controlled by the parties' own keys; we cannot move them alone. We do not match, route, execute, broker, or guarantee any trade, price, counterparty, or settlement. The order book is a passive bulletin board of offers posted by users; we do not solicit, recommend, or endorse any offer, asset, counterparty, or transaction.

2. No advice; your own decisions

Nothing on the Service is, or should be construed as, financial, investment, legal, tax, accounting, or other advice, or a solicitation, recommendation, or offer to buy or sell anything. You are solely responsible for your own decisions, for evaluating any counterparty and transaction, and for obtaining your own independent professional advice.

3. Eligibility, compliance & prohibited persons

You represent and warrant, each time you use the Service, that you are at least 18 years old and have full legal capacity; that you are not a person or entity that is the subject of any sanctions, and are not located in, organised under the laws of, or ordinarily resident in any sanctioned or prohibited jurisdiction (including any jurisdiction blocked by this interface); that you are not on any government restricted-party or denied-persons list; that your use of the Service is lawful in your jurisdiction; and that you are not using the Service for any unlawful purpose, including money laundering, terrorist financing, fraud, or sanctions evasion. You are solely responsible for determining whether your use of the Service is legal where you are and for complying with all laws, regulations, tax obligations, and reporting requirements that apply to you. We may refuse, screen, geofence, suspend, or terminate access to anyone, at any time, for any reason or no reason, without liability.

4. Assumption of risk

You acknowledge and accept that using the Service involves significant risk, including the risk of total and irreversible loss of funds. This includes, without limitation: bugs, errors, vulnerabilities, or failures in the escrow scripts, smart contracts, software, or its dependencies (the software is unaudited and provided on a beta basis); loss, theft, or compromise of your private keys, wallet, or device; counterparty default, fraud, or non-performance; on-chain risks (reorganisations, congestion, fee spikes, failed or stuck transactions, finality assumptions); volatility and total loss of value of any asset; smart-contract, oracle, bridge, or stablecoin failure or de-pegging; regulatory action; and Service unavailability, downtime, or discontinuation. You use the Service entirely at your own risk and could lose everything you commit to it.

5. Disclaimer of warranties

THE SERVICE IS PROVIDED "AS IS" AND "AS AVAILABLE", WITH ALL FAULTS AND WITHOUT WARRANTY OF ANY KIND. TO THE MAXIMUM EXTENT PERMITTED BY LAW, WE DISCLAIM ALL WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, ACCURACY, AND ANY WARRANTY ARISING FROM COURSE OF DEALING OR USAGE. WE DO NOT WARRANT THAT THE SERVICE WILL BE UNINTERRUPTED, SECURE, ERROR-FREE, OR FREE OF HARMFUL COMPONENTS, OR THAT ANY DEFECT WILL BE CORRECTED, OR THAT ANY TRADE WILL SETTLE.

6. Limitation of liability

TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT WILL WE, OUR AFFILIATES, OR OUR OFFICERS, DIRECTORS, EMPLOYEES, CONTRACTORS, OR CONTRIBUTORS BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, EXEMPLARY, OR PUNITIVE DAMAGES, OR FOR ANY LOSS OF PROFITS, REVENUE, DATA, GOODWILL, OR DIGITAL ASSETS / FUNDS, ARISING OUT OF OR RELATING TO THE SERVICE OR THESE TERMS, WHETHER IN CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY, OR OTHERWISE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. WITHOUT LIMITING THE FOREGOING, OUR TOTAL AGGREGATE LIABILITY FOR ALL CLAIMS RELATING TO THE SERVICE WILL NOT EXCEED THE GREATER OF (A) THE TOTAL FEES YOU ACTUALLY PAID US IN THE 30 DAYS BEFORE THE EVENT GIVING RISE TO THE CLAIM, OR (B) ONE HUNDRED U.S. DOLLARS (US$100). SOME JURISDICTIONS DO NOT ALLOW CERTAIN EXCLUSIONS; IN THOSE JURISDICTIONS OUR LIABILITY IS LIMITED TO THE MAXIMUM EXTENT PERMITTED BY LAW. YOU AGREE THAT THIS ALLOCATION OF RISK IS A FUNDAMENTAL BASIS OF THE BARGAIN.

7. Arbitration of disputes between traders

Where a deal designates an arbitrator key, dispute resolution is a discretionary, best-effort, good-faith function and is not guaranteed. We make no representation that any dispute will be reviewed, resolved, or resolved correctly or in your favour, and we are not liable for any arbitration outcome, delay, or non-action. An arbitrator's role is limited to co-signing a release or refund based on the on-chain evidence available; it is not a court, regulator, or guarantor.

8. Fees

A fee (currently 2%) is charged only on a successfully completed settlement, deducted on-chain. Network/transaction fees are separate and are your responsibility. Fees are non-refundable.

9. Indemnification

You will indemnify, defend, and hold harmless us and our affiliates and our and their officers, directors, employees, contractors, and contributors from and against any and all claims, demands, losses, liabilities, damages, costs, and expenses (including reasonable legal fees) arising out of or relating to your use of the Service, your trades, your violation of these Terms, your violation of any law or third-party right, or any content or instruction you submit.

10. No guarantee of availability; changes

We may modify, suspend, limit, or discontinue the Service (or any part of it), and may amend these Terms, at any time without notice and without liability. Your continued use after a change constitutes acceptance. It is your responsibility to review the current Terms.

11. Governing law; dispute resolution; class-action and jury waiver

These Terms are governed by the laws of the Operator's jurisdiction of organisation, without regard to conflict-of-laws rules. Any dispute between you and us will be resolved exclusively by final and binding individual arbitration, and not in a court, except that either party may seek injunctive relief for intellectual-property or unauthorised-access matters. You and we waive any right to a jury trial and any right to participate in a class, collective, or representative action. Any claim must be brought within one (1) year of accrual or be permanently barred.

12. Miscellaneous

If any provision is held unenforceable, the rest remains in effect and the unenforceable provision is enforced to the maximum extent permitted. Our failure to enforce a provision is not a waiver. These Terms are the entire agreement between you and us regarding the Service and supersede prior understandings. You may not assign these Terms; we may. Headings are for convenience only. The software, the Service, and all related interfaces are proprietary to and operated solely by us, and all rights are reserved. These Terms govern your use of this hosted interface and the Operator-provided functions.

By using PeerOTC you confirm that you have read, understood, and agree to these Terms and the Risk Disclosure, and that you accept all risks of loss.