bank · Nigeria
GTBank is in the institution catalog as inst_gtbank. This page shows how it routes, what each connector in that chain can read, and the exact calls that start a connection.
Retail and commercial banks. Checking, savings, card, and loan accounts with transaction history. Link hands the user off to the institution's own consent page, so no password is ever seen by your servers or ours. Expect a multi-factor challenge during the flow — Link loops on it until the connector is satisfied.
what you can read
Support is a property of the connector that serves the connection, not of the institution alone — so the honest answer is a matrix, not a badge.
| Connector | Balances | Transactions | Recurring | Assets | Identity | Income | Liabilities | Investments | Crypto |
|---|---|---|---|---|---|---|---|---|---|
| PlaidagreementPlaid's sandbox is instant; Production access needs a company profile and a use-case review. | |||||||||
| Sandboxself-serveAlways on. Deterministic simulated data — it never reaches a real institution. |
At connect time the registry walks this chain and uses the first connector whose credentials are present in the deployment. Connecting GTBank to real data therefore requires the relevant provider credentials to be configured — without them the connection falls through to the sandbox, which serves realistic simulated data and never contacts GTBank. Test keys resolve to the sandbox regardless.
Connecting GTBank for real
FeelConnect does not hold bank connections of its own. Every institution in the catalog carries an ordered chain of connectors, and live traffic goes to the first one whose credentials are present in the deployment you are calling.
Some connectors an operator can switch on alone in minutes — GoCardless Bank Account Data (UK and EU banks, free self-signup under their PSD2 licence), Coinbase, Kraken, PayPal, public-address crypto wallets, and CSV / OFX / QFX import. Others need a signed business relationship before they will serve production data, including Plaid, MX, Finicity, Akoya, and Stripe Financial Connections. Where an institution has no enabled connector, a live call returns provider_error rather than pretending.
The sandbox is the exception and it is always on: test keys resolve to the simulated network regardless of credentials, so the full integration is buildable on day one. See going live for the provider-by-provider breakdown.
how to connect it
Passing institution_id opens Link directly on GTBank instead of the picker — useful when your own UI already asked which bank.
import { FeelConnect } from "@feelconnect/node";const fc = new FeelConnect({apiKey: process.env.FEELCONNECT_SECRET_KEY!,baseUrl: "https://connect.feels.money/v1",});// Pin the flow to GTBank: Link opens straight on its auth step// instead of the institution picker.const { link_token } = await fc.link.createToken({client_name: "Your app",user: { client_user_id: "user-123" },products: ["balances", "transactions", "recurring"],institution_id: "inst_gtbank",});
The browser receives only the link_token, which expires in thirty minutes. Link runs the institution’s auth step, any MFA challenge, account selection, and the consent screen, then hands back a public_token. Exchange it once on your server with fc.link.exchangeToken and store the resulting access_token encrypted. Full walkthrough in the quickstart.
in the api
The response below is generated from this institution's row, so it is the shape and the values a real call gets back.
# Look the institution up by id.curl https://connect.feels.money/v1/institutions/get_by_id \-H "Authorization: Bearer $FEELCONNECT_SECRET_KEY" \-H "Content-Type: application/json" \-d '{ "institution_id": "inst_gtbank" }'
logo_url is a path on this origin rather than a third-party CDN, so rendering the mark never tells anyone else which institution your user is looking at. primary_color and monogram are the fallback tile for clients that would rather not load an image at all. Field by field in the institutions reference.
In the sandbox this institution connects today. Because it is flagged as an OAuth institution, Link runs the simulated consent hand-off rather than asking for a password. Either way the item comes back with 24 months of deterministic history — enough to build and demo the whole integration before any provider agreement exists. Sandbox reference.
keep reading