Receive Data Automatically: An Introduction to Flinks Webhooks

Modified on Wed, 8 Oct at 3:01 PM

As a critical component of your back-end integration, Flinks Webhooks are designed to streamline how you receive crucial financial data from connected customer accounts. Instead of relying on manual requests or continuous polling of our Application Programming Interface (API), Webhooks enable Flinks to send the data directly to your application automatically when it is ready.

This automated approach simplifies your infrastructure and ensures you receive time-sensitive information immediately, making Webhooks the most powerful integration type for automatically receiving end-user data.


What are Flinks Webhooks?

A Webhook acts as an automated notification system that allows Flinks’ application to make custom callbacks to your platform. This eliminates the need for your systems to constantly check (or "poll") our API to see if new data or status updates are available.

By utilizing Webhooks, you no longer need to worry about the correct sequence of endpoints to call - Flinks handles the delivery as soon as the data extraction process is complete.


Steps for Implementation

To implement Webhooks as your chosen back-end solution, follow these primary steps:

  1. Provide Your Webhook URL: To enable the feature, you must send Flinks Support your designated webhook URL. Flinks will then configure this URL on your private instance.

  2. Acknowledge the Webhook Callback: When your server receives a webhook callback, it is essential that you return an HTTP 200 status code. This response confirms to Flinks that the delivery was successful.

  3. Verify Authenticity (Recommended): To ensure the messages arriving at your endpoint are authentic and have not been tampered with, Flinks strongly recommends validating the HMAC signature.

    • Flinks uses HMAC with SHA-256 encryption to generate a validation key, which is sent in the HTTP response header under flinks-authenticity-key.

    • You will be provided with a secret key configured specifically for your instance.

    • Your server must combine this secret key with the received serialized JSON response, compute the hash, and compare the result against the flinks-authenticity-key to validate the message's integrity.


Capabilities and Limitations

Flinks Webhooks are versatile but have specific constraints regarding the data payloads they can deliver.

Key Capabilities

Webhooks currently support the automatic delivery of data payloads for several key use cases:

  • GetAccountsDetail: Returns the payload corresponding to the /GetAccountsDetail endpoint, including KYC data, Identity and Bank Verification (IBV) details, and transactions.

  • KYC (Know Your Customer): Anticipates the return of the user’s personal information as soon as it is fetched from the Financial Institution (FI), even if the accounts’ detailed information is still being pulled.

  • Investments: Returns the Investments endpoint payload, which includes information on securities, positions, and transactions.

  • Flinks Pay Events: A specialized webhook system is available for Flinks Pay clients using Interac E-Transfer, sending events whenever a transaction status changes.

  • Flinks Upload Fraud Alerts: You can set up Webhooks to automatically deliver alerts when Flinks' document validation service detects a fraud signal in an uploaded document.

  • Custom Tagging: If you use a custom tag parameter during the connection flow, the webhook payload will contain that chosen tag.

Current Limitations

  • Testing Environment: It is not possible to test webhooks integration using a Sandbox environment. Webhook functionality must be configured and tested in a private instance (DEV, UAT, or Production).

  • Attributes Payloads: Flinks does not currently support the direct delivery of Attributes’ payloads via webhooks. However, you can use the raw aggregated data webhook as a trigger to initiate subsequent API calls for Attributes.

  • Only one URL is supported: Flinks currently only supports one Webhook URL per instance/environment.


Suggested Use Cases

Webhooks are ideal for integrations that require maximum automation and minimal latency in data delivery:

  1. Automated Data Refreshing: If your use case requires keeping customer transactional history and balance information up to date, Webhooks ensure you receive the latest data automatically without needing to initiate manual API calls.

  2. Triggering Enrichment Processes: Since Webhooks deliver raw aggregated data automatically (like GetAccountsDetail data), this payload can serve as an immediate trigger for your server to call a specific Attributes API endpoint, such as /GetIncomeAttributes or /GetLendingAttributes, to enrich the data immediately.

  3. Real-Time KYC Completion: The dedicated KYC webhook can anticipate the return of personal user information rapidly. This allows you to accelerate digital KYC and onboarding processes by acting on identity information instantly, even while richer account data is still being aggregated.

  4. Reconciling User Accounts: If you associate a custom UserId with a Flinks connection, you can embed this reference number within a custom tag. Since the webhook payload returns this tag, it simplifies the process of reconciling the Flinks LoginId with your internal user reference system immediately upon data delivery.

  5. Payment Status Monitoring: For Flinks Pay integrations involving Interac E-Transfer, utilizing the payment webhook allows your application to receive automated updates on transaction status changes, which is crucial for end-to-end payment processing and reconciliation.

  6. Instant Fraud Detection Workflow: By setting up webhooks to deliver fraud alerts when documents are uploaded via Flinks Upload, you can build an automated workflow that immediately flags documents needing manual review or denies processing based on the risk verdict (e.g., Trust, Normal, Warning, or High Risk).





Webhook sample response


{

  "ResponseType": "GetAccountsDetail",

  "HttpStatusCode": 200,

  "Accounts": [

    {

      "Transactions": [

        {

          "Date": "2025-10-01",

          "Code": null,

          "Description": "CHILD TAX BENEFIT -CANADA",

          "Debit": null,

          "Credit": 500,

          "Balance": 37700,

          "Id": "c140e187-3356-4ba8-b694-cc7051a323f4"

        },

        {

          "Date": "2025-10-01",

          "Code": null,

          "Description": "Insurance GREAT-WEST LIFE",

          "Debit": null,

          "Credit": 100,

          "Balance": 37200,

          "Id": "bb34db6d-af1b-4e60-8915-ce075c02a1a3"

        },

        {

          "Date": "2025-10-01",

          "Code": null,

          "Description": "CHILD TAX BENEFIT -CANADA",

          "Debit": null,

          "Credit": 100,

          "Balance": 37100,

          "Id": "1e24298b-654b-40ab-a709-b9685bd2a708"

        },

        {

          "Date": "2025-10-01",

          "Code": null,

          "Description": "ATT-GEN-FAM-SUP PAY",

          "Debit": null,

          "Credit": 100,

          "Balance": 37000,

          "Id": "a3350420-e27f-4bbf-9170-f0176fc58414"

        },

        {

          "Date": "2025-10-01",

          "Code": null,

          "Description": "Electronic Funds Transfer DEPOSIT CANADA",

          "Debit": null,

          "Credit": 500,

          "Balance": 36900,

          "Id": "653883ae-8d42-4d0b-b0b6-c1fa3b76295b"

        }

      ],

      "TransitNumber": "12345",

      "InstitutionNumber": "777",

      "OverdraftLimit": 0,

      "Title": "Chequing Account",

      "AccountNumber": "7654321",

      "LastFourDigits": null,

      "Balance": {

        "Available": 38000,

        "Current": 37700,

        "Limit": null

      },

      "Category": "Operations",

      "Type": "Chequing",

      "Currency": "CAD",

      "Holder": {

        "Name": "Jane Smith",

        "Address": {

          "CivicAddress": "01 Scotiabank Arena",

          "City": "Toronto",

          "Province": "ON",

          "PostalCode": "M4Y3C6",

          "POBox": null,

          "Country": "CA"

        },

        "Email": "noemail@gmail.com",

        "PhoneNumber": "5145555555"

      },

      "AccountType": null,

      "Id": "964ce7d7-4014-4784-a148-cd1db08e5514"

    }

  ],

  "Tag": "This is a test performed by Flinks",

  "Login": {

    "Username": "jane_smith",

    "IsScheduledRefresh": false,

    "LastRefresh": "2025-10-01T17:57:16.4111654",

    "Type": "Personal",

    "Id": "6b818cd8-359f-41c8-2246-08de0113edf4"

  },

  "InstitutionId": 14,

  "Institution": "FlinksCapital",

  "RequestId": "703b94bc-8318-4aa0-8b11-a70da78edb5c"


Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article