Fincura Webhooks API
## Supported EventsThe following are events you can listen to via webhooks.| Event Type | Description | | --------------------------------------------- | -------------------------- || GlobalCashflow.Saved | A global cashflow analysis has been saved by the user | | Analysis.Saved | An analysis has been saved by the user | | DocumentFile.Received | File saved/received to the Fincura Platform | | DocumentFile.Processing | File is being processed by the Fincura Pipeline | | DocumentFile.HumanRequired | Human Intervention is required for file | | DocumentFile.SpreadComplete | File data spread to a template (data now normalized/standardized) | | DocumentFile.Error | Error processing DocumentFile | | BulkFile.Received | Bulk File saved/received to the Fincura Platform | | BulkFile.Processing | Bulk File is being processed by the Fincura Pipeline | | BulkFile.Processed | Bulk File has completed processing | | BulkFile.Error | Error processing BulkFile | | * | Wildcard for all events | | Template.Changed | A change was detected in a template for spreading, global cashflow, or DSCR analysis | | Borrower.CreatedFromImport | A Borrower was created from processing a file import | | CalculatedStatement.Update | A calculated statement has been updated by the user | | ForecastedStatement.Update | A forecasted statement has been updated by the user | | AnnualizedStatement.Update | An annualized statement has been updated by the user | ## Webhook Request BodyThe webhook POST request body will contain the following json parameters:- `event` the event that triggered the callback (e.g. `DocumentFile.Received`)- `transaction_id` a unique UUID representing the event- `payload` additional event specific parameters## Webhook SignaturesAll of our outgoing webhook requests contain a `X-Fincura-Signature` header which has been signed by a tenant specific key. This allows a 3rd party to validate requests are from Fincura's servers.The header contains a list of comma seperated key value pairs:- `t` - UTC timestamp of the request- `uuid` - the UUID of the webhook record- `v1` - signature of the message [(HMAC_SHA256)](https://en.wikipedia.org/wiki/HMAC)### Obtaining the Tenant Signing KeySee: [Get Tenant Settings](#operation/readTenantSettings) which returns a `webhook_signing_key`### Calculating the Message SignatureThe webhook message signature is calculated by joining the `timestamp` of the request, the `uuid` of the webhook and the `body` of the request with periods (`.`) into a single string.The signature is generated by creating a HMAC SHA256 signature of that message using the tenant signing key.The calculated signature can then be matched to the `v1` signature in the `X-Fincura-Signature` header to verify the request originated from Fincura and the body has not been tampered with.NOTE: Fincura periodically rotates signing keys for security purposes, if a signature mismatch if found, it is recommended to make sure you are using the latest signing key.Python example of validating a signature:```#!/usr/bin/env pythonimport hmacimport hashlib SIGNING_KEY = "tenant signing key" # Obtained via API call to `operation/readTenantSettings`def create_message(timestamp, uuid, body): return f"{timestamp}.{uuid}.{body}"def create_sha256_signature(key, message): message = message.encode() return hmac.new(key.encode('utf-8'), message, hashlib.sha256).hexdigest().upper()def verify_fincura_header(signature_header, request_body): header_params = {kv[0]:kv[1] for kv in param.split('=') for param in signature_header.split(',')} message = create_message(header_params['t'], header_params['uuid'], request_body) signature = create_sha256_signature(SIGNING_KEY, message) if signature != header_params['v1']: raise Exception('Webhook Signature Mismatch')// for example (signature shortened for brevity)header_value = 't=1602104227,uuid=5262fc90-eb99-4bd8-8712-ae50fc71ea92,v1=E9397...9C3332'request_body = '{"event:"value"}'verify_fincura_header(header_value, request_body)```
Fincura Webhooks API is one of 20 APIs that Fincura publishes on the APIs.io network, described by a machine-readable OpenAPI specification.
Tagged areas include Webhook. The published artifact set on APIs.io includes an OpenAPI specification and an API reference.
This API exposes 4 operations across 2 paths, and defines 1 schema. It is described by OpenAPI 3.0.2, at version 1.3.1.
Requests are made against the base URL https://api.fincura.com.
Metadata
The identity and technical contract details declared by the specification.
Authentication & Security 1
Fincura Webhooks API declares
1 security scheme
for authenticating requests.
It accepts HTTP bearer tokens (JWT) (API_Key).
By default, every request must be authenticated.
Paths & Operations 4
Across 2 paths, the API surfaces 4 operations — 1 DELETE, 2 GET, 1 POST. Each is listed below with its method, path, parameters, and response codes.
Supported Events The following are events you can listen to via webhooks. | Event Type | Description | | --------------------------------------------- | --------------------------…
Schemas 1
The contract defines 1 schema that model the data the API accepts and returns. The most detailed is Webhook (6 properties). Each schema is shown below with its type and property counts.
Specification
The full machine-readable OpenAPI contract behind this narrative.
Source
More from Fincura 12
Other APIs Fincura publishes across the network.
This is an independent, third-party profile of Fincura Webhooks 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.