Skip to main content
POST
Closes a Dutch auction that reached its end time without selling out, and moves the unsold collateral from the market’s auction venue to the market’s liquidation router. The router opens a record for the remainder, linked to the market’s own liquidation record, and the position enters the manual settlement workflow. The transaction targets the venue, not the market. Until this is called, an expired auction leaves the collateral in limbo: no longer purchasable, and not yet available for an off-platform sale. The loan stays locked too, because the market treats the auction as open until it is settled.
The venue must be authorized on the market’s liquidation router, otherwise the settlement reverts and the collateral stays in the venue. The API does not check this before building the calldata. Read routerAuthorized on Get Auction Module, and sign the authorizeModuleOnRouter leg from Wire Auction Module if it is not true. The collateral token must also admit the router, as it must for every liquidation.
Any wallet may settle an expired auction while the market is unpaused. Under a pause, the venue accepts the call only from a wallet holding LIQUIDATOR_ROLE on the market. The optional signerAddress check is stricter than the contract: it demands LIQUIDATOR_ROLE whether or not the market is paused.

Path Parameters

string
required
The market’s record ID, as id on List Markets, not its contract address. See Market IDs.

Body Parameters

integer
required
Auction ID on the market’s venue. Must be a positive integer sent as a JSON number. Required on the confirm call too.
string
Wallet you intend to settle with. Supplying it turns on a LIQUIDATOR_ROLE check against that address, so the call is refused with LIQUIDATOR_ROLE_MISSING rather than handing back calldata that a paused market would revert. Omit it and no role check runs, which is the right choice when an unpaused market is settled from a wallet without the role.
string
Hash of the settleExpiredAuction transaction you broadcast. Send it with the same auctionId to confirm the settlement and record the result. Omit it to receive the calldata.

Response Fields

object

What Happens Next

After settlement the unsold collateral sits at the liquidation router as a PENDING liquidation, visible through Get Pending Liquidations. The remainder always arrives two-step, whatever the router’s atomic mode. From there the standard manual workflow applies: withdraw for sale, report proceeds, settle. Where the atomic sale is offered, Sell Pending Liquidation can sell the whole remainder to the sale recipient instead. The 7 day write-off clock does not restart at this point. It runs from the original liquidation, when the market opened its record and the auction began, so the router-side sale has whatever remains of those 7 days. Use the returned liquidationId on those router-side endpoints. Until this call confirms, they refuse the record with LIQUIDATION_ON_VENUE, because the router holds none of its collateral yet. Cash that earlier bids paid stays on the market’s record, and it settles together with whatever the router later forwards.

Error Codes

Refusals from the auction and role checks carry eligibleAt, which is null except on AUCTION_NOT_EXPIRED. Confirming with txHash can also return any transaction verification error.