> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trusset.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Loan Status

> What an active loan owes now, when the next payment is due, and whether it is in default

> [!NOTE]
>
> 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](/endpoints/seller-financing/introduction.md).

Reads the loan of an `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](/endpoints/seller-financing/introduction.md#due-dates-grace-and-default).

## Paying a period on time

Interest cannot be paid in advance. A payment before `nextDue.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](/endpoints/seller-financing/create-listing.md) 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](/endpoints/seller-financing/repay.md). 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

**marketId** `string` *required*

The market's record ID, as `id` on [List Markets](/endpoints/seller-financing/list-markets.md).

**listingId** `string` *required*

The listing's ID on the market.

## Response Fields

**data** `object`

**id** `string`

The listing ID.

**status** `string`

The listing's status.

**active** `boolean`

`true` while the status is `ACTIVE`. The fields below are returned only then.

**interestDue** `string`

Interest owed now, base and premium together, in the payment token's smallest unit.

**interestDueFormatted** `string`

The same in whole units.

**payoff** `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](/endpoints/seller-financing/repay.md) with `amount: "full"` approves `total` plus a margin.

**nextDue** `object`

The first due date whose interest is not yet covered, projected on the principal outstanding now.

**dueAt** `integer`

Unix time of that due date. When every period's interest up to maturity is paid, it is the maturity.

**interestAmount** `string`

Interest charged up to `dueAt` and not yet paid, in smallest units. `"0"` when only the principal is left.

**interestAmountFormatted** `string`

The same in whole units.

**principalAmount** `string`

The principal outstanding when `dueAt` is the maturity, `"0"` otherwise.

**principalAmountFormatted** `string`

The same in whole units.

**isLiquidatable** `boolean`

`true` when the loan is in default and the seller or the operator can liquidate it now. `null` when unread.

**liquidatableAt** `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.

**assetLeg** `object`

On an `ACTIVE` or `REPAID` listing: whether the asset can still be delivered to the buyer, as on [Get Listing](/endpoints/seller-financing/get-listing.md#response-fields). With `deliverable: false`, a repayment that completes the loan and the asset claim are refused with `409 ASSET_NOT_DELIVERABLE`. See [Asset leg](/endpoints/seller-financing/introduction.md#asset-leg).

> [!WARNING]
>
> 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.

```bash cURL theme={null}
curl "https://api.trusset.org/seller-financing/api/markets/cmsg4x7k20003sf9q1d8v6b2e/listings/4/status" \
  -H "X-API-Key: trusset_your_key_here"
```

```typescript TypeScript theme={null}
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()}`);
}
```

```json On Schedule theme={null}
{
  "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"
  }
}
```

```json In Default theme={null}
{
  "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"
  }
}
```

```json Not Active theme={null}
{
  "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 |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.