Get Account Numbers

Get Account Numbers

Returns a list of open, permissioned accounts associated with a link, including full account and routing numbers for appropriate accounts (such as checking and savings accounts).

Note that this endpoint does not trigger a fetch of account numbers from the institution; it merely returns account numbers that have already been fetched, either because prefetch was requested when the link was created, or because of an on-demand update. To force a check for new/updated account numbers, you must use the /products endpoint.

If you have requested prefetch or an on-demand update, you should check the refreshed_at date for this product in the returned response, and compare that against the previous refreshed_at date, which you can get from any previous response for this or any other account or link request. If the refreshed_at date has not increased, then updated data is not yet available.

URL

GET
/links/{id}/accounts/numbers
Request
curl --request GET \
--url https://api.moneykit.com/links/mk_eqkWN34UEoa2NxyALG8pcV/accounts/numbers \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
const options = {method: 'GET', headers: {Authorization: 'Bearer REPLACE_BEARER_TOKEN'}};

fetch('https://api.moneykit.com/links/mk_eqkWN34UEoa2NxyALG8pcV/accounts/numbers', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
import requests

url = "https://api.moneykit.com/links/mk_eqkWN34UEoa2NxyALG8pcV/accounts/numbers"

headers = {"Authorization": "Bearer REPLACE_BEARER_TOKEN"}

response = requests.request("GET", url, headers=headers)

print(response.text)
package main

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

func main() {

url := "https://api.moneykit.com/links/mk_eqkWN34UEoa2NxyALG8pcV/accounts/numbers"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer REPLACE_BEARER_TOKEN")

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

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

fmt.Println(res)
fmt.Println(string(body))

}
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://api.moneykit.com/links/mk_eqkWN34UEoa2NxyALG8pcV/accounts/numbers")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer REPLACE_BEARER_TOKEN'

response = http.request(request)
puts response.read_body
import Foundation

let headers = ["Authorization": "Bearer REPLACE_BEARER_TOKEN"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.moneykit.com/links/mk_eqkWN34UEoa2NxyALG8pcV/accounts/numbers")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})

dataTask.resume()
Response
{
"accounts": [
{
"account_id": "acc_6Tef269B6ZArSVpYrxtjBV",
"account_type": "depository.checking",
"name": "Premier Checking",
"account_mask": "3748",
"balances": {
"currency": "USD",
"available": 340.12,
"current": 445.89,
"limit": 500,
"balance_date": "2021-08-12T15:23:00Z"
},
"numbers": {
"ach": [
{
"account_number": string,
"routing_number": string,
"wire_routing_number": string
}
],
"bacs": [
{
"account_number": string,
"sort_code": string
}
],
"eft": [
{
"account_number": string,
"institution_number": string,
"branch_number": string
}
],
"international": [
{
"iban": string,
"bic": string
}
]
}
}
],
"link": {
"link_id": "mk_eqkWN34UEoa2NxyALG8pcV",
"institution_id": "chase",
"institution_name": "Chase",
"institution_avatar": "https://example.com/avatar.png",
"provider": "mx",
"state": "connected",
"last_synced_at": "2023-02-16T09:14:11",
"tags": [
"user_type:admin"
],
"products": {
"accounts": {
"refreshed_at": "2023-02-16T09:14:11",
"last_attempted_at": "2023-02-16T09:14:11"
},
"identity": {
"refreshed_at": "2023-02-16T09:14:11",
"last_attempted_at": "2023-02-16T09:14:11",
"settings": {
"required": true,
"prefetch": false
}
}
}
}
}
{
"error_code": "api_error.auth.expired_access_token",
"error_message": "Access token expired",
"documentation_url": string
}
{
"error_code": "link_error.forbidden_action",
"error_message": "Accounts access not permitted",
"documentation_url": string
}
{
"error_code": "link_error.not_found",
"error_message": "Link not found.",
"documentation_url": string
}
{
"error_code": "link_error.deleted",
"error_message": "Link deleted.",
"documentation_url": string
}
{
"error_code": "link_error.bad_state",
"error_message": string,
"documentation_url": string,
"link_error_code": string
}
{
"error_code": "api_error.rate_limit_exceeded",
"error_message": "Rate limit exceeded",
"documentation_url": string
}

id

: string

required

The unique ID for this link.

example: mk_eqkWN34UEoa2NxyALG8pcV

Responses

200

Successful Response

accounts

: array

required

401

Invalid access_token or insufficent API client scope or unauthorized link access.

403

Forbidden by link owner. The user did not give permission to access this data when linking.

error_code

: string

required

link_error.forbidden_action

default: "link_error.forbidden_action"

Allowed values:

"link_error.forbidden_action"

error_message

: string

required

Error message

example: Accounts access not permitted

documentation_url

: string

required

404

Link not found.

error_code

: string

required

link_error.not_found

default: "link_error.not_found"

Allowed values:

"link_error.not_found"

error_message

: string

required

default: "Link not found."

documentation_url

: string

required

410

Link deleted.

error_code

: string

required

link_error.deleted

default: "link_error.deleted"

Allowed values:

"link_error.deleted"

error_message

: string

required

default: "Link deleted."

documentation_url

: string

required

422

Link error.

error_code

: string

required

link_error.bad_state

default: "link_error.bad_state"

Allowed values:

"link_error.bad_state"

error_message

: string

required

documentation_url

: string

required

429

Rate limit exceeded.

error_code

: string

required

api_error.rate_limit_exceeded

default: "api_error.rate_limit_exceeded"

Allowed values:

"api_error.rate_limit_exceeded"

error_message

: string

required

Error message

default: "Rate limit exceeded"

documentation_url

: string

required