Skip to main content
POST
/
v2
/
open-banking
/
reports
/
{type}
Generate a banking report
curl --request POST \
  --url https://api-sandbox.argyle.com/v2/open-banking/reports/{type} \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "user": "01975b3b-5ba6-3ec1-2148-f595b6d92614",
  "webhook": "https://your-webhook-backend.com",
  "bank_accounts": [
    "8057637863"
  ],
  "from_date": "1970-01-19T17:30:50Z",
  "report_custom_fields": [
    {
      "label": "loanID",
      "value": "12345",
      "shown": true
    }
  ],
  "income_stream_confidence_minimum": 50
}
'
import requests

url = "https://api-sandbox.argyle.com/v2/open-banking/reports/{type}"

payload = {
"user": "01975b3b-5ba6-3ec1-2148-f595b6d92614",
"webhook": "https://your-webhook-backend.com",
"bank_accounts": ["8057637863"],
"from_date": "1970-01-19T17:30:50Z",
"report_custom_fields": [
{
"label": "loanID",
"value": "12345",
"shown": True
}
],
"income_stream_confidence_minimum": 50
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}

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

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
user: '01975b3b-5ba6-3ec1-2148-f595b6d92614',
webhook: 'https://your-webhook-backend.com',
bank_accounts: ['8057637863'],
from_date: '1970-01-19T17:30:50Z',
report_custom_fields: [{label: 'loanID', value: '12345', shown: true}],
income_stream_confidence_minimum: 50
})
};

fetch('https://api-sandbox.argyle.com/v2/open-banking/reports/{type}', 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://api-sandbox.argyle.com/v2/open-banking/reports/{type}",
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([
'user' => '01975b3b-5ba6-3ec1-2148-f595b6d92614',
'webhook' => 'https://your-webhook-backend.com',
'bank_accounts' => [
'8057637863'
],
'from_date' => '1970-01-19T17:30:50Z',
'report_custom_fields' => [
[
'label' => 'loanID',
'value' => '12345',
'shown' => true
]
],
'income_stream_confidence_minimum' => 50
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"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://api-sandbox.argyle.com/v2/open-banking/reports/{type}"

payload := strings.NewReader("{\n \"user\": \"01975b3b-5ba6-3ec1-2148-f595b6d92614\",\n \"webhook\": \"https://your-webhook-backend.com\",\n \"bank_accounts\": [\n \"8057637863\"\n ],\n \"from_date\": \"1970-01-19T17:30:50Z\",\n \"report_custom_fields\": [\n {\n \"label\": \"loanID\",\n \"value\": \"12345\",\n \"shown\": true\n }\n ],\n \"income_stream_confidence_minimum\": 50\n}")

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

req.Header.Add("Authorization", "Basic <encoded-value>")
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://api-sandbox.argyle.com/v2/open-banking/reports/{type}")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"user\": \"01975b3b-5ba6-3ec1-2148-f595b6d92614\",\n \"webhook\": \"https://your-webhook-backend.com\",\n \"bank_accounts\": [\n \"8057637863\"\n ],\n \"from_date\": \"1970-01-19T17:30:50Z\",\n \"report_custom_fields\": [\n {\n \"label\": \"loanID\",\n \"value\": \"12345\",\n \"shown\": true\n }\n ],\n \"income_stream_confidence_minimum\": 50\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api-sandbox.argyle.com/v2/open-banking/reports/{type}")

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

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"user\": \"01975b3b-5ba6-3ec1-2148-f595b6d92614\",\n \"webhook\": \"https://your-webhook-backend.com\",\n \"bank_accounts\": [\n \"8057637863\"\n ],\n \"from_date\": \"1970-01-19T17:30:50Z\",\n \"report_custom_fields\": [\n {\n \"label\": \"loanID\",\n \"value\": \"12345\",\n \"shown\": true\n }\n ],\n \"income_stream_confidence_minimum\": 50\n}"

response = http.request(request)
puts response.read_body
{
  "id": "cde25bb1-5cf4-4544-9df8-04212a781e1b",
  "user": "01975b3b-5ba6-3ec1-2148-f595b6d92614",
  "reference_id": "cde25bb1-5cf4-4544-9df8-04212a781e1b",
  "generated_at": "2025-06-10T20:39:35.000Z",
  "created_at": "2025-06-10T20:39:35.000Z",
  "type": "voai",
  "status": "generating",
  "file_url": "www.argyle.com/storagename/pdf",
  "json_url": "www.argyle.com/storagename/json",
  "accounts": [],
  "last_synced_at": null,
  "external_id": null,
  "source": "open-banking",
  "metadata": {
    "origin_report_id": "5u6fx59dnw4b",
    "bank_accounts_requested": [
      "8057637863"
    ],
    "from_date": "1970-01-19T17:30:50.000Z",
    "report_custom_fields": [
      {
        "label": "loanID",
        "value": "12345",
        "shown": true
      }
    ],
    "income_stream_confidence_minimum": 50
  }
}

Authorizations

Authorization
string
header
required

Username = api_key_id, Password = api_key_secret

Path Parameters

type
enum<string>
required

The type of report to generate.

Available options:
voa,
voi,
voai

Body

application/json
user
string<uuid>
required

ID of the user.

webhook
string<uri>

Webhook URL to receive report-related Connect Events.

bank_accounts
string[]

List of bank account IDs to be included in the report.

from_date
string<date-time>

Restrict report to data from on or after this datetime (ISO 8601).

  • VOAI reports - controls the length of asset history
  • VOA reports - controls the length of asset history
  • VOI reports - controls the length of income history
income_from_date
string<date-time>

Restrict report to data from on or after this datetime (ISO 8601).

  • VOAI reports - controls the length of income history
  • Does not apply to VOA or VOI reports.
report_custom_fields
object[]

Include up to 5 custom objects in the report metadata. Often used for identifying information.

Maximum array length: 5
income_stream_confidence_minimum
integer

Limit income streams used in the report to those above this confidence value (0-100 accepted).

Only available for VOI and VOAI report types.

Required range: 0 <= x <= 100

Response

200 - application/json

Report object.

id
string<uuid>

Unique ID of the report object.

user
string<uuid>

ID of the user associated with the report.

reference_id
string<uuid>
deprecated

Report PDF identifier.

generated_at
string<date-time>
deprecated

Timestamp (ISO 8601) when the report was requested.

created_at
string<date-time>

Timestamp (ISO 8601) when the report was requested.

type
enum<string>

The type of report.

  • voa - Verification of Assets
  • voi - Verification of Income
  • voai - Verification of Assets and Income
Available options:
voa,
voi,
voai
status
enum<string>

Progress of report generation.

  • generating - The report is being generated.
  • generated - The report is ready to download.
Available options:
generating,
generated
file_url
string

Download link to the report PDF. Requires Argyle authentication headers.

json_url
string

Download link to the report in JSON. Requires Argyle authentication headers.

accounts
object[]

Not used in banking reports.

last_synced_at
string<date-time> | null

Not used in banking reports.

external_id
string | null

The external_id of the user, otherwise null.

source
string

The source of the report data.

metadata
object

Additional info.