External Bank Account Connect

Qwik uses Teller to let a user securely link an external bank account (for transaction aggregation / verification). The link is established inside a hosted Connect page rendered in a WebView; your backend then reads accounts and transactions.

i
Flow: (1) GET โ€ฆ/connect-url mints a hosted Connect URL containing a one-time nonce. (2) Open it in a WebView; the user links their bank and the page POSTs the enrollment to the public endpoint automatically. (3) Read accounts, check status, pull transactions.

GET/partner/external-bank-account-connect/connect-url

๐Ÿ”‘ Org key + secret๐Ÿ‘ค User session

Query: environment (optional: sandbox | development | production; defaults to server config).

200 ยท Response
{
  "url": "https://dev.qwikcard.co/api/v1/partner/external-bank-account-connect/connect?nonce=...&environment=sandbox"
}

GET/partner/external-bank-account-connect/connect

๐ŸŒ Public ยท nonce

The hosted HTML Connect page (open in a WebView). Not a JSON endpoint โ€” it renders Teller Connect and, on success, calls the public enrollment endpoint below. Query: nonce, environment.

POST/partner/external-bank-account-connect/enrollment/public

๐ŸŒ Public ยท nonce

Called automatically by the hosted page after a successful link. Authenticated by the nonce (no headers).

Body: nonce (required) + Teller's enrollment payload (accessToken, user, enrollment, signatures).

200 ยท Response
{
  "message": "Enrollment saved"
}

POST/partner/external-bank-account-connect/enrollment

๐Ÿ”‘ Org key + secret๐Ÿ‘ค User session

Server-to-server alternative to the public endpoint (when you capture the Teller enrollment yourself).

FieldTypeRequiredNotes
accessTokenstringโœ…Teller access token.
signaturesstring[]โ€”
noncestringโ€”If present, validated against the user/partner mapping.
environmentenumโ€”sandbox | development | production.
userobjectโ€”{ id }.
enrollmentobjectโ€”{ id, institution?: { name, id } }.
200 ยท Response
{
  "message": "Enrollment saved"
}

GET/partner/external-bank-account-connect/accounts

๐Ÿ”‘ Org key + secret๐Ÿ‘ค User session
200 ยท Response
{ "accounts": [ { "id": "...", "name": "...", "institution": "...", "last_four": "..." } ] }

GET/partner/external-bank-account-connect/status

๐Ÿ”‘ Org key + secret๐Ÿ‘ค User session
200 ยท Response
{ "isTellerConnected": true }

GET/partner/external-bank-account-connect/transactions

๐Ÿ”‘ Org key + secret๐Ÿ‘ค User session
ParamRequiredNotes
account_idโœ…Teller account id from โ€ฆ/accounts.
start_date, end_dateโ€”YYYY-MM-DD.
from_idโ€”Cursor for the next page.
countโ€”Page size (max 1000).
200 ยท Response
{
  "transactions": [ ... ],
  "next_from_id": "...|null",
  "count": 50
}

If the account/enrollment isn't found, returns an empty list with HTTP 200.

DELETE/partner/external-bank-account-connect/enrollments/:enrollmentId

๐Ÿ”‘ Org key + secret๐Ÿ‘ค User session

Disconnects an entire enrollment.

200 ยท Response
{
  "message": "Enrollment disconnected"
}

DELETE/partner/external-bank-account-connect/accounts/:accountId

๐Ÿ”‘ Org key + secret๐Ÿ‘ค User session

Disconnects a single account.

200 ยท Response
{
  "message": "Account disconnected"
}