Deployment
Get Deployment Options
The factory, collateral modes, default configuration, bounds and payment tokens of your network
GET
/
seller-financing
/
api
/
markets
/
options
curl "https://api.trusset.org/seller-financing/api/markets/options" \
-H "X-API-Key: trusset_your_key_here"
const res = await fetch('https://api.trusset.org/seller-financing/api/markets/options', {
headers: { 'X-API-Key': 'trusset_your_key_here' }
});
const { data } = await res.json();
const usdc = data.paymentTokens.find((t: { isDefault: boolean }) => t.isDefault);
{
"success": true,
"data": {
"available": true,
"message": null,
"chainId": 11155111,
"factory": "0x2805394e8fCC41bB11613c95967be0104AB88b1c",
"modes": [
{
"mode": "FREEZE",
"default": true,
"summary": "The asset stays frozen in the seller's wallet until the buyer has paid in full. Needs the adapter to hold the token's agent role (ERC-3643, eWpG)."
},
{
"mode": "CUSTODY",
"default": false,
"summary": "The asset moves into the market adapter when the seller lists it. Needs the adapter to be verified or allow-listed on the token (ERC-1404, other restricted tokens, ERC-20)."
}
],
"defaults": {
"minDownpaymentBps": 500,
"maxDownpaymentBps": 9000,
"minDurationDays": 7,
"maxDurationDays": 3650,
"minInterestPeriodDays": 1,
"maxInterestPeriodDays": 366,
"maxGracePeriodDays": 30,
"fixedEnabled": true,
"derivedEnabled": true,
"sellerSetsFixedRate": true,
"fixedRateBps": 800,
"maxFixedRateBps": 2000,
"baseRateBps": 400,
"volatilityBps": 1200
},
"bounds": {
"downpaymentBps": { "min": 500, "max": 9000 },
"durationDays": { "min": 1, "max": 3650 },
"interestPeriodDays": { "min": 1, "max": 366 },
"gracePeriodDays": { "min": 0, "max": 90 },
"rateBps": { "min": 0, "max": 5000 },
"volatilityBps": { "min": 100, "max": 20000 },
"listingExpiryDays": { "max": 365 }
},
"paymentTokens": [
{ "address": "0x98aD0ca091552e23C564B41C74282e5343D03E8a", "symbol": "USDC", "name": "USD Coin (Mock)", "decimals": 6, "isDefault": true },
{ "address": "0x35661D8e31E5fEE2f8b5949562b4009A74ce31E6", "symbol": "USDT", "name": "Tether USD (Mock)", "decimals": 6, "isDefault": false },
{ "address": "0x96E3BADcC8ACb631dEa7CcF7332258cB2363DEf9", "symbol": "DAI", "name": "Dai Stablecoin (Mock)", "decimals": 18, "isDefault": false },
{ "address": "0xb2144117A024963bF7FbCAAd980602C4857fD91A", "symbol": "EURC", "name": "Euro Coin (Mock)", "decimals": 6, "isDefault": false },
{ "address": "0x375ca4cEDD54192E8258548Ae0a9de977f7951fd", "symbol": "EUROP", "name": "Europ (Mock)", "decimals": 6, "isDefault": 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.bounds are the API’s limits. Every configuration field you send and every listing term is checked against them first, then against the market’s own configuration and the contract. A configuration also needs each minimum at or below its maximum, the shortest interest period at or below the longest runtime, and at least one interest strategy enabled.
Response Fields
object
Show child attributes
Show child attributes
boolean
true. An instance where Seller Financing is not available answers 503 SELLER_FINANCING_UNAVAILABLE instead.string
null.integer
The chain your instance resolves to,
11155111 on Sepolia.string
The Seller Financing factory. Every deployment step is sent to it.
array
object
The configuration a market is deployed with for every field you omit from
config. The fields are those of config on Build Deployment.object
{ min, max } per field family, in the units of the field: downpaymentBps, durationDays, interestPeriodDays, gracePeriodDays, rateBps (every rate field), volatilityBps, and listingExpiryDays with max only.array
{ address, symbol, name, decimals, isDefault } for each payment token curated on your network. USDC is the default. A deployment can also name another payment token with 6 to 18 decimals.curl "https://api.trusset.org/seller-financing/api/markets/options" \
-H "X-API-Key: trusset_your_key_here"
const res = await fetch('https://api.trusset.org/seller-financing/api/markets/options', {
headers: { 'X-API-Key': 'trusset_your_key_here' }
});
const { data } = await res.json();
const usdc = data.paymentTokens.find((t: { isDefault: boolean }) => t.isDefault);
{
"success": true,
"data": {
"available": true,
"message": null,
"chainId": 11155111,
"factory": "0x2805394e8fCC41bB11613c95967be0104AB88b1c",
"modes": [
{
"mode": "FREEZE",
"default": true,
"summary": "The asset stays frozen in the seller's wallet until the buyer has paid in full. Needs the adapter to hold the token's agent role (ERC-3643, eWpG)."
},
{
"mode": "CUSTODY",
"default": false,
"summary": "The asset moves into the market adapter when the seller lists it. Needs the adapter to be verified or allow-listed on the token (ERC-1404, other restricted tokens, ERC-20)."
}
],
"defaults": {
"minDownpaymentBps": 500,
"maxDownpaymentBps": 9000,
"minDurationDays": 7,
"maxDurationDays": 3650,
"minInterestPeriodDays": 1,
"maxInterestPeriodDays": 366,
"maxGracePeriodDays": 30,
"fixedEnabled": true,
"derivedEnabled": true,
"sellerSetsFixedRate": true,
"fixedRateBps": 800,
"maxFixedRateBps": 2000,
"baseRateBps": 400,
"volatilityBps": 1200
},
"bounds": {
"downpaymentBps": { "min": 500, "max": 9000 },
"durationDays": { "min": 1, "max": 3650 },
"interestPeriodDays": { "min": 1, "max": 366 },
"gracePeriodDays": { "min": 0, "max": 90 },
"rateBps": { "min": 0, "max": 5000 },
"volatilityBps": { "min": 100, "max": 20000 },
"listingExpiryDays": { "max": 365 }
},
"paymentTokens": [
{ "address": "0x98aD0ca091552e23C564B41C74282e5343D03E8a", "symbol": "USDC", "name": "USD Coin (Mock)", "decimals": 6, "isDefault": true },
{ "address": "0x35661D8e31E5fEE2f8b5949562b4009A74ce31E6", "symbol": "USDT", "name": "Tether USD (Mock)", "decimals": 6, "isDefault": false },
{ "address": "0x96E3BADcC8ACb631dEa7CcF7332258cB2363DEf9", "symbol": "DAI", "name": "Dai Stablecoin (Mock)", "decimals": 18, "isDefault": false },
{ "address": "0xb2144117A024963bF7FbCAAd980602C4857fD91A", "symbol": "EURC", "name": "Euro Coin (Mock)", "decimals": 6, "isDefault": false },
{ "address": "0x375ca4cEDD54192E8258548Ae0a9de977f7951fd", "symbol": "EUROP", "name": "Europ (Mock)", "decimals": 6, "isDefault": 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 |
|---|---|---|
SELLER_FINANCING_UNAVAILABLE | 503 | The instance is a PRODUCTION instance or not on Ethereum |
OPTIONS_READ_FAILED | 500 | Unexpected failure. Retry, or contact support with the request ID |
⌘I
curl "https://api.trusset.org/seller-financing/api/markets/options" \
-H "X-API-Key: trusset_your_key_here"
const res = await fetch('https://api.trusset.org/seller-financing/api/markets/options', {
headers: { 'X-API-Key': 'trusset_your_key_here' }
});
const { data } = await res.json();
const usdc = data.paymentTokens.find((t: { isDefault: boolean }) => t.isDefault);
{
"success": true,
"data": {
"available": true,
"message": null,
"chainId": 11155111,
"factory": "0x2805394e8fCC41bB11613c95967be0104AB88b1c",
"modes": [
{
"mode": "FREEZE",
"default": true,
"summary": "The asset stays frozen in the seller's wallet until the buyer has paid in full. Needs the adapter to hold the token's agent role (ERC-3643, eWpG)."
},
{
"mode": "CUSTODY",
"default": false,
"summary": "The asset moves into the market adapter when the seller lists it. Needs the adapter to be verified or allow-listed on the token (ERC-1404, other restricted tokens, ERC-20)."
}
],
"defaults": {
"minDownpaymentBps": 500,
"maxDownpaymentBps": 9000,
"minDurationDays": 7,
"maxDurationDays": 3650,
"minInterestPeriodDays": 1,
"maxInterestPeriodDays": 366,
"maxGracePeriodDays": 30,
"fixedEnabled": true,
"derivedEnabled": true,
"sellerSetsFixedRate": true,
"fixedRateBps": 800,
"maxFixedRateBps": 2000,
"baseRateBps": 400,
"volatilityBps": 1200
},
"bounds": {
"downpaymentBps": { "min": 500, "max": 9000 },
"durationDays": { "min": 1, "max": 3650 },
"interestPeriodDays": { "min": 1, "max": 366 },
"gracePeriodDays": { "min": 0, "max": 90 },
"rateBps": { "min": 0, "max": 5000 },
"volatilityBps": { "min": 100, "max": 20000 },
"listingExpiryDays": { "max": 365 }
},
"paymentTokens": [
{ "address": "0x98aD0ca091552e23C564B41C74282e5343D03E8a", "symbol": "USDC", "name": "USD Coin (Mock)", "decimals": 6, "isDefault": true },
{ "address": "0x35661D8e31E5fEE2f8b5949562b4009A74ce31E6", "symbol": "USDT", "name": "Tether USD (Mock)", "decimals": 6, "isDefault": false },
{ "address": "0x96E3BADcC8ACb631dEa7CcF7332258cB2363DEf9", "symbol": "DAI", "name": "Dai Stablecoin (Mock)", "decimals": 18, "isDefault": false },
{ "address": "0xb2144117A024963bF7FbCAAd980602C4857fD91A", "symbol": "EURC", "name": "Euro Coin (Mock)", "decimals": 6, "isDefault": false },
{ "address": "0x375ca4cEDD54192E8258548Ae0a9de977f7951fd", "symbol": "EUROP", "name": "Europ (Mock)", "decimals": 6, "isDefault": false }
]
},
"error": null,
"metadata": {
"timestamp": "2026-10-19T09:12:04.318Z",
"requestId": "3f7c2a91-6d84-4b0e-9a15-c2e8f4d7b603",
"instanceId": "inst_abc123"
}
}
