Global Bank Account Information
Access individual or business account information in Europe using Open Banking capability.
Global Bank Account Information
[global]Documentation
Access +2600 european banks with one single entry point.
Access Real-Time Financial Data through Open Banking with our Global Bank Account Information API. The API allows secure access to bank account information with user consent, enabling businesses to retrieve real-time financial data, such as balances, transaction history, and verification details. This API streamlines financial processes, improves customer insights, and ensures compliance by providing up-to-date, trusted information directly from verified bank accounts.
With this API, you can:
- Retrieve real-time bank account balances and transaction history
- Verify account details for customer onboarding and financial assessments
- Enhance insights into customer financial behavior
Use case:
A financial lender uses the Global Bank Account Information API to securely access a customer's bank transaction history and balance, improving the accuracy of loan eligibility assessments while maintaining compliance with financial regulations.
Read more in this link on how to test the service in sandbox.
Account & balance types code translation
Code | Description |
|---|---|
| CACC | Account used to post debits and credits when no specific account has been nominated |
| CARD | Account used for card payments only |
| CASH | Account used for the payment of cash |
| LOAN | Account used for loans |
| OTHR | Account not otherwise specified |
| SVGS | Account used for savings |
Code | Description |
|---|---|
| CLAV | Closing available balance |
| CLBD | Accounting Balance |
| FWAV | Balance that is at the disposal of account holders on the date specified |
| INFO | Balance for informational purposes |
| ITAV | Available balance calculated in the course of the day |
| ITBD | Booked balance calculated in the course of the day |
| OPAV | Opening balance that is at the disposal of account holders at the beginning of the date specified |
| OPBD | Book balance of the account at the beginning of the account reporting period. It always equals the closing book balance from the previous report |
| OTHR | Other Balance |
| PRCD | Balance of the account at the end of the previous reporting period |
Rows per page
Transactions Endpoint — Pagination
Integration guide for paginating through transaction history on the Global Bank Account Data API.
Overview
The GET /account/{accountId}/transactions endpoint returns a continuation_key whenever the bank has more transactions than fit in a single response. Pass that value back to fetch the next page.
Follow-up pages are free. Only the first request in a pagination sequence is billed; every subsequent request that carries a valid continuationKey is recorded as 0 credits.
Endpoint
GET https://api.roaring.io/global/bank-account-data/1.0/account/{accountId}/transactions
Parameters
Parameter | In | Type | Description |
|---|---|---|---|
accountId | path | string | The account identifier returned by /auth/session. |
fromDate | query | string | Start of date range, inclusive. Format yyyy-MM-dd. Most banks limit the window to ~89–90 days. |
toDate | query | string | End of date range, inclusive. Format yyyy-MM-dd. Must be after fromDate. |
continuationKey | query | string | Opaque token from a previous response's continuation_key. Pass this to fetch the next page for free. Expires in 1 h. |
If both fromDate and toDate are omitted the bank's default window is used.
Response
{
"transactions": [
{ "...": "..." }
],
"continuation_key": "eyJjayI6Ii4uLiIsImNvIjoiYWJjLi4uIiwiYWMiOiJhY2MtMSIsImV4IjoxNzQ4ODAwMDAwfQ.6f2c1e..."
}
transactions— array of transaction records as returned by Enable Banking.continuation_key— present only when more pages remain. When the field is missing or empty, you have reached the end of the result set.
How to paginate
- Make the first request with
fromDate/toDate(and nocontinuationKey). This call is billed normally. - If the response contains
continuation_key, re-issue the same request withcontinuationKeyset to that value. This call is free. - Repeat step 2 until the response no longer contains
continuation_key.
⚠️ When paginating, send the same
accountIdand the same authentication headers that you used for the first request. Tokens are bound to both — see Token rules below.
💡
fromDateandtoDateare not required on follow-up requests — the bank applies the same window that produced the token. You may include them for clarity; they are ignored upstream when acontinuation_keyis present.
Example — iterate all pages
import requests
base_url = "https://api.roaring.io/global/bank-account-data/1.0"
headers = {
"Authorization": "Bearer <access_token>",
"roaring-consumer-key": "<consumer_key>",
}
params = {"fromDate": "2026-01-01", "toDate": "2026-03-31"}
all_tx = []
while True:
r = requests.get(
f"{base_url}/account/{account_id}/transactions",
params=params,
headers=headers,
)
r.raise_for_status()
body = r.json()
all_tx.extend(body.get("transactions", []))
token = body.get("continuation_key")
if not token:
break
params = {"continuationKey": token}
# First page (billed)
curl -H "Authorization: Bearer $TOKEN" \
-H "roaring-consumer-key: $CONSUMER_KEY" \
"https://api.roaring.io/global/bank-account-data/1.0/account/$ACC/transactions?fromDate=2026-01-01&toDate=2026-03-31"
# Next page (free)
curl -H "Authorization: Bearer $TOKEN" \
-H "roaring-consumer-key: $CONSUMER_KEY" \
"https://api.roaring.io/global/bank-account-data/1.0/account/$ACC/transactions?continuationKey=eyJjay..."
Billing
Request | Charge |
|---|---|
First call (no continuationKey) | Standard rate |
Follow-up call with a valid continuationKey | 0 credits |
| Follow-up call where the token fails verification | status 400 — not charged |
Free-tier accounting is performed server-side; no action is required from your side beyond passing the token back.
Token rules
Treat the continuation_key as opaque — do not parse or modify it; format and length may change without notice.
The token is bound to the request that produced it:
- It only works with the same
roaring-consumer-keythat received it. - It only works with the same
accountId. - It is valid for 1 hour. After that, restart the sequence with a fresh first request.
If any of these conditions are violated the call returns 400 Invalid or expired continuation key and is not charged.
Errors
Condition | Status | Body |
|---|---|---|
Missing accountId | 400 | "Missing require parameter: authCode" |
fromDate not in yyyy-MM-dd | 400 | "From date param should comply yyyy-MM-dd format" |
toDate not in yyyy-MM-dd | 400 | "To date param should comply yyyy-MM-dd format" |
fromDate not before toDate | 400 | "Date parameter 'fromDate' should be before 'toDate'" |
continuationKey tampered, expired, or not yours | 400 | "Invalid or expired continuation key" |
| Date range exceeds the bank's allowed window | 4xx | Forwarded from bank, typically "Wrong transactions period requested". Most banks cap the window at 89–90 days. |
A 400 response on a follow-up page is not charged, so a failed pagination call has no billing impact.
FAQ
How do I know when I've reached the last page?
The last response has no continuation_key field (or returns it empty). Stop iterating at that point.
Can I skip ahead or go backwards?
No. The continuation_key represents the bank's cursor state, so pages must be fetched in order. If you need an earlier page, restart from the first request.
Does the token survive a service restart on my side? Yes, for up to 1 hour. The token is self-contained — you may persist it across processes as long as the expiry hasn't passed and the consumer/account context is the same.
What if walking the full history takes longer than 1 hour? Restart the sequence with a fresh first request. In practice an hour is generous; most full walks complete in seconds.
Endpoints
Gets account details
https://api.roaring.io/global/bank-account-data/1.0/account/details/{accountId}Parameters path
accountIdrequired | stringAccount id |
Response schema: application/json
typeNo description provided.
Get account transactions
Fetches transactions for a given account. Dates must be in yyyy-MM-dd format. The maximum allowed transaction period depends on the bank (ASPSP) and is typically limited to 89-90 days. Requesting a longer period may result in a 'Wrong transactions period requested' error from the bank. If no dates are provided, the bank's default period is used. Use the optional 'strategy' parameter to request the longest history the bank will return, rather than only the requested window.
https://api.roaring.io/global/bank-account-data/1.0/account/{accountId}/transactionsParameters path
accountIdrequired | stringAccount id |
Parameters query
fromDate | stringStart date for transactions (inclusive, format: yyyy-MM-dd). The maximum transaction history period depends on the bank (ASPSP), but is typically limited to 90 days. Example: 2025-01-01 |
toDate | stringEnd date for transactions (inclusive, format: yyyy-MM-dd). Must be after fromDate. Example: 2025-03-31 |
continuationKey | stringContinuation key for paginating through results |
strategy | string ("default" | "longest")Optional transaction fetch strategy. 'default' (the behaviour when omitted) applies fromDate/toDate literally. 'longest' asks the bank for the earliest available transaction and everything after it - toDate is ignored and fromDate is treated as a starting hint, so use it for a first full sync. Not every bank supports extended history; unsupported values are rejected with 400. |
Gets aspsps statuses
https://api.roaring.io/global/bank-account-data/1.0/aspsps_statusesGets auth session
https://api.roaring.io/global/bank-account-data/1.0/auth/sessionParameters query
authCode | stringAuth code |
Gets auth url
Starts a bank authorization and returns the URL the PSU must visit. The optional 'validityDays' query parameter sets how long the resulting AIS session (consent) stays valid before the PSU must re-authenticate. If omitted it defaults to 180 days. The requested value is automatically capped to the target bank's maximum supported consent validity (maximum_consent_validity, as reported by the bank) and to the 180-day PSD2 regulatory ceiling, so a longer request never causes the bank to reject the session. The resolved values are returned in this response as validityDays and validUntil (so the caller can see when a request was capped), and the same expiry is later echoed as access.valid_until by the 'Gets auth session' endpoint. To see each bank's maximum upfront, read maxValidityDays from the 'Fetch a list of available banks' response. The response also contains 'origin', the scheme and host of the returned url (e.g. https://tilisy.enablebanking.com). Callers who redirect the PSU to the url can ignore it. Callers who instead embed Enable Banking's enablebanking-auth-flow widget must pass it in the widget's required origin attribute, and should read it from each response rather than hardcoding it, since the auth host is changing.
https://api.roaring.io/global/bank-account-data/1.0/auth/urlParameters query
bankNamerequired | stringBank name |
countryCoderequired | stringbanks country |
redirectUrlrequired | stringUrl which user will be redirected after successful authorization |
language | stringTwo-letter lowercase language code in ISO 639-1 format. If omitted, defaults to the banks country language |
psuType | stringOptional PSU type (e.g. business or personal) |
validityDays | stringOptional desired AIS session validity, in days from now. Defaults to 180 days.Automatically capped to the bank's maximum supported consent validity and to the 180-day PSD2 regulatory ceiling. Must be a positive integer. The resolved expiry is returned as access.valid_until by 'Gets auth session'. |
authOption | stringAuthentication option name |
cardNumber | string |
companyId | string |
currencyCode | string |
email | string |
iban | string |
password | string |
personalCode | string |
phoneNumber | string |
type | stringBank account type |
userId | string |
Gets auth url (path)
Deprecated, use 'Gets auth url' with query params instead. The optional 'validityDays' query parameter controls how long the AIS session (consent) stays valid; see the non-deprecated 'Gets auth url' endpoint for details. The response also carries the 'origin' of the returned url, needed by callers embedding Enable Banking's auth widget.
https://api.roaring.io/global/bank-account-data/1.0/auth/url/{country}/{bankName}Parameters path
bankNamerequired | stringBank name |
countryrequired | stringbanks country |
Parameters query
redirectUrlrequired | stringUrl which user will be redirected after successful authorization |
language | stringTwo-letter lowercase language code in ISO 639-1 format. If omitted, defaults to the banks country language |
psuType | stringOptional PSU type (e.g. business or personal) |
validityDays | stringOptional desired AIS session validity, in days from now. Defaults to 180 days.Automatically capped to the bank's maximum supported consent validity and to the 180-day PSD2 regulatory ceiling. Must be a positive integer. The resolved expiry is returned as access.valid_until by 'Gets auth session'. |
authOption | stringAuthentication option name |
cardNumber | string |
companyId | string |
currencyCode | string |
email | string |
iban | string |
password | string |
personalCode | string |
phoneNumber | string |
type | stringBank account type |
userId | string |
Fetch a list of available banks
Each bank record includes maxValidityDays — the maximum AIS session (consent) validity the bank supports, in days. Use it to decide the validityDays to pass to 'Gets auth url' (requests above a bank's maximum are capped).
https://api.roaring.io/global/bank-account-data/1.0/banks/{psuType}Parameters path
psuTyperequired | stringpsu type |
Parameters query
countryCode | stringCountry connected to bank |
Deletes session
https://api.roaring.io/global/bank-account-data/1.0/session/{sessionId}Parameters path
sessionIdrequired | stringSession id |