Listings
Get Listing
One listing with its stamped terms, its loan, what an active loan owes and whether the asset can still be delivered
GET
/
seller-financing
/
api
/
markets
/
{marketId}
/
listings
/
{listingId}
curl "https://api.trusset.org/seller-financing/api/markets/cmsg4x7k20003sf9q1d8v6b2e/listings/4" \
-H "X-API-Key: trusset_your_key_here"
const res = await fetch(
`https://api.trusset.org/seller-financing/api/markets/${marketId}/listings/${listingId}`,
{ headers: { 'X-API-Key': 'trusset_your_key_here' } }
);
const { data } = await res.json();
if (data.status === 'ACTIVE' && data.loan.status) {
console.log(`Payoff now ${data.loan.status.payoff.totalFormatted}`);
}
if (data.assetLeg?.checked && data.assetLeg.warning) {
console.log(data.assetLeg.warning);
}
{
"success": true,
"data": {
"id": "4",
"status": "ACTIVE",
"expired": false,
"seller": "0x3E22FdfA28e880239541d9c5B66B3b161F9ED77b",
"rateMode": "DERIVED",
"assetAmount": "100",
"assetAmountFormatted": "100",
"price": "10000000000",
"priceFormatted": "10000.0",
"downpayment": "2000000000",
"downpaymentFormatted": "2000.0",
"principal": "8000000000",
"principalFormatted": "8000.0",
"downpaymentBps": 2000,
"duration": 2592000,
"interestPeriod": 604800,
"gracePeriod": 172800,
"rate": "40000000000000000",
"rateBps": 400,
"premiumA": "781805364",
"premiumB": "71784000",
"designatedBuyer": null,
"expiresAt": null,
"createdAt": 1792400112,
"ref": "0xbf99db9385e9acbeaf1bb0fb2b03846217e51159e1f85e21d539a35125e73815",
"loan": {
"buyer": "0x09BD3f5c18488e492a7bC3C7CCfc6cc837f511e8",
"start": 1792400400,
"maturity": 1794992400,
"checkpointAt": 1792400400,
"principal": "8000000000",
"principalFormatted": "8000.0",
"escrowedPrincipal": "0",
"escrowedPrincipalFormatted": "0.0",
"baseAccrued": "0",
"interestPaid": "0",
"interestPaidFormatted": "0.0",
"status": {
"interestDue": "74098370",
"interestDueFormatted": "74.09837",
"payoff": {
"interest": "74098370",
"principal": "8000000000",
"fee": "1500000",
"total": "8075598370",
"totalFormatted": "8075.59837"
},
"nextDue": {
"dueAt": 1793005200,
"interestAmount": "115781947",
"interestAmountFormatted": "115.781947",
"principalAmount": "0",
"principalAmountFormatted": "0.0"
},
"isLiquidatable": false,
"liquidatableAt": 1793178001
}
},
"assetLeg": {
"checked": true,
"mode": "FREEZE",
"pooled": true,
"locked": true,
"deliverable": true,
"seller": "0x3E22FdfA28e880239541d9c5B66B3b161F9ED77b",
"assetAmount": "100",
"lockedAmount": "100",
"sellerRequired": "100",
"sellerFrozen": "100",
"sellerBalance": "100",
"shortfall": "0",
"shortfallFormatted": "0",
"warning": null,
"note": null
}
},
"error": null,
"metadata": {
"timestamp": "2026-10-22T09:00:00.000Z",
"requestId": "3f7c2a91-6d84-4b0e-9a15-c2e8f4d7b603",
"instanceId": "inst_abc123"
}
}
{
"success": false,
"data": null,
"error": {
"code": "LISTING_NOT_FOUND",
"message": "No listing with this id exists on the market."
},
"metadata": {
"timestamp": "2026-10-22T09:00:00.000Z",
"requestId": "3f7c2a91-6d84-4b0e-9a15-c2e8f4d7b603",
"instanceId": "inst_abc123"
}
}
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.ACTIVE, loan.status adds what it owes now, as Get Loan Status returns it. While it is ACTIVE or REPAID, assetLeg says whether the asset can still be delivered to the buyer. A cancelled or liquidated listing on a custody market carries collateralEscrow, what the custody adapter holds in escrow for the seller.
The terms never change after creation. A configuration change on the market reaches new listings only.
Path Parameters
string
required
The market’s record ID, as
id on List Markets.string
required
The listing’s ID on the market: a positive integer of up to 19 digits. It is the
id of the ListingCreated event of the listing transaction.Response Fields
object
Show child attributes
Show child attributes
string
The listing ID.
boolean
true for an OPEN listing past its expiresAt. It can no longer be bought, and a purchase is refused with ListingExpired, but it stays OPEN on chain until the seller or the operator cancels it. false otherwise.string
The wallet that listed.
string
Amount of the asset sold, in the asset token’s smallest unit.
string
The same in whole units.
null when the asset’s decimals could not be read.string
The price, in the payment token’s smallest unit.
string
The price in whole units.
string
The downpayment, rounded up, in smallest units.
string
The downpayment in whole units.
string
The price less the downpayment: what the buyer owes after purchase, in smallest units.
string
The principal in whole units.
integer
The downpayment in basis points of the price.
integer
The runtime from purchase to maturity, in seconds.
integer
The interest period, in seconds.
integer
The grace period after each due date, in seconds.
string
The annual rate, as an 18-decimal fixed-point fraction. For
FIXED the fixed rate, for DERIVED the base rate.integer
The rate in basis points.
string
The walk-away premium’s first coefficient.
"0" on a FIXED listing.string
Its second coefficient.
"0" on a FIXED listing.string
The only wallet that may buy, or
null when anyone the registers admit may.integer
Unix time after which the listing can no longer be bought, or
null for none.integer
Unix time of the listing.
string
The adapter’s reference for the lock. Set at listing in custody mode and at purchase in freeze mode, all zeros before.
object
The loan, or
null before a purchase.Show child attributes
Show child attributes
string
The wallet that purchased.
integer
Unix time of the purchase. Interest periods count from it.
integer
Unix time the principal is due.
integer
Unix time of the last principal payment, or the purchase.
string
Principal still outstanding, in smallest units.
"0" once repaid.string
The same in whole units.
string
Principal repaid so far and held in escrow, in smallest units. It moves to the seller on completion and becomes refundable on liquidation, so it reads
"0" after either.string
The same in whole units.
string
Base interest accrued up to
checkpointAt, in smallest units.string
Interest paid so far, in smallest units, including what a liquidation took.
string
The same in whole units.
object
Only while the listing is
ACTIVE: interestDue, payoff, nextDue, isLiquidatable and liquidatableAt, as on Get Loan Status. null when those reads failed.object
Only while the listing is
ACTIVE or REPAID: whether the asset can still reach the buyer. See Asset leg.Show child attributes
Show child attributes
boolean
false when the lock or the seller’s balance could not be read. deliverable, locked and warning are then null and note says what was not read. An unchecked leg never refuses a payoff or a claim.string
FREEZE or CUSTODY.boolean
true when the asset can be delivered in full: in freeze mode the seller’s wallet holds at least assetAmount, in custody mode the adapter holds at least assetAmount under this listing. With false, a payoff and the asset claim are refused with 409 ASSET_NOT_DELIVERABLE.boolean
In custody mode the same as
deliverable. In freeze mode true while the freeze still covers every ACTIVE and REPAID listing of the seller on this market and this listing’s lock is whole.boolean
Freeze mode only.
true when every listing of the market was read, so sellerRequired counts all of the seller’s sold listings.string
Freeze mode only. The seller’s wallet, checksummed.
string
The amount this listing sold, in the asset token’s smallest unit.
string
What the adapter reports as locked under this listing, in smallest units: the recorded amount, clamped in custody mode to what the adapter holds and in freeze mode to the seller’s frozen balance and balance.
string
Freeze mode only. The asset all of the seller’s
ACTIVE and REPAID listings on this market sold, in smallest units.string
Freeze mode only. The seller’s frozen balance on the token, in smallest units.
string
Freeze mode only. The seller’s balance on the token, frozen tokens included, in smallest units.
string
What is missing to deliver this listing in full, in smallest units.
"0" when deliverable.string
The same in whole units.
string
What is wrong, in words: the asset left the seller’s wallet or the adapter, part of the freeze was released, or the seller’s balance covers fewer than all of its sold listings, so the buyers who claim first are delivered first.
null when nothing is wrong.string
On an unchecked leg, what could not be read. On a freeze leg, set when the market holds more listings than one scan reads, so not every lock of the seller was counted.
null otherwise.object
Only on a
CANCELLED or LIQUIDATED listing of a custody market: { holder, amount, amountFormatted, note }. holder is the seller. amount is what the custody adapter holds in escrow for the seller across every listing on the market, in the asset token’s smallest unit, "0" when the return went through. note says how to reclaim it, with Claim Escrowed Collateral, once the token admits the seller again. When the escrow could not be read, amount is null and note says so.curl "https://api.trusset.org/seller-financing/api/markets/cmsg4x7k20003sf9q1d8v6b2e/listings/4" \
-H "X-API-Key: trusset_your_key_here"
const res = await fetch(
`https://api.trusset.org/seller-financing/api/markets/${marketId}/listings/${listingId}`,
{ headers: { 'X-API-Key': 'trusset_your_key_here' } }
);
const { data } = await res.json();
if (data.status === 'ACTIVE' && data.loan.status) {
console.log(`Payoff now ${data.loan.status.payoff.totalFormatted}`);
}
if (data.assetLeg?.checked && data.assetLeg.warning) {
console.log(data.assetLeg.warning);
}
{
"success": true,
"data": {
"id": "4",
"status": "ACTIVE",
"expired": false,
"seller": "0x3E22FdfA28e880239541d9c5B66B3b161F9ED77b",
"rateMode": "DERIVED",
"assetAmount": "100",
"assetAmountFormatted": "100",
"price": "10000000000",
"priceFormatted": "10000.0",
"downpayment": "2000000000",
"downpaymentFormatted": "2000.0",
"principal": "8000000000",
"principalFormatted": "8000.0",
"downpaymentBps": 2000,
"duration": 2592000,
"interestPeriod": 604800,
"gracePeriod": 172800,
"rate": "40000000000000000",
"rateBps": 400,
"premiumA": "781805364",
"premiumB": "71784000",
"designatedBuyer": null,
"expiresAt": null,
"createdAt": 1792400112,
"ref": "0xbf99db9385e9acbeaf1bb0fb2b03846217e51159e1f85e21d539a35125e73815",
"loan": {
"buyer": "0x09BD3f5c18488e492a7bC3C7CCfc6cc837f511e8",
"start": 1792400400,
"maturity": 1794992400,
"checkpointAt": 1792400400,
"principal": "8000000000",
"principalFormatted": "8000.0",
"escrowedPrincipal": "0",
"escrowedPrincipalFormatted": "0.0",
"baseAccrued": "0",
"interestPaid": "0",
"interestPaidFormatted": "0.0",
"status": {
"interestDue": "74098370",
"interestDueFormatted": "74.09837",
"payoff": {
"interest": "74098370",
"principal": "8000000000",
"fee": "1500000",
"total": "8075598370",
"totalFormatted": "8075.59837"
},
"nextDue": {
"dueAt": 1793005200,
"interestAmount": "115781947",
"interestAmountFormatted": "115.781947",
"principalAmount": "0",
"principalAmountFormatted": "0.0"
},
"isLiquidatable": false,
"liquidatableAt": 1793178001
}
},
"assetLeg": {
"checked": true,
"mode": "FREEZE",
"pooled": true,
"locked": true,
"deliverable": true,
"seller": "0x3E22FdfA28e880239541d9c5B66B3b161F9ED77b",
"assetAmount": "100",
"lockedAmount": "100",
"sellerRequired": "100",
"sellerFrozen": "100",
"sellerBalance": "100",
"shortfall": "0",
"shortfallFormatted": "0",
"warning": null,
"note": null
}
},
"error": null,
"metadata": {
"timestamp": "2026-10-22T09:00:00.000Z",
"requestId": "3f7c2a91-6d84-4b0e-9a15-c2e8f4d7b603",
"instanceId": "inst_abc123"
}
}
{
"success": false,
"data": null,
"error": {
"code": "LISTING_NOT_FOUND",
"message": "No listing with this id exists on the market."
},
"metadata": {
"timestamp": "2026-10-22T09:00:00.000Z",
"requestId": "3f7c2a91-6d84-4b0e-9a15-c2e8f4d7b603",
"instanceId": "inst_abc123"
}
}
Error Codes
| Code | HTTP | Cause |
|---|---|---|
INVALID_LISTING_ID | 400 | listingId is not a positive integer of up to 19 digits |
MARKET_NOT_FOUND | 404 | No market with this ID that your instance reaches on its network |
LISTING_NOT_FOUND | 404 | No listing with this ID on the market |
CHAIN_UNAVAILABLE | 503 | The market could not be read. Retry shortly |
SELLER_FINANCING_UNAVAILABLE | 503 | The instance is a PRODUCTION instance or not on Ethereum |
LISTING_READ_FAILED | 500 | Unexpected failure. Retry, or contact support with the request ID |
⌘I
curl "https://api.trusset.org/seller-financing/api/markets/cmsg4x7k20003sf9q1d8v6b2e/listings/4" \
-H "X-API-Key: trusset_your_key_here"
const res = await fetch(
`https://api.trusset.org/seller-financing/api/markets/${marketId}/listings/${listingId}`,
{ headers: { 'X-API-Key': 'trusset_your_key_here' } }
);
const { data } = await res.json();
if (data.status === 'ACTIVE' && data.loan.status) {
console.log(`Payoff now ${data.loan.status.payoff.totalFormatted}`);
}
if (data.assetLeg?.checked && data.assetLeg.warning) {
console.log(data.assetLeg.warning);
}
{
"success": true,
"data": {
"id": "4",
"status": "ACTIVE",
"expired": false,
"seller": "0x3E22FdfA28e880239541d9c5B66B3b161F9ED77b",
"rateMode": "DERIVED",
"assetAmount": "100",
"assetAmountFormatted": "100",
"price": "10000000000",
"priceFormatted": "10000.0",
"downpayment": "2000000000",
"downpaymentFormatted": "2000.0",
"principal": "8000000000",
"principalFormatted": "8000.0",
"downpaymentBps": 2000,
"duration": 2592000,
"interestPeriod": 604800,
"gracePeriod": 172800,
"rate": "40000000000000000",
"rateBps": 400,
"premiumA": "781805364",
"premiumB": "71784000",
"designatedBuyer": null,
"expiresAt": null,
"createdAt": 1792400112,
"ref": "0xbf99db9385e9acbeaf1bb0fb2b03846217e51159e1f85e21d539a35125e73815",
"loan": {
"buyer": "0x09BD3f5c18488e492a7bC3C7CCfc6cc837f511e8",
"start": 1792400400,
"maturity": 1794992400,
"checkpointAt": 1792400400,
"principal": "8000000000",
"principalFormatted": "8000.0",
"escrowedPrincipal": "0",
"escrowedPrincipalFormatted": "0.0",
"baseAccrued": "0",
"interestPaid": "0",
"interestPaidFormatted": "0.0",
"status": {
"interestDue": "74098370",
"interestDueFormatted": "74.09837",
"payoff": {
"interest": "74098370",
"principal": "8000000000",
"fee": "1500000",
"total": "8075598370",
"totalFormatted": "8075.59837"
},
"nextDue": {
"dueAt": 1793005200,
"interestAmount": "115781947",
"interestAmountFormatted": "115.781947",
"principalAmount": "0",
"principalAmountFormatted": "0.0"
},
"isLiquidatable": false,
"liquidatableAt": 1793178001
}
},
"assetLeg": {
"checked": true,
"mode": "FREEZE",
"pooled": true,
"locked": true,
"deliverable": true,
"seller": "0x3E22FdfA28e880239541d9c5B66B3b161F9ED77b",
"assetAmount": "100",
"lockedAmount": "100",
"sellerRequired": "100",
"sellerFrozen": "100",
"sellerBalance": "100",
"shortfall": "0",
"shortfallFormatted": "0",
"warning": null,
"note": null
}
},
"error": null,
"metadata": {
"timestamp": "2026-10-22T09:00:00.000Z",
"requestId": "3f7c2a91-6d84-4b0e-9a15-c2e8f4d7b603",
"instanceId": "inst_abc123"
}
}
{
"success": false,
"data": null,
"error": {
"code": "LISTING_NOT_FOUND",
"message": "No listing with this id exists on the market."
},
"metadata": {
"timestamp": "2026-10-22T09:00:00.000Z",
"requestId": "3f7c2a91-6d84-4b0e-9a15-c2e8f4d7b603",
"instanceId": "inst_abc123"
}
}
