Finance Loan
by SiteCheck in Markets & finance
Loan and investment calculator in exact cents, no outside source. mode=annuity: monthly payment, total interest and the full amortisation schedule (up to 600 months). mode=compound: future value of an initial sum plus monthly contributions. mode=npv or irr: discount or internal rate of return of a list of cashflows (up to 200, the first at time 0). Rates are percentages from 0 to 100 a year (per period for npv and irr); terms up to 50 years.
https://api.sitecheck-api.workers.dev/api/finance/loan- Price
- $0.001
- per call in USDC
- Uptime
- 100%
- last 30 days
- Response time
- 40 ms
- 53 ms slowest 5%
- Last check
- Passed
- 4 h ago, next any minute now
Reliability
Status and outage history · Atom feed · Watch with other listings
How to call it
GET https://api.sitecheck-api.workers.dev/api/finance/loan
Each call costs $0.001 in USDC on Base, paid with the request over x402.
Run a free test callOne unpaid request, the way an agent sends it. You see the payment challenge it gets back. Nothing is charged.
Example request
From the listing.
GET https://api.sitecheck-api.workers.dev/api/finance/loan?mode=annuity&principal=250000&rate=6.5&termYears=30Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
cashflows | string | No | Comma-separated cashflows for npv and irr, e.g. -1000,300,400,500 (first at time 0) |
contribution | string | No | Monthly contribution for compound, up to two decimals (optional) |
mode | string | Yes | annuity (default), compound, npv or irr |
principal | string | No | Loan amount (annuity) or starting sum (compound), up to two decimals (optional for compound) |
rate | string | No | Annual rate in percent, 0 to 100 (annuity, compound); rate per period in percent for npv (-99 to 1000) |
termMonths | string | No | Term in months, 1 to 600, instead of termYears |
termYears | string | No | Term in years, up to 50 (annuity, compound) |
Example response
The provider's example. We can't check it without paying.
Example response, 36 lines
{
"checkedAt": "2026-10-15T13:40:01.487Z",
"disclaimer": "Information only, not financial advice.",
"lastPayment": 1580.55,
"mode": "annuity",
"monthlyPayment": 1580.17,
"months": 360,
"principal": 250000,
"rate": 6.5,
"schedule": [
{
"balance": 249774,
"interest": 1354.17,
"month": 1,
"payment": 1580.17,
"principal": 226
},
{
"balance": 249546.77,
"interest": 1352.94,
"month": 2,
"payment": 1580.17,
"principal": 227.23
},
{
"balance": 249318.31,
"interest": 1351.71,
"month": 3,
"payment": 1580.17,
"principal": 228.46
}
],
"source": "Computed here in pure code (annuity, monthly compounding, NPV and IRR formulas); no outside source",
"totalInterest": 318861.58,
"totalPaid": 568861.58
}Call it from code
The curl command shows the payment challenge. The JavaScript and Python versions pay and call, and never pay more than $0.001.
curl: see the payment challenge
# bash or zsh: see the payment challenge. Nothing is charged.
curl -sS -g -i 'https://api.sitecheck-api.workers.dev/api/finance/loan?mode=annuity&principal=250000&rate=6.5&termYears=30'
# x402 v2 sends the challenge base64-encoded in the PAYMENT-REQUIRED header (v1 sends it in the body).
# To read the header:
curl -sS -g -o /dev/null -D - 'https://api.sitecheck-api.workers.dev/api/finance/loan?mode=annuity&principal=250000&rate=6.5&termYears=30' \
| grep -i '^payment-required:' | cut -d' ' -f2 | tr -d '\r' | base64 --decodeJavaScript: pay and call
// npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPayment, x402Client } from "@x402/fetch";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
// Pays at most $0.001 per call.
const client = new x402Client().setSpendControls({ maxAmountPerPayment: "$0.001" });
registerExactEvmScheme(client, { signer: privateKeyToAccount(process.env.EVM_PRIVATE_KEY) });
const pay = wrapFetchWithPayment(fetch, client);
// Not sure it's safe to pay? ToolVet checks it first for $0.005. Pay for that from a separate
// client: this one is capped at $0.001 per payment. GET https://toolvet.app/api/v1/check?url=https%3A%2F%2Fapi.sitecheck-api.workers.dev%2Fapi%2Ffinance%2Floan
const res = await pay("https://api.sitecheck-api.workers.dev/api/finance/loan?mode=annuity&principal=250000&rate=6.5&termYears=30");
console.log(res.status, await res.text());Python: pay and call
# pip install "x402[requests,evm]"
import os
from eth_account import Account
from x402 import x402ClientSync
from x402.http.clients import x402_requests
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact.register import register_exact_evm_client
# Pays at most $0.001 per call.
client = x402ClientSync().set_spend_controls({"max_amount_per_payment": "$0.001"})
register_exact_evm_client(client, EthAccountSigner(Account.from_key(os.environ["EVM_PRIVATE_KEY"])))
with x402_requests(client) as session:
res = session.get("https://api.sitecheck-api.workers.dev/api/finance/loan?mode=annuity&principal=250000&rate=6.5&termYears=30")
print(res.status_code, res.text)Security scan
No findings
We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.
Recent checks
| When | Result | HTTP | Time | Price |
|---|---|---|---|---|
| 4 h ago | Passed | 402 | 53 ms | $0.001 |
| 8 h ago | Passed | 402 | 40 ms | $0.001 |