Financial Intelligence API
50+ financial calculators · AML sanctions screening · OWASP-compliant
https://api.stackapi.dev/api/v1POSTapplication/jsonJWT · RapidAPI · APILayer100/min (Free) · 1000/min (Paid)99.9% uptimeAuthentication
FinGuard supports three authentication methods. Use the one that matches your deployment.
# RapidAPI (automatic proxy) X-RapidAPI-Proxy-Secret: your-secret # APILayer X-Apilayer-Key: your-key # Direct (JWT Bearer) Authorization: Bearer your-jwt-token
Endpoints
/api/v1/calculators/mortgageFull mortgage amortization schedule/api/v1/calculators/compound-interestInvestment growth with compounding/api/v1/calculators/roiTotal and annualized ROI/api/v1/calculators/crypto-profitCrypto trade P&L with fees/api/v1/calculators/loan-comparisonCompare two loans side-by-side/api/v1/calculators/savings-goalMonthly savings needed to reach a target/api/v1/calculators/currency9-currency converter/api/v1/calculators/retirementFull retirement projection/api/v1/calculators/dtiDebt-to-income ratio/api/v1/calculators/apr-apyAPR to APY conversion/api/v1/calculators/simple-interestSimple interest calculation/api/v1/calculators/expense-ratioFee impact analysis over time/api/v1/screening/screenSingle entity AML screening/api/v1/screening/batch-screenBatch AML screening (up to 100)/api/v1/compliance/ibanIBAN validation + FATF country risk/api/v1/compliance/vatEU VAT number validation (25 countries)/api/v1/compliance/pepPEP screening — Politically Exposed Persons/api/v1/compliance/pep/batchBatch PEP screening (up to 500 entities)Mortgage Calculator
Calculate monthly payments, total interest, and full amortization schedule (30-year, 15-year, custom).
POST /api/v1/calculators/mortgage
{
"loanAmount": 350000,
"interestRate": 6.5,
"loanTermYears": 30,
"downPayment": 70000,
"annualTax": 2400,
"annualInsurance": 1200
}View Response Schema
{
"success": true,
"data": {
"monthlyPayment": 1879.88,
"totalInterest": 306764.62,
"totalCost": 586764.62,
"payoffDate": "2055-05",
"amortizationSchedule": [
{ "month": 1, "payment": 1879.88, "principal": 329.55, "interest": 1550.33, "balance": 349670.45 },
...
]
}
}Compound Interest Calculator
Project investment growth with regular contributions and configurable compounding frequency (daily, monthly, yearly).
POST /api/v1/calculators/compound-interest
{
"principal": 10000,
"monthlyContribution": 500,
"annualRate": 8,
"years": 20,
"compoundFrequency": "monthly"
}View Response Schema
{
"success": true,
"data": {
"finalBalance": 314870.22,
"totalContributions": 130000,
"totalInterest": 184870.22,
"yearlyBreakdown": [
{ "year": 1, "balance": 16523.45, "contributions": 16000, "interest": 523.45 },
...
]
}
}ROI Calculator
Return on Investment — total return, annualized return, and gain/loss amount.
POST /api/v1/calculators/roi
{
"initialInvestment": 50000,
"finalValue": 85000,
"years": 5
}View Response Schema
{
"success": true,
"data": {
"totalReturn": 70,
"annualizedReturn": 11.19,
"gain": 35000
}
}Crypto Profit Calculator
Calculate crypto trade profit or loss including buy and sell fees.
POST /api/v1/calculators/crypto-profit
{
"buyPrice": 42000,
"sellPrice": 58000,
"quantity": 1.5,
"buyFeePercent": 0.1,
"sellFeePercent": 0.1
}View Response Schema
{
"success": true,
"data": {
"totalInvested": 63063,
"totalReturned": 86913,
"grossProfit": 24000,
"netProfit": 23850,
"roiPercent": 37.81
}
}Loan Comparison Calculator
Compare two loans side-by-side with full amortization for each.
POST /api/v1/calculators/loan-comparison
{
"loanA": { "name": "Bank A", "loanAmount": 300000, "interestRate": 6.5, "loanTermYears": 30 },
"loanB": { "name": "Bank B", "loanAmount": 300000, "interestRate": 5.8, "loanTermYears": 25 }
}View Response Schema
{
"success": true,
"data": {
"loanA": { "monthlyPayment": 1896.20, "totalInterest": 382633.47, "totalCost": 682633.47 },
"loanB": { "monthlyPayment": 1898.53, "totalInterest": 269559.58, "totalCost": 569559.58 },
"difference": { "monthlyPayment": -2.33, "totalInterest": 113073.89, "totalCost": 113073.89 }
}
}Savings Goal Calculator
Determine the monthly contribution needed to reach your savings target.
POST /api/v1/calculators/savings-goal
{
"targetAmount": 100000,
"currentSavings": 20000,
"annualRate": 5,
"years": 10
}View Response Schema
{
"success": true,
"data": {
"monthlyContribution": 515.62,
"totalContributions": 81874.40,
"totalInterestEarned": 18125.60
}
}Currency Converter
Convert between 9 major currencies (USD, EUR, GBP, JPY, CHF, CAD, AUD, CNY, BTC).
POST /api/v1/calculators/currency
{
"amount": 1000,
"from": "USD",
"to": "EUR"
}View Response Schema
{
"success": true,
"data": {
"from": "USD",
"to": "EUR",
"amount": 1000,
"result": 925.50,
"rate": 0.9255,
"lastUpdated": "2025-05-12T12:00:00Z"
}
}Retirement Projection
Full retirement model with working years, growth, 4% withdrawal rule, and inflation adjustment.
POST /api/v1/calculators/retirement
{
"currentAge": 30,
"retirementAge": 65,
"currentSavings": 50000,
"monthlyContribution": 1000,
"annualReturn": 7,
"lifeExpectancy": 85,
"expectedInflation": 2.5
}View Response Schema
{
"success": true,
"data": {
"retirementAge": 65,
"balanceAtRetirement": 1892043.50,
"monthlyIncome": 6306.81,
"inflationAdjustedIncome": 2867.34,
"savingsAdequacy": "on_track"
}
}Debt-to-Income (DTI) Calculator
Calculate your DTI ratio and see lender qualification status.
POST /api/v1/calculators/dti
{
"monthlyDebts": 1800,
"grossMonthlyIncome": 6000
}View Response Schema
{
"success": true,
"data": {
"dtiRatio": 30,
"qualificationStatus": "good",
"breakdown": {
"monthlyDebts": 1800,
"grossIncome": 6000,
"dtiPercent": 30
}
}
}APR / APY Converter
Convert between APR and APY for any compounding frequency.
POST /api/v1/calculators/apr-apy
{
"rate": 12,
"compoundingFrequency": "monthly",
"conversion": "apr-to-apy"
}View Response Schema
{
"success": true,
"data": {
"inputRate": 12,
"inputType": "APR",
"outputRate": 12.68,
"outputType": "APY",
"effectiveAnnualRate": 12.68
}
}Simple Interest Calculator
Basic interest calculation using I = P × r × t formula.
POST /api/v1/calculators/simple-interest
{
"principal": 10000,
"rate": 5,
"timeYears": 3
}View Response Schema
{
"success": true,
"data": {
"interest": 1500,
"totalAmount": 11500,
"formula": "I = P × r × t"
}
}Expense Ratio Impact Calculator
Visualize how investment management fees erode your returns over time.
POST /api/v1/calculators/expense-ratio
{
"initialInvestment": 100000,
"monthlyContribution": 500,
"annualReturn": 7,
"expenseRatio": 1.5,
"years": 30
}View Response Schema
{
"success": true,
"data": {
"grossBalance": 867654.32,
"netBalance": 689123.45,
"feesPaid": 178530.87,
"feeImpact": 20.57,
"yearlyBreakdown": [
{ "year": 1, "gross": 112345, "net": 111523, "fees": 822 },
...
]
}
}AML Screening — Single Entity
Screen a name against OFAC SDN, EU Consolidated, and UN Sanctions lists with configurable fuzzy matching.
POST /api/v1/screening/screen
{
"name": "Huawei Technologies",
"type": "company", // "individual" | "company"
"matchThreshold": 70 // 0-100, higher = stricter
}View Response Schema
{
"success": true,
"data": {
"matches": [
{
"name": "HUAWEI TECHNOLOGIES CO. LTD.",
"list": "OFAC SDN",
"score": 95.2,
"type": "entity"
}
],
"summary": {
"totalScanned": 15000,
"matchesFound": 1,
"thresholdUsed": 70
}
}
}AML Screening — Batch
Screen up to 100 entities in a single request. Ideal for bulk onboarding and periodic reviews.
POST /api/v1/screening/batch-screen
{
"entities": [
{ "name": "Entity A", "type": "company" },
{ "name": "Entity B", "type": "individual" }
],
"matchThreshold": 80
}IBAN Validation & Country Risk
Validates an IBAN using the MOD-97 checksum algorithm. Returns bank code, branch code, account number, and a FATF-based country risk score. Available on all plans.
POST /api/v1/compliance/iban
{
"iban": "FR7630006000011234567890189"
}View Response Schema
{
"success": true,
"data": {
"iban": "FR7630006000011234567890189",
"valid": true,
"countryCode": "FR",
"countryName": "France",
"checkDigits": "76",
"bankCode": "30006",
"branchCode": "00001",
"accountNumber": "1234567890189",
"countryRisk": "LOW", // LOW | MEDIUM | HIGH | VERY_HIGH
"fatfStatus": "compliant", // compliant | grey_list | black_list
"errors": []
}
}EU VAT Number Validation
PRO+Validates a European VAT number format against country-specific patterns for all 25 EU member states. Includes algorithmic checksum verification for Germany, Belgium, and the Netherlands.
POST /api/v1/compliance/vat
{
"vatNumber": "FR83404833048"
}View Response Schema
{
"success": true,
"data": {
"vatNumber": "FR83404833048",
"countryCode": "FR",
"countryName": "France",
"number": "83404833048",
"valid": true,
"formatValid": true,
"errors": []
}
}PEP Screening
PRO+Screens an individual against a curated dataset of Politically Exposed Persons using fuzzy name matching (Levenshtein distance). Covers heads of state, senior government officials, central bank governors, military leadership, and their associates. Rate limit: 10 req/min.
POST /api/v1/compliance/pep
{
"name": "Vladimir Putin",
"matchThreshold": 75 // 50-100, default 75
}View Response Schema
{
"success": true,
"data": {
"entity": "Vladimir Putin",
"isPEP": true,
"riskLevel": "CRITICAL", // LOW | MEDIUM | HIGH | CRITICAL
"confidence": 97,
"matches": [
{
"matchedName": "PUTIN VLADIMIR VLADIMIROVICH",
"confidence": 97,
"category": "HEAD_OF_STATE",
"country": "RU",
"position": "President of the Russian Federation",
"activeFrom": "2000"
}
],
"screenedAt": "2025-01-01T00:00:00.000Z"
}
}PEP Batch Screening
ULTRA+Screen up to 500 individuals in a single request. Each entity is independently matched. Ideal for bulk KYC onboarding and periodic client rescreening. Rate limit: 10 req/min.
POST /api/v1/compliance/pep/batch
{
"entities": [
{ "name": "Emmanuel Macron", "matchThreshold": 80 },
{ "name": "Christine Lagarde", "matchThreshold": 75 },
{ "name": "John Smith" }
]
}View Response Schema
{
"success": true,
"data": {
"results": [
{ "entity": "Emmanuel Macron", "isPEP": true, "riskLevel": "CRITICAL", "confidence": 99, "matches": [...] },
{ "entity": "Christine Lagarde", "isPEP": true, "riskLevel": "CRITICAL", "confidence": 96, "matches": [...] },
{ "entity": "John Smith", "isPEP": false, "riskLevel": "LOW", "confidence": 0, "matches": [] }
],
"totalScreened": 3,
"totalMatches": 2,
"completedAt": "2025-01-01T00:00:00.000Z"
}
}Error Handling
All errors follow a consistent JSON envelope:
{
"success": false,
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Too many requests. Try again in 45 seconds."
}
}