Skip to main content
POST
/
v3
/
{customerId}
/
BankingServices
/
GetAccountsDetail
Get Accounts Detail
curl --request POST \
  --url https://{instance}-api.private.fin.ag/v3/{customerId}/BankingServices/GetAccountsDetail \
  --header 'Content-Type: application/json' \
  --data '
{
  "RequestId": "3fa391bc-bc52-4424-82c5-8662600df9b2"
}
'
import requests

url = "https://{instance}-api.private.fin.ag/v3/{customerId}/BankingServices/GetAccountsDetail"

payload = { "RequestId": "3fa391bc-bc52-4424-82c5-8662600df9b2" }
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({RequestId: '3fa391bc-bc52-4424-82c5-8662600df9b2'})
};

fetch('https://{instance}-api.private.fin.ag/v3/{customerId}/BankingServices/GetAccountsDetail', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://{instance}-api.private.fin.ag/v3/{customerId}/BankingServices/GetAccountsDetail",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'RequestId' => '3fa391bc-bc52-4424-82c5-8662600df9b2'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://{instance}-api.private.fin.ag/v3/{customerId}/BankingServices/GetAccountsDetail"

payload := strings.NewReader("{\n \"RequestId\": \"3fa391bc-bc52-4424-82c5-8662600df9b2\"\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://{instance}-api.private.fin.ag/v3/{customerId}/BankingServices/GetAccountsDetail")
.header("Content-Type", "application/json")
.body("{\n \"RequestId\": \"3fa391bc-bc52-4424-82c5-8662600df9b2\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://{instance}-api.private.fin.ag/v3/{customerId}/BankingServices/GetAccountsDetail")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"RequestId\": \"3fa391bc-bc52-4424-82c5-8662600df9b2\"\n}"

response = http.request(request)
puts response.read_body
{
  "HttpStatusCode": 200,
  "Accounts": [
    {
      "Transactions": [
        {
          "Date": "2025-01-31",
          "Code": null,
          "Description": "PAYROLL - Stripe Paycheck",
          "Debit": 1000.4,
          "Credit": 1500.25,
          "Balance": 5105.6,
          "Id": "94584aed-7c98-42a4-9836-9f8557db63f5"
        }
      ],
      "TransitNumber": "12347",
      "InstitutionNumber": "777",
      "OverdraftLimit": 100.5,
      "Title": "Chequing Account",
      "AccountNumber": "7641238",
      "LastFourDigits": null,
      "Balance": {
        "Available": 5405.5,
        "Current": 5105.5,
        "Limit": 5105.5
      },
      "Category": "Operations",
      "Type": "Chequing",
      "Currency": "CAD",
      "Holder": {
        "Name": "Testing",
        "Address": {
          "CivicAddress": "25 york street",
          "City": "TOR",
          "Province": "ON",
          "PostalCode": "M5J 2V5",
          "POBox": null,
          "Country": "CA"
        },
        "Email": "test_user1@nomail.com",
        "PhoneNumber": "9051234567"
      },
      "AccountType": null,
      "Id": "27a9ffa0-c6b9-4cc6-9eaa-aa9efa07a889"
    }
  ],
  "InstitutionName": "FlinksCapital",
  "Login": {
    "Username": "chat_gpt",
    "IsScheduledRefresh": false,
    "LastRefresh": "2025-01-31T17:40:54.569261",
    "Type": "Personal",
    "Id": "5602459c-f6d0-4ca0-6750-08dccdcadcc0"
  },
  "InstitutionId": 14,
  "Institution": "FlinksCapital",
  "RequestId": "22178382-31ee-485c-a750-c20929b6a344"
}
{
"FlinksCode": "OPERATION_PENDING",
"Links": [
{
"rel": "{Endpoint}Async",
"href": "/{Endpoint}Async",
"example": "/{Endpoint}Async/{requestId}"
}
],
"HttpStatusCode": 202,
"Message": "Your operation is still processing",
"RequestId": "077785a3-fd0f-42f7-9251-ee2ff7f3b4ff"
}
To retrieve full account details, including transactions, the holder’s name, address, email and phone number, use the /GetAccountsDetail endpoint. You must first call the /Authorize endpoint to get a valid RequestId.

Accounts Detail

The /GetAccountsDetail endpoint returns the following information about each of the accounts that are linked to the session:
PERSONAL INFORMATIONACCOUNT INFORMATIONTRANSACTION HISTORY
NameTitleTransaction date
AddressTransit or Routing NumberTransaction description
Civic addressInstitution numberCredit or debit amount
CityAccount numberCurrent balance
ProvinceBalance
Postal codeCategory
PO BoxCategory type
CountryCurrency
E-mailAccount type
Phone number

Handling a 202 response

/GetAccountsDetail typically returns a 202 on the initial call. This means the data is still processing. When you receive a 202, poll /GetAccountsDetailAsync with the same RequestId every 10 seconds until you receive a 200. Set a maximum timeout of 30 minutes. /GetAccountsDetailAsync is a GET endpoint that acts as the polling companion to /GetAccountsDetail. The 200 response from /GetAccountsDetailAsync contains the same payload as a 200 from /GetAccountsDetail. For the full data retrieval flow, including prerequisites, see Retrieve Account Data.
Your server must handle 202 responses. Do not treat a 202 as an error.
As an alternative to polling, you can configure webhooks to receive the data automatically when processing completes.

Headers

x-api-key
string

Security feature that grants access to this endpoint.

Path Parameters

customerId
string
default:43387ca6-0391-4c82-857d-70d95f087ecb
required

Unique GUID provided by Flinks.

Body

application/json
RequestId
string
default:3fa391bc-bc52-4424-82c5-8662600df9b2
required

Unique identifier provided after a successful request to the /Authorize endpoint.

WithAccountIdentity
boolean
default:true

Specifies if you want to include the transit number, institution number and account number.

WithKYC
boolean
default:true

Specifies if you want to include customer information in the account details.

WithTransactions
boolean
default:true

Specifies if you want to include transactions in the account details.

AccountsFilter
string[]

Accounts that you are linking to this session.

DaysOfTransactions
enum<string>
default:Days90

Number of days that you want to see transaction data for.

Available options:
Days90,
Days365
WithDetailsAndBankingStatements
boolean
default:false

Specifies if you want to enable PDF statements.

NumberOfBankingStatements
string
default:MostRecent

Number of PDF banking statements that are returned.

Response

Success

HttpStatusCode
integer
Accounts
object[]
InstitutionName
string
Login
object

Information about the login session.

InstitutionId
integer
Institution
string
RequestId
string