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