FinGuard

Financial Intelligence API

50+ financial calculators · AML sanctions screening · OWASP-compliant

Base URLhttps://api.stackapi.dev/api/v1
MethodsPOST
Content-Typeapplication/json
AuthJWT · RapidAPI · APILayer
Rate Limit100/min (Free) · 1000/min (Paid)
SLA99.9% uptime

Authentication

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

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."
  }
}
400Bad Request — invalid input
401Unauthorized — missing/invalid API key
429Rate Limit Exceeded
500Internal Server Error