Skip to main content
POST
Seller Financing is in beta and runs on Ethereum Sepolia instances only for now (DEVELOPMENT instances on Ethereum). A PRODUCTION instance, or one on another network, answers 503 SELLER_FINANCING_UNAVAILABLE. See Seller Financing.
Builds the purchase of an OPEN listing for the buyer to sign: an exact approval of the downpayment on the payment token, then purchase. The market pulls exactly the downpayment and holds it in escrow. The loan starts at the block time of the purchase, and its interest periods count from there. In freeze mode, the purchase freezes the listed amount in the seller’s wallet. In custody mode the asset is already in the adapter, and nothing moves. Either way, the asset reaches the buyer only after full payment, through Claim Asset. The market admits a buyer that:
  • is not the seller, the market or its adapter,
  • is the designated buyer, when the listing names one,
  • is verified on the market identity register, when the market names one,
  • is not refused by the asset token’s own identity register, because the token would otherwise refuse the delivery.
The listing must not have expired, the market must not be paused, and the seller must not hold the agent role on the asset token. Before building, the API refuses a listing past its expiresAt with 409 TX_WOULD_REVERT, error ListingExpired and details.expiresAt. List Listings with status=OPEN already leaves such listings out. In freeze mode it also checks that the freeze adapter still holds its agent role and that the seller still holds the listed amount unfrozen. Either failure answers 409 TX_WOULD_REVERT, with AgentRoleMissing or InsufficientFreeBalance.

Path Parameters

string
required
The market’s record ID, as id on List Markets.
string
required
The listing’s ID on the market.

Body Parameters

string
required
The buyer’s wallet, which signs both steps. It must hold the downpayment in the payment token. Without it the answer is 400 FROM_REQUIRED.

Response Fields

object
The approval is exact, never unlimited. A wallet already holding a smaller non-zero allowance gets a step that resets it to zero first, because some tokens refuse to change a non-zero allowance.

Error Codes