Find an API

Search public APIs with auth details & Postman guides

← All APIs

Banking API

codat · Finance

Finance No Auth Free & Open financial

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

No authentication requiredFree to use with no key needed.

Sample Requests

GET List banking transactions

Gets a list of transactions incurred by a company across all bank accounts.

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

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));
GET List account balances

Gets a list of balances for a bank account including end-of-day batch balance or running balances per transaction.

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

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));
GET List accounts

Gets a list of all bank accounts of the SMB, with rich data like balances, account numbers and institutions holdingthe accounts.

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

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

Get Postman ↗
  1. 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?

Open documentation ↗