# Bank Link Troubleshooting

If you are experiencing issues with BankLink, we are always here to support however please review some considerations
below before reaching out as you may be able to resolve the issue faster.

If you do need to get in touch, please share the relevant Quiltt Profile ID which follows a format of `p_` followed by a
series of numbers and letters and share screenshots where possible.

---

### Pagination Limits

A single query is capped at 100 records per request. Transaction queries return 100 transactions per page by default, so
if you only fetch the first page, you'll miss the rest of your data.

**Recommendation:** Always check `pagination.has_next_page` and paginate using the cursor (`pagination.next_cursor` →
`cursor`) until `has_next_page` is false.

### Transaction History Depth

By default, up to three months of transaction history is available per account through the transaction history endpoint
[`/api/v3/bank-accounts/{uuid}/history`](/api/payments/#tag/bank-accounts/GET/api/v3/bank-accounts/{uuid}/history).

**Recommendation:** If you need more than three months, ask GrailPay to turn on extended transaction history (up to 24
months, depending on what the financial institution supports). This is an add-on at an additional charge.

---

### Account-Issue Related Returns from Digital Banks and Neobanks

Some digital banks and neobanks, such as Chime, issue routing numbers through more than one partner bank. If an ACH
transaction uses the wrong routing number for an account (e.g. a stale or mismatched one from an earlier connection), the
receiving bank can't locate the account and may return it as R03 (No Account / Unable to Locate Account) or another code,
even though the account is valid and active.

**Recommendation:** Be aware that this can happen with these institutions. It's a known limitation that GrailPay can't
fix on your behalf. Where possible, use the account and routing details from the most recent connection rather than
previously stored ones.

---

### Sandbox Test Profile Limit

The sandbox enforces an approximate 20-account limit per test profile at the widget level (this doesn't apply to direct
API calls). Connection or account-creation failures after repeated testing against the same profile are most likely
caused by this limit.

**Recommendation:** Use a fresh test profile (or phone number, where applicable) for each test scenario, and only create
the sandbox accounts a given test case needs.

---

### Institution Reliability

BankLink connects to financial institutions through an aggregation network. This gives you broader reach and cost
benefits, but it also means more parties are involved, so you may see behavior from a specific institution or aggregator
that's outside GrailPay's control.

**Recommendation:** Know which institution and aggregator you're connecting through, as this is often the deciding factor
in connection behavior. Before reporting an institution as unavailable, confirm you're testing a new connection attempt
rather than a cached or expired session.

---

### White-Labeling

You can present the bank connection experience under your own brand through a tri-party agreement between your
organization, GrailPay and Quiltt.

**Recommendation:** Contact GrailPay support to find out whether white-labeling is right for your business.

---

### Missing Information

Account owner and profile details are only returned if the end user grants permission to share them during their bank's
consent flow. Without it, endpoints like `/owners` return an empty result even though the connection succeeded.

**Recommendation:** If possible, ensure the end user has shared their data-sharing permissions with their bank. If they
haven't, they should ask the bank to update the permissions and reconnect through BankLink. If the data is still missing,
contact GrailPay support with the Quiltt Profile ID and screenshots.