Skip to main content

Simulate Connecting a Bank Account

Overview​

test with dummy data

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"
          }
        }
      ]
    }
  }
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
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"
    }
  }
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
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"
  }
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
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