How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

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, 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. The 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.View Full List of FinGoal CategoriesView Full List of FinGoal Tags## Enrichment QuickstartThis quickstart requires a JWT, which can be generated following the top-level authentication quickstart. Ensure you have a valid JWT before proceeding.### 1. Prepare the Request BodyThe request body should be a JSON object with a single parameter, `transactions`, which must be an array. Each transaction must include the following fields:- `uid`: A unique user identifier.- `amountnum`: The transaction amount.- `date`: The transaction date.- `original_description`: The original transaction description.- `transactionid`: The unique transaction identifier.- `accountType`: The account type.- `settlement`: The settlement type.```json{ "transactions": [ { "uid": "16432789fdsa78", "accountid": "1615", "amountnum": 12.41, "date": "2024-05-11", "original_description": "T0064 TARGET STORE", "transactionid": "988cee06-5d36-11ec-b00b-bc8d8f2303a12733", "accountType" : "creditCard", "settlement": "debit" } ]}```### 2. Make a POST RequestMake a POST request to the Insights API cleanup endpoint using the prepared JSON object. Include the JWT in the `Authorization` header.```js const headers = new Headers(); headers.append("Authorization", "Bearer {YOUR_TOKEN}"); headers.append("Content-Type", "application/json"); const body = JSON.stringify({ "transactions": [ { "uid": "16432789fdsa78", "accountid": "1615", "amountnum": 12.41, "date": "2024-05-11", "original_description": "T0064 TARGET STORE", "transactionid": "988cee06-5d36-11ec-b00b-bc8d8f2303a12733", "accountType" : "creditCard", "settlement": "debit" } ] }); const requestOptions = { method: 'POST', redirect: 'follow' headers, body, }; try { const response = await fetch("https://findmoney-dev.fingoal.com/v3/cleanup", requestOptions); const data = response.json(); console.log(data); } catch(error) { console.log('ERROR:', error); }```The 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.### 3. Extract the Batch Request ID from a Successful ResponseIf the request is successful, the response body will contain a JSON object with a single parameter, `status`. The `status` object has the following structure:- `transactions_received`: Whether or not the transactions were successfully enqueued for enrichment.- `transactions_validated`: Whether or not the transactions were successfully validated.- `processing`: Whether or not the transactions are currently being processed.- `num_transactions_processing`: The number of transactions that are currently being processed.- `batch_request_id`: The unique identifier for the batch request.```json{ "status": { "transactions_received": true, "transactions_validated": true, "processing": true, "num_transactions_processing": 1, "batch_request_id": "988cee06-5d36-11ec-b00b-bc8d8f2303a12733" }}```The `batch_request_id` is a unique identifier for the batch request. You will use this identifier to retrieve the enriched transactions. ### 4. Listen for the Enrichment Completion Event To 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. Webhook 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. The webhook payload contains a JSON object with the following structure: - `batch_request_id`: The unique identifier for the batch request.The `batch_request_id` corresponds to the `batch_request_id` returned in the initial enrichment request. ```json{ "batch_request_id": "988cee06-5d36-11ec-b00b-bc8d8f2303a12733"}```#### Verifying the Enrichment Webhook Every 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. The following snippet demonstrates how to verify the webhook signature using Node.js with the `crypto` and `express` libraries.```jsconst crypto = require('crypto');const express = require('express');const app = express();app.use(express.json());app.post('/webhook-receiver', (req, res) => { const { headers, body } = req; const { 'x-webhook-verification': signature } = headers; if (!signature) { res.status(400).send('Reject the webhook if no verification header is present.'); return; } const secret = 'YOUR_CLIENT_SECRET'; const payload = JSON.stringify(body); const hmac = crypto.createHmac('sha256', secret); const digest = hmac.update(payload).digest('hex'); if (digest === signature) { res.status(200).send('The webhook is verified. It is safe to process the payload.'); } else { res.status(400).send('The Webhook verification is incorrect for the payload. Reject the webhook.'); }});```### 5. Retrieve the Enriched TransactionsWith the `batch_request_id`, submit a GET request to the Insights API enrichment retrieval endpoint. Include the JWT in the `Authorization` header. ```js const headers = new Headers(); headers.append("Authorization", "Bearer {YOUR_TOKEN}"); const requestOptions = { method: 'GET', redirect: 'follow', headers, }; try { const response = await fetch("https://findmoney-dev.fingoal.com/v3/cleanup/{batch_request_id}", requestOptions); const data = response.json(); console.log(data); } catch(error) { console.log('ERROR:', error); }```The 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.### Successful ResponseIf 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. ### Best Practices - Group transactions by `uid` for optimal performance. - Provide as much information as possible in the request body to improve enrichment quality.- 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.- Avoid using personally identifiable information (PII) in the `uid` or `transactionid` fields. We recommend using a UUID or similar anonymous identifier instead.

FinGoal Enrichment API is one of 4 APIs that FinGoal publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Enrichment. The published artifact set on APIs.io includes an OpenAPI specification, API documentation, and an API reference.

This API exposes 5 operations across 5 paths, and defines 4 schemas. It is described by OpenAPI 3.1.0, at version 3.1.3.

Requests are made against 2 base URLs: https://findmoney-dev.fingoal.com/v3, https://findmoney.fingoal.com/v3.

5 operations 5 paths 4 schemas 1 GET4 POST

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 3.1.0
API Version
3.1.3
Base URL
https://findmoney.fingoal.com/v3
Authentication
OAuth 2.0
Resource Areas
1

Authentication & Security 1

FinGoal Enrichment API declares 1 security scheme for authenticating requests. It supports OAuth 2.0 (Authentication) using the clientCredentials flow, exposing 1 scope. By default, every request must be authenticated.

Paths & Operations 5

Across 5 paths, the API surfaces 5 operations — 1 GET, 4 POST. Each is listed below with its method, path, parameters, and response codes.

Enrichment 5

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

POST
/cleanup/sync
Test Transaction Enrichment
syncCleanupTransactions body → 200400401
POST
/cleanup
Historical Transaction Enrichment
asyncCleanupTransactions body → 200400401
POST
/cleanup/streaming
Streaming Transaction Enrichment
streamingCleanupTransactions body → 200400401
POST
/cleanup/base
Base Transaction Enrichment
baseCleanupTransactions body → 200400401
GET
/cleanup/{batch_request_id}
Retrieve Enrichment by Batch Request ID
getEnrichment 1 param → 200401404

Schemas 4

The contract defines 4 schemas that model the data the API accepts and returns. The most detailed are CleanupPost200Response (5 properties), EnrichmentNotificationPostRequest (3 properties), WebhookConfigurationsTestPostENRICHMENT_DATA (2 properties), CleanupPostRequest (1 property). Each schema is shown below with its type and property counts.

CleanupPostRequest
object
1 property 1 required
EnrichmentNotificationPostRequest
object
3 properties
CleanupPost200Response
object
5 properties
WebhookConfigurationsTestPostENRICHMENT_DATA
object
2 properties

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

fingoal-enrichment-api-openapi.yml Raw ↑

Other APIs FinGoal publishes across the network.

FinGoal User Tagging API
FinGoal Webhook Configurations API
FinGoal Link Money API
Where this information came from

This is an independent, third-party profile of FinGoal Enrichment API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.