Simulate Connecting a Bank Account
Overview
Do not enter production data in the Highnote Test environment, which is for exploring features and training. Use only dummy or test data.
External bank accounts are used to transfer funds into and out of a Highnote financial account. Highnote has partnered with Plaid and Finicity to offer secure options for connecting an external bank account. For more information, see Connect External Accounts.
This guide provides steps for simulating connecting an external bank account to a Highnote financial account.
Prerequisites
Simulate connecting an external account with Finicity
Use the following mutation to simulate connecting an external bank account with Finicity:
AddExternalBankAccountVerifiedThroughFinicity
Query
mutation AddExternalBankAccountVerifiedThroughFinicity(
$input: AddExternalBankAccountVerifiedThroughFinicityInput!
) {
addExternalBankAccountVerifiedThroughFinicity(input: $input) {
__typename
... on ExternalFinancialBankAccount {
id
name
provider
createdAt
updatedAt
owner {
__typename
}
externalBankAccountDetails {
id
createdAt
updatedAt
last4
type
routingNumber
}
}
... on UserError {
errors {
errorPath
code
description
}
}
... on AccessDeniedError {
message
}
}
}
Variables
{ "input": { "accountHolderId": "ACCOUNT_HOLDER_ID", "name": "Finicity Checking", "bankAccountType": "CHECKING", "externalToken": { "receiptId": "processor-token-success", "customerId": "5543088633794259024", "products": [ { "productType": "ACH_DETAILS", "accountId": "ACCOUNT_ID", "callLimit": 1000, "expirationDetail": { "start": "2022-03-10T06:06:20Z", "expiry": "2023-03-10T06:06:20Z" } }, { "productType": "CURRENT_BALANCE", "accountId": "ACCOUNT_ID", "callLimit": 1000, "expirationDetail": { "start": "2022-03-10T06:06:20Z", "expiry": "2023-03-10T06:06:20Z" } }, { "productType": "ACH_OWNER_DETAILS", "accountId": "ACCOUNT_ID", "callLimit": 1000, "expirationDetail": { "start": "2022-03-10T06:06:20Z", "expiry": "2023-03-10T06:06:20Z" } } ] } } }
Result
{
"data": {
"addExternalBankAccountVerifiedThroughFinicity": {
"__typename": "ExternalFinancialBankAccount",
"id": "FINANCIAL_ACCOUNT_ID",
"name": "Finicity Checking",
"provider": "SIMULATED",
"createdAt": "2022-08-26T20:24:22.557Z",
"updatedAt": "2022-08-26T20:24:22.734Z",
"owner": {
"__typename": "USPersonAccountHolder"
},
"externalBankAccountDetails": {
"id": "EXTERNAL_BANK_ACCOUNT_ID",
"createdAt": "2022-08-26T20:24:22.557Z",
"updatedAt": "2022-08-26T20:24:22.730Z",
"last4": "9606",
"type": "CHECKING",
"routingNumber": "011401533"
}
}
},
"extensions": {
"requestId": "REQUEST_ID"
}
}
Simulate connecting an external account with Plaid
Use the following mutation to simulate connecting an external account with Plaid:
AddExternalBankAccountVerifiedThroughPlaid
Query
mutation AddExternalBankAccountVerifiedThroughPlaid(
$input: AddExternalBankAccountVerifiedThroughPlaidInput!
) {
addExternalBankAccountVerifiedThroughPlaid(input: $input) {
__typename
... on ExternalFinancialBankAccount {
id
name
provider
createdAt
updatedAt
owner {
__typename
}
ledgers {
id
name
}
externalBankAccountDetails {
id
createdAt
updatedAt
last4
type
}
}
... on UserError {
errors {
errorPath
code
description
}
}
... on AccessDeniedError {
message
}
}
}
Variables
{ "input": { "accountHolderId": "ACCOUNT_HOLDER_ID", "externalToken": { "value": "processor-token-success" } } }
Result
{
"data": {
"addExternalBankAccountVerifiedThroughPlaid": {
"__typename": "ExternalFinancialBankAccount",
"id": "ACCOUNT_HOLDER_ID",
"name": "Plaid Checking",
"provider": "SIMULATED",
"createdAt": "2022-09-09T19:33:02.822Z",
"updatedAt": "2022-09-09T19:33:02.881Z",
"owner": {
"__typename": "USPersonAccountHolder"
},
"ledgers": [
{
"id": "FINANCIAL_ACCOUNT_ID",
"name": "AVAILABLE_CASH"
},
{
"id": "FINANCIAL_ACCOUNT_ID",
"name": "CASH"
}
],
"externalBankAccountDetails": {
"id": "EXTERNAL_BANK_ACCOUNT_ID",
"createdAt": "2022-09-09T19:33:02.822Z",
"updatedAt": "2022-09-09T19:33:02.880Z",
"last4": "9606",
"type": "CHECKING"
}
}
},
"extensions": {
"requestId": "REQUEST_ID"
}
}
Simulate connecting a non-verified account
Non-verified external accounts are used to transfer funds out of a Highnote financial account. You can't move funds into Highnote from a non-verified external account.
Use the following mutation with test routing and account numbers to simulate connecting a non-verified external account:
- Test routing number: 091000019
- Test account number: Any 5 digit number
AddNonVerifiedExternalUSFinancialBankAccount
Query
mutation addNonVerifiedExternalUSFinancialBankAccount(
$input: AddNonVerifiedExternalUSFinancialBankAccountInput!
) {
addNonVerifiedExternalUSFinancialBankAccount(input: $input) {
__typename
... on NonVerifiedExternalUSFinancialBankAccount {
id
name
createdAt
updatedAt
externalBankAccountDetails {
id
last4
type
routingNumber
createdAt
updatedAt
}
}
... on UserError {
errors {
errorPath
code
description
}
}
... on AccessDeniedError {
message
}
}
}
Variables
{ "input": { "routingNumber": "091000019", "accountNumber": "12345", "name": "My Checking Account", "accountHolderId": "ACCOUNT_HOLDER_ID", "bankAccountType": "CHECKING" } }
Result
{
"data": {
"addNonVerifiedExternalUSFinancialBankAccount": {
"__typename": "NonVerifiedExternalUSFinancialBankAccount",
"id": "EXTERNAL_FINANCIAL_ACCOUNT_ID",
"name": "My Checking Account",
"createdAt": "2022-02-09T17:10:56.662Z",
"updatedAt": "2022-02-09T17:10:56.662Z",
"externalBankAccountDetails": {
"id": "EXTERNAL_BANK_ACCOUNT_ID",
"last4": "8910",
"type": "CHECKING",
"routingNumber": "111000025",
"createdAt": "2022-02-09T17:10:56.662Z",
"updatedAt": "2022-02-09T17:10:56.662Z"
}
}
},
"extensions": {
"requestId": "REQUEST_ID"
}
}
Automate your integration
To automate your integration, subscribe to external bank account notification events.
The details provided in the payloads from these events can be used for the following use cases:
- Automate your application or website's transaction processing workflows
- Create account holder notifications and alerts