propose_transfer → accept_transfer), signed by the seller’s and buyer’s wallets directly.
The marketplace ships disabled and is switched on per deployment. When it’s off, every endpoint here returns
409 with { "error": "market_disabled" }.Browse listings
escrow is the deployment’s escrow account. feeBps is the marketplace fee in basis points, taken from the sale proceeds at settlement (the rate is operator-configured per deployment — read it live from this endpoint rather than hard-coding it).
Mint a deposit intent
account must be a valid Stellar public key (400 invalid_account otherwise). The route is rate-limited (10/min per IP by default), and intents are idempotent per (listing, buyer): repeat calls return your existing intent until it expires (intents live 24 hours; an expired one is rotated to a fresh memo). A listing that’s no longer active returns 409 listing_not_active. Under heavy concurrent requests for the same intent you may rarely see 409 intent_conflict — that one is transient; retry the call.
The buyer flow
1
Wait for the seller's proposal
The seller calls
propose_transfer(node, your_address) on the Registry. Don’t pay before this is live on chain — a deposit paid against a sale with no standing proposal to you bounces back.2
Pay the deposit
Send exactly
amountXlm (native XLM) to the escrow account with the hash memo from the intent, in one payment — partial payments can’t accumulate; an under-price payment is refunded (see the rules below). Pay from a self-custody wallet you control: refunds return to the sending address, so paying from an exchange means any refund lands in the exchange’s omnibus account.3
Accept the transfer
Call
accept_transfer(node) from your wallet. Ownership flips to you on chain, and escrow releases the payment to the seller (minus the fee).Escrow, refund, and bond rules
Sellers post a performance bond to activate a listing. The rules:- Seller fails to deliver a funded sale — cancels the proposal, re-aims it to someone else, or sells the name elsewhere while your deposit is funded: your deposit auto-refunds in full and the seller’s bond is slashed to you.
- You never accept a live offer and it expires: your deposit auto-refunds in full and the seller keeps the bond — a buyer’s own non-acceptance is not the seller’s breach.
- Overpayment: the surplus above the price refunds to the sender.
- Refunds are never lost. Auto-refunds cover under-price payments and overpayment surpluses alike. Amounts too small to be worth a network fee, and edge cases needing review, are held for the operator to release — delayed at worst, never absorbed.
- Refunds always go to the sending address — never to whoever currently holds the name.
Sale history
node is the namespace’s 64-hex-character namehash (400 invalid_node otherwise). Returns escrow-settled sales, newest first (up to 50) — provenance backed by real settled escrow, with wash-flagged sales excluded from the public record: