FinGoal website screenshot

FinGoal

FinGoal provides financial data insights for banks, credit unions, and fintechs. Its Insights API enriches raw bank and card transaction data with clean merchant names, categorization, and behavioral "Persona Tags" that power personalized recommendations, targeted offers, and better banking features. The API is batch-oriented: developers submit transactions, receive a batch_request_id, and collect enriched results by polling or via ENRICHMENT_DATA and USER_TAGS_DATA webhooks. FinGoal also offers Link Money for account aggregation and verification across 17,000+ financial institutions. Authentication uses a JWT minted from client_id/client_secret; developer credentials are issued on request. FinGoal is SOC 2 Type II and GDPR compliant.

FinGoal publishes 7 APIs on the APIs.io network, including Enrichment API, User Tagging API, Webhook Configurations API, and 4 more. Tagged areas include Financial-Services, Fintech, Transaction Enrichment, Data Enrichment, and Personal Financial Management.

The FinGoal catalog on APIs.io includes 2 event-driven AsyncAPI specifications.

FinGoal’s developer surface includes documentation, API reference, getting-started guide, signup flow, engineering blog, authentication, sandbox, and 24 more developer resources.

55.4/100 strong ▬ flat Agent 34/100 agent ready saas Full breakdown ↓
scored 2026-09-06 · rubric v0.19.0
AccessApproval
3 APIs
Financial-ServicesFintechTransaction EnrichmentData EnrichmentPersonal Financial ManagementBankingCategorizationWebhook

Kin Score

Kin Score Kin Score How this is scored →
scored 2026-09-06 · rubric v0.19.0
Regulatory Posture applies to this provider. Its tags matched the Banking & Open Finance regime, so Regulatory Posture carries 15 points of the composite. If this regime is wrong for your business, say so on your provider repo — the applicability map is public and we will correct it.
The six quality facets above are damped to 85 points between them, because the conditional facet above carries the other 15. That is why each facet's contribution is shown against a damped maximum: raising a quality facet moves the composite by 85% of its nominal weight, not 100%. The full arithmetic is at apis.io/rating/.
Improve this rating by publishing the missing artifacts — every area above can be raised, and the full rubric is at apis.io/rating/. Every facet and dimension name above is a link: it opens that measurement's own page — what it means, the exact checks that feed it, how the whole catalog distributes on it, and the providers at the top of it. This rating is computed from github.com/api-evangelist/fingoal: open an issue to ask a question, or submit a pull request to add artifacts. Submit an artifact on GitHub — free → Manage your own listing — the Influence plan, $499/mo →

APIs 7

Individual APIs this provider publishes, each with its own machine-readable definition.

FinGoal Enrichment API

The Insights API's transaction enrichment endpoints enable developers to clean and enhance their transaction data. This process includes standardizing merchant names, categorizi...

FinGoal User Tagging API

markdown/tagging.md

FinGoal Webhook Configurations API

Manage webhook callback URLs for your client. Supports default and tenant-specific configurations per webhook type.

FinGoal Client Management API

There are three kinds of people who interact with Link Money: - **Users** are the people who use the Link Money application. They are the people who log in, view their accounts,...

FinGoal Fastlink API

The Link Money API permits end users to link and get data from their bank accounts. But of course, that requires a front-end interface. That's where the Fastlink comes in. The F...

FinGoal OAUTH API

The Oauth API from FinGoal — 1 operation(s) for oauth.

FinGoal Webhooks API

Webhook payload schemas for all webhook types. Configure which webhooks you receive using the Webhook Configurations endpoints. **Available Webhook Types:** - `ENRICHMENT_DATA`:...

Scroll for all 7

Open Collections 4

Open, tool-agnostic API collections (OpenAPI-derived and Bruno).

API Collection

OPEN COLLECTION

Insights Enrichment API

OPEN COLLECTION

Pricing Plans 1

Published pricing tiers and plan structures.

Fingoal Plans Pricing

0 plans

PLANS

Rate Limits 1

Documented rate limits and quota policies.

Fingoal Rate Limits

4 limits

RATE LIMITS

Event Specifications 2

AsyncAPI definitions for this provider's event-driven and streaming APIs.

Security Posture 3

Authentication, domain security, vulnerability disclosure, and trust-center signals.

Fingoal Authentication

oauth2 · 2 schemes

SECURITY

Fingoal Domain Security

TLSv1.3 · HSTS · DMARC

SECURITY

Fingoal Trust Center

SOC 2 Type II, GDPR

SECURITY

Scopes 1

OAuth scopes governing access to this provider's APIs.

Fingoal Scopes

3 scopes · clientCredentials

3 scopes

SCOPES

Resources

Get Started 4

Portal, sign-up, and the first successful call

Documentation 2

Reference material describing how the API behaves

Agent Surfaces 3

MCP servers, agent skills, and machine-readable catalogs

Design & Contract 7

Pagination, idempotency, versioning, errors, and events

Scroll for all 7

Build 2

SDKs, sample code, and the tooling you integrate with

Access & Security 5

Authentication, authorization, and security posture

Operate 2

Status, limits, changes, and where to get help

Commercial 2

Pricing, plans, and the legal terms of use

Company 2

The organization behind the API

Other 2

Properties that don't map to a standard resource type

Source (apis.yml)

apis.yml Raw ↑
aid: fingoal
name: FinGoal
description: 'FinGoal provides financial data insights for banks, credit unions, and fintechs. Its Insights API enriches raw
  bank and card transaction data with clean merchant names, categorization, and behavioral "Persona Tags" that power personalized
  recommendations, targeted offers, and better banking features. The API is batch-oriented: developers submit transactions,
  receive a batch_request_id, and collect enriched results by polling or via ENRICHMENT_DATA and USER_TAGS_DATA webhooks.
  FinGoal also offers Link Money for account aggregation and verification across 17,000+ financial institutions. Authentication
  uses a JWT minted from client_id/client_secret; developer credentials are issued on request. FinGoal is SOC 2 Type II and
  GDPR compliant.'
deliveryModel:
  model: saas
  open_source: false
  commercial: true
  callable_host: true
  label: Hosted service · you call their endpoint
  confidence: high
  source:
  - openapi
  - pricing
  generated: '2026-08-28'
  method: derived
accessModel:
  pricing: unknown
  onboarding: approval
  trial: false
  try_now: false
  public: false
  label: Requires approval
  confidence: medium
  source:
  - plans
  - authentication
  - rate-limits
  - security
  - sandbox
  generated: '2026-09-03'
  method: derived
image: https://cdn.prod.website-files.com/61d89a2cbc85dcbc83bb0f7c/637402586ca49d150ef97dc2_Website%20Open%20Graph%20%20Thumbnail.png
url: https://raw.githubusercontent.com/api-evangelist/fingoal/refs/heads/main/apis.yml
x-type: company
x-source: vc-portfolio
x-backed-by:
- techstars
specificationVersion: '0.23'
created: '2026-07-17'
modified: '2026-08-14'
tags:
- Financial-Services
- Fintech
- Transaction Enrichment
- Data Enrichment
- Personal Financial Management
- Banking
- Categorization
- Webhook
tags_raw:
- Financial Services
- Fintech
- Transaction Enrichment
- Data Enrichment
- Personal Financial Management
- Banking
- Categorization
- Webhooks
apis:
- aid: fingoal:fingoal-enrichment-api
  name: FinGoal Enrichment API
  description: "The Insights API's transaction enrichment endpoints enable developers to clean and enhance their transaction\
    \ data. This process includes standardizing merchant names, categorizing transactions, and adding additional metadata.\
    \ It also supports transaction-level tagging. Transactions submitted to the enrichment endpoints contribute to the Insights\
    \ API's user tagging capabilities. \n\nThe Insights API offers both synchronous and asynchronous flows. The synchronous\
    \ flow is a direct request-response model intended for testing and development purposes only. All production requests\
    \ should use the asynchronous historical and streaming transaction enrichment endpoints.\n\n<a href=\"https://docs.google.com/spreadsheets/d/1XL649eKzMZ21WGWdcUE4cvKbKb6oXzfdBv5Ob8qPpbM/edit?usp=sharing\"\
    \ target=\"blank\">View Full List of FinGoal Categories</a>\n\n<a href=\"https://fingoal.com/tags-list\" target=\"blank\"\
    >View Full List of FinGoal Tags</a>\n\n\n## Enrichment Quickstart\nThis quickstart requires a JWT, which can be generated\
    \ following the top-level authentication quickstart. Ensure you have a valid JWT before proceeding.\n\n### 1. Prepare\
    \ the Request Body\nThe request body should be a JSON object with a single parameter, `transactions`, which must be an\
    \ array. Each transaction must include the following fields:\n- `uid`: A unique user identifier.\n- `amountnum`: The transaction\
    \ amount.\n- `date`: The transaction date.\n- `original_description`: The original transaction description.\n- `transactionid`:\
    \ The unique transaction identifier.\n- `accountType`: The account type.\n- `settlement`: The settlement type.\n\n```json\n\
    {\n  \"transactions\": [\n    {\n      \"uid\": \"16432789fdsa78\",\n      \"accountid\": \"1615\",\n      \"amountnum\"\
    : 12.41,\n      \"date\": \"2024-05-11\",\n      \"original_description\": \"T0064 TARGET STORE\",\n      \"transactionid\"\
    : \"988cee06-5d36-11ec-b00b-bc8d8f2303a12733\",\n      \"accountType\" : \"creditCard\",\n      \"settlement\": \"debit\"\
    \n    }\n  ]\n}\n```\n### 2. Make a POST Request\nMake a POST request to the Insights API cleanup endpoint using the prepared\
    \ JSON object. Include the JWT in the `Authorization` header.\n```js\n  const headers = new Headers();\n  headers.append(\"\
    Authorization\", \"Bearer {YOUR_TOKEN}\");\n  headers.append(\"Content-Type\", \"application/json\");\n\n  const body\
    \ = JSON.stringify({\n    \"transactions\": [\n      {\n        \"uid\": \"16432789fdsa78\",\n        \"accountid\": \"\
    1615\",\n        \"amountnum\": 12.41,\n        \"date\": \"2024-05-11\",\n        \"original_description\": \"T0064 TARGET\
    \ STORE\",\n        \"transactionid\": \"988cee06-5d36-11ec-b00b-bc8d8f2303a12733\",\n        \"accountType\" : \"creditCard\"\
    ,\n        \"settlement\": \"debit\"\n      }\n    ]\n  });\n\n  const requestOptions = {\n    method: 'POST',\n    redirect:\
    \ 'follow'\n    headers,\n    body,\n  };\n\n  try {\n    const response = await fetch(\"https://findmoney-dev.fingoal.com/v3/cleanup\"\
    , requestOptions);\n    const data = response.json();\n    console.log(data);\n  } catch(error) {\n    console.log('ERROR:',\
    \ error);\n  }\n```\nThe JavaScript code above uses the `fetch` API to request transaction enrichment. If the request\
    \ succeeds, it logs the response body. If an error occurs, it logs the error.\n### 3. Extract the Batch Request ID from\
    \ a Successful Response\nIf the request is successful, the response body will contain a JSON object with a single parameter,\
    \ `status`. The `status` object has the following structure:\n- `transactions_received`: Whether or not the transactions\
    \ were successfully enqueued for enrichment.\n- `transactions_validated`: Whether or not the transactions were successfully\
    \ validated.\n- `processing`: Whether or not the transactions are currently being processed.\n- `num_transactions_processing`:\
    \ The number of transactions that are currently being processed.\n- `batch_request_id`: The unique identifier for the\
    \ batch request.\n\n```json\n{\n  \"status\": {\n    \"transactions_received\": true,\n    \"transactions_validated\"\
    : true,\n    \"processing\": true,\n    \"num_transactions_processing\": 1,\n    \"batch_request_id\": \"988cee06-5d36-11ec-b00b-bc8d8f2303a12733\"\
    \n  }\n}\n```\nThe `batch_request_id` is a unique identifier for the batch request. You will use this identifier to retrieve\
    \ the enriched transactions. \n### 4. Listen for the Enrichment Completion Event \nTo receive a webhook notification for\
    \ a completed enrichment batch, you must submit a webhook URL. Use the FinGoal support email (support@fingoal.com) to\
    \ submit a webhook URL for registry. Once the URL is registered, you will automatically receive all future enrichment\
    \ completion webhooks. \n\nWebhook notifications are sent as HTTP POST requests to the registered URL. The webhook URL\
    \ must be publicly accessible and support HTTPS connections. The Insights API cannot send webhooks to a non-HTTPS URL.\
    \ \n\nThe webhook payload contains a JSON object with the following structure: \n- `batch_request_id`: The unique identifier\
    \ for the batch request.\n\nThe `batch_request_id` corresponds to the `batch_request_id` returned in the initial enrichment\
    \ request. \n```json\n{\n  \"batch_request_id\": \"988cee06-5d36-11ec-b00b-bc8d8f2303a12733\"\n}\n```\n#### Verifying\
    \ the Enrichment Webhook \nEvery enrichment complete webhook includes an `X-Webhook-Verification` header. The header contains\
    \ a SHA-256 HMAC signature of the webhook payload. To verify the webhook, you must generate a SHA-256 HMAC signature using\
    \ the webhook payload and your Insights API secret key. If the generated signature matches the signature in the `X-Webhook-Verification`\
    \ header, the webhook is valid. If not, the webhook should be discarded. \n\nThe following snippet demonstrates how to\
    \ verify the webhook signature using Node.js with the `crypto` and `express` libraries.\n```js\nconst crypto = require('crypto');\n\
    const express = require('express');\nconst app = express();\n\napp.use(express.json());\napp.post('/webhook-receiver',\
    \ (req, res) => {\n  const { headers, body } = req;\n  const { 'x-webhook-verification': signature } = headers;\n  if\
    \ (!signature) {\n    res.status(400).send('Reject the webhook if no verification header is present.');\n    return;\n\
    \  }\n\n  const secret = 'YOUR_CLIENT_SECRET';\n  const payload = JSON.stringify(body);\n  const hmac = crypto.createHmac('sha256',\
    \ secret);\n  const digest = hmac.update(payload).digest('hex');\n\n  if (digest === signature) {\n    res.status(200).send('The\
    \ webhook is verified. It is safe to process the payload.'); \n  } else {\n    res.status(400).send('The Webhook verification\
    \ is incorrect for the payload. Reject the webhook.');\n  }\n});\n```\n\n### 5. Retrieve the Enriched Transactions\nWith\
    \ the `batch_request_id`, submit a GET request to the Insights API enrichment retrieval endpoint. Include the JWT in the\
    \ `Authorization` header. \n```js\n  const headers = new Headers();\n  headers.append(\"Authorization\", \"Bearer {YOUR_TOKEN}\"\
    );\n\n  const requestOptions = {\n    method: 'GET',\n    redirect: 'follow',\n    headers,\n  };\n\n  try {\n    const\
    \ response = await fetch(\"https://findmoney-dev.fingoal.com/v3/cleanup/{batch_request_id}\", requestOptions);\n    const\
    \ data = response.json();\n    console.log(data);\n  } catch(error) {\n    console.log('ERROR:', error);\n  }\n```\nThe\
    \ JavaScript code above uses the `fetch` API to request the enriched transactions. If the request succeeds, it logs the\
    \ response body. If an error occurs, it logs the error.\n### Successful Response\nIf the request is successful, the response\
    \ body will contain a JSON object a single parameter, `enrichedTransactions`. The `enrichedTransactions` array will contain\
    \ all available transaction-level enrichment for the data in this batch. \n\n### Best Practices \n- Group transactions\
    \ by `uid` for optimal performance. \n- Provide as much information as possible in the request body to improve enrichment\
    \ quality.\n- Use unique `uid` and `transactionid` values for each user and transaction. These identifiers may need to\
    \ be cross-referenced with your system's data in the future.\n- Avoid using personally identifiable information (PII)\
    \ in the `uid` or `transactionid` fields. We recommend using a UUID or similar anonymous identifier instead."
  humanURL: https://docs.fingoal.dev/
  baseURL: https://findmoney.fingoal.com/v3
  tags:
  - Enrichment
  properties:
  - type: OpenAPI
    url: openapi/fingoal-enrichment-api-openapi.yml
  - type: Documentation
    url: https://docs.fingoal.dev/
  - type: APIReference
    url: https://docs.fingoal.dev/
  - type: Postman
    url: https://fingoal.dev/FinGoal%20Enrichment.postman_collection.json
  - type: Webhooks
    url: asyncapi/fingoal-webhooks.yml
  - type: ErrorCatalog
    url: errors/fingoal-problem-types.yml
  - type: DataModel
    url: data-model/fingoal-data-model.yml
- aid: fingoal:fingoal-user-tagging-api
  name: FinGoal User Tagging API
  description: markdown/tagging.md
  humanURL: https://docs.fingoal.dev/
  baseURL: https://findmoney.fingoal.com/v3
  tags:
  - User Tagging
  properties:
  - type: OpenAPI
    url: openapi/fingoal-user-tagging-api-openapi.yml
  - type: Documentation
    url: https://docs.fingoal.dev/
  - type: APIReference
    url: https://docs.fingoal.dev/
  - type: Postman
    url: https://fingoal.dev/FinGoal%20Enrichment.postman_collection.json
  - type: Webhooks
    url: asyncapi/fingoal-webhooks.yml
  - type: ErrorCatalog
    url: errors/fingoal-problem-types.yml
  - type: DataModel
    url: data-model/fingoal-data-model.yml
- aid: fingoal:fingoal-webhook-configurations-api
  name: FinGoal Webhook Configurations API
  description: Manage webhook callback URLs for your client. Supports default and tenant-specific configurations per webhook
    type.
  humanURL: https://docs.fingoal.dev/
  baseURL: https://findmoney.fingoal.com/v3
  tags:
  - Webhook Configurations
  properties:
  - type: OpenAPI
    url: openapi/fingoal-webhook-configurations-api-openapi.yml
  - type: Documentation
    url: https://docs.fingoal.dev/
  - type: APIReference
    url: https://docs.fingoal.dev/
  - type: Postman
    url: https://fingoal.dev/FinGoal%20Enrichment.postman_collection.json
  - type: Webhooks
    url: asyncapi/fingoal-webhooks.yml
  - type: ErrorCatalog
    url: errors/fingoal-problem-types.yml
  - type: DataModel
    url: data-model/fingoal-data-model.yml
- aid: fingoal:fingoal-client-management-api
  name: FinGoal Client Management API
  description: "There are three kinds of people who interact with Link Money: \n- **Users** are the people who use the Link\
    \ Money application. They are the people who log in, view their accounts, and make transactions.\n- **Clients** are the\
    \ people who use the Link Money API. They are the people who build applications that interact with the Link Money API.\n\
    - **Tenants** are the organizations that use Link Money. They are the people who manage the users and clients who interact\
    \ with Link Money. Generally speaking, the `user` is an end user of the `tenant`'s application, and the `client` is a\
    \ developer who is building the `tenant`'s application. \n\nEvery developer must have a client configuration in order\
    \ to access Link Money. This includes developers who are operating within a tenant environment that they themselves manage.\
    \ \n\n## Webhooks \nLink Money supports all available Yodlee webhooks, which are documented in the [Yodlee API documentation](https://developer.envestnet.com/resources/yodlee/webhooks/docs).\
    \ Developers can subscribe to webhooks by sending requests to the Link Money API webhook management endpoints. \n\nAs\
    \ each Link Money tenant is a separate environment, each tenant requires its own webhook subscription. Make sure you authenticate\
    \ with a token that has the proper tenant ID to ensure tha the webhook subscription is created in the correct tenant environment.\n\
    \nLink Money tenants are shared by multiple clients, so it is possible to receive webhook notifications from customers\
    \ who are not specifically accessing your application. Make sure that your application logic accounts for events that\
    \ are related to users who other clients may have registered."
  humanURL: https://docs.fingoal.dev/
  baseURL: https://findmoney.fingoal.com/v3
  tags:
  - Client Management
  properties:
  - type: OpenAPI
    url: openapi/fingoal-client-management-api-openapi.yml
  - type: Documentation
    url: https://link-money-docs.fingoal.dev/
  - type: APIReference
    url: https://link-money-docs.fingoal.dev/
  - type: Webhooks
    url: asyncapi/fingoal-link-money-webhooks.yml
  - type: Components
    url: components/fingoal-components.yml
  - type: Authentication
    url: authentication/fingoal-authentication.yml
  - type: DataModel
    url: data-model/fingoal-data-model.yml
  - type: RateLimits
    url: rate-limits/fingoal-rate-limits.yml
  - type: SignUp
    url: https://fingoal.com/request-developer-account
