Banking API
codat · Finance
Codat's Banking API allows you to access standardised data from over bank accounts via third party providers. Standardize how you connect to your customers’ bank accounts. Retrieve bank account and bank transaction data in the same way via our partnerships with Plaid and TrueLayer. [Read more...](https://docs.codat.io/banking-api/overview) [See our OpenAPI spec](https://github.com/codatio/oas)
Authentication
Sample Requests
Gets a list of transactions incurred by a company across all bank accounts.
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/data/banking-transactions?page=1&query=test&orderBy=-modifiedDate&pageSize=100"import requests
params = {
"page": "1",
"query": "test",
"orderBy": "-modifiedDate",
"pageSize": "100"
}
response = requests.get(
"https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/data/banking-transactions",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/data/banking-transactions');
url.searchParams.set('page', '1');
url.searchParams.set('query', 'test');
url.searchParams.set('orderBy', '-modifiedDate');
url.searchParams.set('pageSize', '100');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/data/banking-transactions")
q := baseURL.Query()
q.Set("page", "1")
q.Set("query", "test")
q.Set("orderBy", "-modifiedDate")
q.Set("pageSize", "100")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/data/banking-transactions")
uri.query = URI.encode_www_form({
"page" => "1",
"query" => "test",
"orderBy" => "-modifiedDate",
"pageSize" => "100"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/data/banking-transactions?" . http_build_query([
"page" => "1",
"query" => "test",
"orderBy" => "-modifiedDate",
"pageSize" => "100"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Gets a list of balances for a bank account including end-of-day batch balance or running balances per transaction.
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/connections/{connectionId}/data/banking-accountBalances?page=1&query=test&orderBy=-modifiedDate&pageSize=100"import requests
params = {
"page": "1",
"query": "test",
"orderBy": "-modifiedDate",
"pageSize": "100"
}
response = requests.get(
"https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/connections/{connectionId}/data/banking-accountBalances",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/connections/{connectionId}/data/banking-accountBalances');
url.searchParams.set('page', '1');
url.searchParams.set('query', 'test');
url.searchParams.set('orderBy', '-modifiedDate');
url.searchParams.set('pageSize', '100');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/connections/{connectionId}/data/banking-accountBalances")
q := baseURL.Query()
q.Set("page", "1")
q.Set("query", "test")
q.Set("orderBy", "-modifiedDate")
q.Set("pageSize", "100")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/connections/{connectionId}/data/banking-accountBalances")
uri.query = URI.encode_www_form({
"page" => "1",
"query" => "test",
"orderBy" => "-modifiedDate",
"pageSize" => "100"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/connections/{connectionId}/data/banking-accountBalances?" . http_build_query([
"page" => "1",
"query" => "test",
"orderBy" => "-modifiedDate",
"pageSize" => "100"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Gets a list of all bank accounts of the SMB, with rich data like balances, account numbers and institutions holdingthe accounts.
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/connections/{connectionId}/data/banking-accounts?page=1&query=test&orderBy=-modifiedDate&pageSize=100"import requests
params = {
"page": "1",
"query": "test",
"orderBy": "-modifiedDate",
"pageSize": "100"
}
response = requests.get(
"https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/connections/{connectionId}/data/banking-accounts",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/connections/{connectionId}/data/banking-accounts');
url.searchParams.set('page', '1');
url.searchParams.set('query', 'test');
url.searchParams.set('orderBy', '-modifiedDate');
url.searchParams.set('pageSize', '100');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/connections/{connectionId}/data/banking-accounts")
q := baseURL.Query()
q.Set("page", "1")
q.Set("query", "test")
q.Set("orderBy", "-modifiedDate")
q.Set("pageSize", "100")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/connections/{connectionId}/data/banking-accounts")
uri.query = URI.encode_www_form({
"page" => "1",
"query" => "test",
"orderBy" => "-modifiedDate",
"pageSize" => "100"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/codat.io/banking/2.1.0/companies/{companyId}/connections/{connectionId}/data/banking-accounts?" . http_build_query([
"page" => "1",
"query" => "test",
"orderBy" => "-modifiedDate",
"pageSize" => "100"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Postman Setup Guide
- See official documentation for authentication and setup.
What can you build with Banking API?
Banking API is a Finance API. Developers commonly use finance APIs for:
- processing payments and handling transactions
- building subscription and billing systems
- automating invoicing and financial reporting
- fraud detection and risk scoring
- connecting to banking and accounting software
No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. Banking API is free to use, making it a low-risk choice to experiment with.
New to APIs? Read our beginner's guide · Learn about API keys · What is REST?