Loans
Get Loan Status
What an active loan owes now, when the next payment is due, and whether it is in default
GET
/
seller-financing
/
api
/
markets
/
{marketId}
/
listings
/
{listingId}
/
status
curl "https://api.trusset.org/seller-financing/api/markets/cmsg4x7k20003sf9q1d8v6b2e/listings/4/status" \
-H "X-API-Key: trusset_your_key_here"
const res = await fetch(
`https://api.trusset.org/seller-financing/api/markets/${marketId}/listings/${listingId}/status`,
{ headers: { 'X-API-Key': 'trusset_your_key_here' } }
);
const { data } = await res.json();
if (data.active && data.nextDue) {
console.log(`Next due ${new Date(data.nextDue.dueAt * 1000).toISOString()}: ${data.nextDue.interestAmountFormatted}`);
console.log(`In default from ${new Date(data.liquidatableAt * 1000).toISOString()}`);
}
{
"success": true,
"data": {
"id": "4",
"status": "ACTIVE",
"active": true,
"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": true,
"data": {
"id": "4",
"status": "ACTIVE",
"active": true,
"interestDue": "140139154",
"interestDueFormatted": "140.139154",
"payoff": {
"interest": "140139154",
"principal": "8000000000",
"fee": "1500000",
"total": "8141639154",
"totalFormatted": "8141.639154"
},
"nextDue": {
"dueAt": 1793005200,
"interestAmount": "115781947",
"interestAmountFormatted": "115.781947",
"principalAmount": "0",
"principalAmountFormatted": "0.0"
},
"isLiquidatable": true,
"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-29T09:00:00.000Z",
"requestId": "3f7c2a91-6d84-4b0e-9a15-c2e8f4d7b603",
"instanceId": "inst_abc123"
}
}
{
"success": true,
"data": {
"id": "1",
"status": "COMPLETED",
"active": false
},
"error": null,
"metadata": {
"timestamp": "2026-10-19T09:12:04.318Z",
"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 listing from the market contract at the current block: the interest due now, the payoff, the next due date with its amount, whether the loan can be liquidated, and whether the asset can still be delivered to the buyer. A listing in any other status answers with its status and active: false, and a REPAID one adds assetLeg.
Interest accrues by the second, so every figure here grows until the next payment. See Due dates, grace and default.
Paying a period on time
Interest cannot be paid in advance. A payment beforenextDue.dueAt settles only the interest accrued until then, and the excess goes to principal, so the period still closes with interest owed. Pay once nextDue.dueAt has passed, and before liquidatableAt.
That window is the listing’s grace period: liquidatableAt is nextDue.dueAt plus the grace period plus one second. A listing with several interest periods therefore carries a grace period of at least one day, and Create Listing refuses less with GRACE_PERIOD_REQUIRED. On a single-period listing with a grace period of 0, pay off in full before maturity instead.
Send at least interestDue plus the repay fee to Repay. The fee is carved out of the payment, and it is the smaller of the market’s repayFee and 0.5 percent of the amount applied. Leave a small margin for the interest that accrues until the payment is mined: anything above the interest due goes to principal.
Path Parameters
string
required
The market’s record ID, as
id on List Markets.string
required
The listing’s ID on the market.
Response Fields
object
Show child attributes
Show child attributes
string
The listing ID.
string
The listing’s status.
boolean
true while the status is ACTIVE. The fields below are returned only then.string
Interest owed now, base and premium together, in the payment token’s smallest unit.
string
The same in whole units.
object
What a full repayment would pay now:
{ interest, principal, fee, total, totalFormatted }, in smallest units, with total the sum of the other three. Repay with amount: "full" approves total plus a margin.object
The first due date whose interest is not yet covered, projected on the principal outstanding now.
Show child attributes
Show child attributes
integer
Unix time of that due date. When every period’s interest up to maturity is paid, it is the maturity.
string
Interest charged up to
dueAt and not yet paid, in smallest units. "0" when only the principal is left.string
The same in whole units.
string
The principal outstanding when
dueAt is the maturity, "0" otherwise.string
The same in whole units.
boolean
true when the loan is in default and the seller or the operator can liquidate it now. null when unread.integer
Unix time the loan becomes liquidatable if nothing more is paid: one second after the grace period of
nextDue.dueAt. In the past once the loan is in default.object
On an
ACTIVE or REPAID listing: whether the asset can still be delivered to the buyer, as on Get Listing. With deliverable: false, a repayment that completes the loan and the asset claim are refused with 409 ASSET_NOT_DELIVERABLE. See Asset leg.When the loan’s figures cannot be read, an active listing answers with
id, status, active: true and assetLeg only. Missing figures are unread, not zero. Retry before acting on them.curl "https://api.trusset.org/seller-financing/api/markets/cmsg4x7k20003sf9q1d8v6b2e/listings/4/status" \
-H "X-API-Key: trusset_your_key_here"
const res = await fetch(
`https://api.trusset.org/seller-financing/api/markets/${marketId}/listings/${listingId}/status`,
{ headers: { 'X-API-Key': 'trusset_your_key_here' } }
);
const { data } = await res.json();
if (data.active && data.nextDue) {
console.log(`Next due ${new Date(data.nextDue.dueAt * 1000).toISOString()}: ${data.nextDue.interestAmountFormatted}`);
console.log(`In default from ${new Date(data.liquidatableAt * 1000).toISOString()}`);
}
{
"success": true,
"data": {
"id": "4",
"status": "ACTIVE",
"active": true,
"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": true,
"data": {
"id": "4",
"status": "ACTIVE",
"active": true,
"interestDue": "140139154",
"interestDueFormatted": "140.139154",
"payoff": {
"interest": "140139154",
"principal": "8000000000",
"fee": "1500000",
"total": "8141639154",
"totalFormatted": "8141.639154"
},
"nextDue": {
"dueAt": 1793005200,
"interestAmount": "115781947",
"interestAmountFormatted": "115.781947",
"principalAmount": "0",
"principalAmountFormatted": "0.0"
},
"isLiquidatable": true,
"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-29T09:00:00.000Z",
"requestId": "3f7c2a91-6d84-4b0e-9a15-c2e8f4d7b603",
"instanceId": "inst_abc123"
}
}
{
"success": true,
"data": {
"id": "1",
"status": "COMPLETED",
"active": false
},
"error": null,
"metadata": {
"timestamp": "2026-10-19T09:12:04.318Z",
"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 |
LOAN_STATUS_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/status" \
-H "X-API-Key: trusset_your_key_here"
const res = await fetch(
`https://api.trusset.org/seller-financing/api/markets/${marketId}/listings/${listingId}/status`,
{ headers: { 'X-API-Key': 'trusset_your_key_here' } }
);
const { data } = await res.json();
if (data.active && data.nextDue) {
console.log(`Next due ${new Date(data.nextDue.dueAt * 1000).toISOString()}: ${data.nextDue.interestAmountFormatted}`);
console.log(`In default from ${new Date(data.liquidatableAt * 1000).toISOString()}`);
}
{
"success": true,
"data": {
"id": "4",
"status": "ACTIVE",
"active": true,
"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": true,
"data": {
"id": "4",
"status": "ACTIVE",
"active": true,
"interestDue": "140139154",
"interestDueFormatted": "140.139154",
"payoff": {
"interest": "140139154",
"principal": "8000000000",
"fee": "1500000",
"total": "8141639154",
"totalFormatted": "8141.639154"
},
"nextDue": {
"dueAt": 1793005200,
"interestAmount": "115781947",
"interestAmountFormatted": "115.781947",
"principalAmount": "0",
"principalAmountFormatted": "0.0"
},
"isLiquidatable": true,
"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-29T09:00:00.000Z",
"requestId": "3f7c2a91-6d84-4b0e-9a15-c2e8f4d7b603",
"instanceId": "inst_abc123"
}
}
{
"success": true,
"data": {
"id": "1",
"status": "COMPLETED",
"active": false
},
"error": null,
"metadata": {
"timestamp": "2026-10-19T09:12:04.318Z",
"requestId": "3f7c2a91-6d84-4b0e-9a15-c2e8f4d7b603",
"instanceId": "inst_abc123"
}
}