- aid: fingoal:fingoal-fastlink-api
  name: FinGoal Fastlink API
  description: "The Link Money API permits end users to link and get data from their bank accounts. But of course, that requires\
    \ a front-end interface. That's where the Fastlink comes in.\n\nThe Fastlink is an example of what we call a \"Linking\
    \ Widget\" - a small application, usually embedded via iframe in another financial application, that allows end users\
    \ to interact with an aggregation service - in this case, Yodlee's Fastlink. \n\nIn this documentation `Fastlink` refers\
    \ specifically to `Fastlink 4`, which is the most recent version of Yodlee's Fastlink widget. We do not support older\
    \ versions of Fastlink, and urge all of our onboarding customers to upgrade to Fastlink 4. \n\nTo open a frontend session\
    \ with Link Money's Fastlink4, you must: \n- Have a client registered with the Link Money API\n- Have client credentials\
    \ for the Link Money API \n- Have a single registered user with the Link Money API\n- Have a web application (or test\
    \ web application) with HTML and JavaScript where the FL4 can be embedded.\n\n### Step 1: Get an authentication token\n\
    First, get an authentication token for Link Money. \n```js\nconst fetch = require('node-fetch'); // If using Node.js,\
    \ ensure to install the 'node-fetch' package\n\n// Client credentials and other required information. We recommend storing\
    \ these in a secure location, such as a password vault.\nconst clientId = 'YOUR_CLIENT_ID';\nconst clientSecret = 'YOUR_CLIENT_SECRET';\n\
    \n// The URL to your authentication endpoint\nconst tokenUrl = '{LINK_MONEY_BASE_URL}/oauth/token';\n\n// Prepare the\
    \ request body\nconst requestBody = { clientId, clientSecret };\n\n// Make the HTTP POST request to obtain the JWT\ntry\
    \ {\n  const rawResponse = await fetch(tokenUrl, {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json'\n\
    \    },\n    body: requestBody\n  });\n  const data = await response.json();\n  const token = data.accessToken;\n    //\
    \ Use the access token for subsequent API requests that require authentication\n} catch(error) {\n  console.error('Error\
    \ fetching the access token:', error);\n}\n```\n### Step 2: Get the Fastlink configuration\nWith the `token` from the\
    \ request, you can authorize a call to the Fastlink widget endpoint. \n```js \nconst fetch = require('node-fetch'); //\
    \ If using Node.js, ensure to install the 'node-fetch' package\nconst accessToken = \"{YOUR_ACCESS_TOKEN}\"; // see previous\
    \ step.\nconst getFastlinkConfigUrl = '{LINK_MONEY_BASE_URL}/yodlee/fastlink';\nconst login_name = `any_string_of_your_choice`;\n\
    try {\n  const rawResponse = await fetch(getFastlinkConfigUrl, {\n    method: 'POST',\n    headers: {\n      'Content-Type':\
    \ 'application/json',\n      'Authorization': `Bearer ${accessToken}`\n    },\n\tbody: { login_name }\n  });\n  const\
    \ data = await response.json();\n  const { fastlinkConfiguration } = data;\n  const { accessToken, fastLinkURL, configName\
    \ } = fastlinkConfiguration;\n    // Use the accessToken, fastLinkURL, and configName to embed the Fastlink widget in\
    \ your application\n} catch(error) {\n  console.error('Error fetching the access token:', error);\n}\n```\n### Step 3:\
    \ Embed the Fastlink widget\nThe fields provided above have supplied you with everything you need to open the Yodlee Fastlink\
    \ widget in your application. To complete the integration, you will need to use the Yodlee Fastlink SDK along with the\
    \ configuration provided above.\n```html\n<!-- Mark Up -->\n<div id=\"container-fastlink\">\n\t<div style=\"text-align:\
    \ center;\">\n   <input type=\"submit\" id=\"btn-fastlink\" value=\"Link an Account\">\n</div>\n</div>\n\n<!-- Yodlee\
    \ FL4 CDN -->\n<script type='text/javascript' src='https://cdn.yodlee.com/fastlink/v4/initialize.js'></script>\n\n<!--\
    \ Yodlee FL4 Config -->\n<script> \n// embed the code provided in the previous step here to receive...\nconst { accessToken,\
    \ fastLinkURL, configName } = fastlinkConfiguration;\n(function (window) {\n  //Open FastLink\n  const fastlinkBtn = document.getElementById('btn-fastlink');\n\
    \  fastlinkBtn.addEventListener('click', function() {\n    window.fastlink.open({\n      fastLinkURL: fastLinkURL, //\
    \ from step 2\n      accessToken: `Bearer ${accessToken}`, // from step 2; do not use the token from step 1 here. \n \
    \     params: {\n        configName : configName // from step 2\n      },\n      onSuccess: function (data) {\n      \
    \  // will be called on success. For list of possible message, refer to onSuccess(data) Method.\n        console.log(data);\n\
    \      },\n      onError: function (data) {\n        // will be called on error. For list of possible message, refer to\
    \ onError(data) Method.\n        console.log(data);\n      },\n      onClose: function (data) {\n        // will be called\
    \ called to close FastLink. For list of possible message, refer to onClose(data) Method.\n        console.log(data);\n\
    \      },\n      onEvent: function (data) {\n        // will be called on intermittent status update.\n        console.log(data);\n\
    \      }\n    },\n    'container-fastlink');\n  }, false);\n}(window));\n</script>\n```\n\n### Step 4: Additional Configuration\n\
    The Fastlink widget can be configured to meet your specific needs. For more information on configuration options, see\
    \ the [Yodlee Fastlink 4 documentation](https://developer.envestnet.com/resources/yodlee/fastlink-4/docs/documentation).\
    \ \n\nThe Link Money API surfaces the variables required to open any instance of Fastlink 4. However, we do not currently\
    \ surface any helper functions for customized instances of Fastlink4. However, we also do not restrict you from customizing\
    \ the Fastlink widget to meet your needs. If you are opening the FL4 for a specific provider, simply alter the base configuration\
    \ above as you normally would."
  humanURL: https://docs.fingoal.dev/
  baseURL: https://findmoney.fingoal.com/v3
  tags:
  - Fastlink
  properties:
  - type: OpenAPI
    url: openapi/fingoal-fastlink-api-openapi.yml
  - type: Documentation
    url: https://link-money-docs.fingoal.dev/
  - type: APIReference
    url: https://link-money-docs.fingoal.dev/
  - type: Webhooks
    url: asyncapi/fingoal-link-money-webhooks.yml
  - type: Components
    url: components/fingoal-components.yml
  - type: Authentication
    url: authentication/fingoal-authentication.yml
  - type: DataModel
    url: data-model/fingoal-data-model.yml
  - type: RateLimits
    url: rate-limits/fingoal-rate-limits.yml
  - type: SignUp
    url: https://fingoal.com/request-developer-account
- aid: fingoal:fingoal-oauth-api
  name: FinGoal OAUTH API
  description: The Oauth API from FinGoal — 1 operation(s) for oauth.
  humanURL: https://docs.fingoal.dev/
  baseURL: https://findmoney.fingoal.com/v3
  tags:
  - Authentication
  tags_raw:
  - Oauth
  properties:
  - type: OpenAPI
    url: openapi/fingoal-oauth-api-openapi.yml
  - type: Documentation
    url: https://link-money-docs.fingoal.dev/
  - type: APIReference
    url: https://link-money-docs.fingoal.dev/
  - type: Webhooks
    url: asyncapi/fingoal-link-money-webhooks.yml
  - type: Components
    url: components/fingoal-components.yml
  - type: Authentication
    url: authentication/fingoal-authentication.yml
  - type: DataModel
    url: data-model/fingoal-data-model.yml
  - type: RateLimits
    url: rate-limits/fingoal-rate-limits.yml
  - type: SignUp
    url: https://fingoal.com/request-developer-account
- aid: fingoal:fingoal-webhooks-api
  name: FinGoal Webhooks API
  description: 'Webhook payload schemas for all webhook types. Configure which webhooks you receive using the Webhook Configurations
    endpoints.


    **Available Webhook Types:**

    - `ENRICHMENT_DATA`: Data-rich Transaction Enrichment (full payload with enriched transactions)

    - `ENRICHMENT_NOTIFICATION`: Notification-only Transaction Enrichment (batch_request_id for fetching results)

    - `USER_TAGS_DATA`: Data-rich User Tags (full payload with created/deleted/modified tags)

    - `USER_TAGS_NOTIFICATION`: Notification-only User Tags (guid for fetching results)

    - `INSIGHTS`: Financial insights and recommendations'
  humanURL: https://docs.fingoal.dev/
  baseURL: https://findmoney.fingoal.com/v3
  tags:
  - Webhook
  tags_raw:
  - Webhooks
  properties:
  - type: OpenAPI
    url: openapi/fingoal-webhooks-api-openapi.yml
maintainers:
- FN: Kin Lane
  email: kin@apievangelist.com
- FN: APIs.json
  email: info@apis.io
common:
- type: Overlay
  url: overlays/fingoal-link-money-overlay.yaml
- type: Overlay
  url: overlays/fingoal-insights-overlay.yaml
- type: DeveloperPortal
  url: https://fingoal.com/developer-documentation
- type: Documentation
  url: https://docs.fingoal.dev/
- type: APIReference
  url: https://docs.fingoal.dev/
- type: GettingStarted
  url: https://docs.fingoal.dev/
- type: Postman
  url: https://fingoal.dev/FinGoal%20Enrichment.postman_collection.json
- type: SignUp
  url: https://fingoal.com/request-developer-account
- type: Blog
  url: https://fingoal.com/blog
- type: GitHubOrganization
  url: https://github.com/fingoal
- type: TermsOfService
  url: https://fingoal.com/terms
- type: PrivacyPolicy
  url: https://fingoal.com/privacy
- type: Compliance
  url: https://fingoal.com/fingoal-privacy-security
- type: TrustCenter
  url: security/fingoal-trust-center.yml
- type: Authentication
  url: authentication/fingoal-authentication.yml
- type: OAuthScopes
  url: scopes/fingoal-scopes.yml
- type: Conventions
  url: conventions/fingoal-conventions.yml
- type: Lifecycle
  url: lifecycle/fingoal-lifecycle.yml
- type: Conformance
  url: conformance/fingoal-conformance.yml
- type: Sandbox
  url: sandbox/fingoal-sandbox.yml
- type: Webhooks
  url: asyncapi/fingoal-webhooks.yml
- type: ErrorCatalog
  url: errors/fingoal-problem-types.yml
- type: DataModel
  url: data-model/fingoal-data-model.yml
- type: X-MCPServerCandidate
  url: mcp/fingoal-mcp.yml
  note: 'Renamed from MCPServer 2026-09-03 (roadmap#247): the manifest self-describes as status: candidate — a tool list derived
    from the published API contracts, not an existing server. The scorer already read the manifest and reported mcp_server
    correctly; the MCPServer type was crediting the artifact-type surfaces with a server that does not exist.'
- type: LLMsTxt
  url: llms/fingoal-llms.txt
- type: AgentSkill
  url: skills/_index.yml
- type: DomainSecurity
  url: security/fingoal-domain-security.yml
- type: RateLimits
  url: rate-limits/fingoal-rate-limits.yml
- type: Components
  url: components/fingoal-components.yml
- type: Support
  url: https://fingoal.com/contact
- type: Website
  url: https://fingoal.com/
x-enrichment:
  date: '2026-08-14'
  status: enriched
  artifacts_added: 11
  pass: local-v1
  note: Discovered and captured a second, previously unprofiled FinGoal API - the Link Money API at https://link-money-docs.fingoal.dev/swagger.json
    (OpenAPI 3.1.0, 9 operations). Confirmed no pricing page, no status page, no changelog, no SDKs, no MCP server and no
    A2A agent card; those absences are recorded as artifacts rather than omitted.

Work with this as data

Every provider here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for providers

9 MCP tools reach this
  • find_providersBrowse and filter every provider in the catalog.
  • get_provider_artifactsEvery artifact this provider publishes, grouped by type.
  • get_provider_operationsEvery operation across all of their OpenAPIs — one call instead of parsing every spec.
  • get_provider_toolsEvery MCP tool they ship, with the operation each wraps.
  • get_provider_evidenceHow each part of their score was established. Free — the basis for a claim should not sit behind it.
  • get_provider_ratingPRO — composite, band, trend and facet scores.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This provider
curl "https://apis.io/api/v1/providers/fingoal"
All providers
curl "https://apis.io/api/v1/providers?limit=25"
Every operation they expose
curl "https://apis.io/api/v1/providers/fingoal/operations?limit=25"
How their score was established
curl "https://apis.io/api/v1/providers/fingoal/evidence"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.