Skip to main content

Add Funds to your Program Funding Account Balance

Overview

Card products have an underlying financial account called the product funding account. Like all financial accounts, the product funding account has its own associated set of ledgers. The ledgers for your product funding account differ based on your card product's vertical.

Funding your product funding account differs for Live and Test environments:

  • Live environment: Your product funding account has an account and routing number, and may be funded via wire transfer from an external bank account.
  • Test environment: You can Simulate Funding your Balance via Wire Transfer to test your integration.

Your product funding account's role depends on your card product vertical. The following table provides an overview of each card product vertical and its associated product funding account role:

Card Product VerticalProduct Funding Account Role
Prepaid debitCovers negative balances in account holder financial accounts and issues provisional credits
ChargeBacks the line of credit issued to financial accounts
Secured chargeBacks the line of credit issued to financial accounts
FleetBacks the line of credit issued to financial accounts
AP automationProvides funds to account holder financial accounts via funds load
PrepaidProvides funds to account holder financial accounts via funds load
PayrollProvides payroll advance, covers negative balances in account holder financial accounts, and issues provisional credits

Transfer methods

The speed and cost of transfer methods varies. The following table outlines the transfer methods available for product funding accounts, and the speed of each method:

Transfer MethodSpeed
Wire transferSame business day
Internal Highnote transferWithin seconds

Find your product funding account ID

tip

To fund your product funding account in the Live environment, you will initiate a wire transfer outside of Highnote. This does not require knowing your product funding account ID.

To fund your product funding account using an internal Highnote transfer or to simulate a wire transfer in the Test environment, you must use your product funding account ID.

You can use the following query to find your product funding account ID using the Highnote API. In the response payload, the ID in the ProductFundingFinancialAccountFeature field is your product funding account ID:

GetCardProductWithAccounts
Query
query GetCardProductwithAccounts($id: ID!) {
node(id: $id) {
... on CardProduct {
__typename
id
name
usage
accounts {
edges {
node {
id
name
features {
__typename
enabled
}
accountStatus
owner {
__typename
}
}
}
}
}
}
}
Variables
{
"id": "CARD_PRODUCT_ID"
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
Result
{
"data": {
"node": {
"__typename": "CardProduct",
"id": "CARD_PRODUCT_ID",
"name": "Business Prepaid",
"usage": "MULTI_USE",
"accounts": {
"edges": [
{
"node": {
"id": "PRODUCT_FUNDING_ACCOUNT_ID",
"name": "Business Prepaid - Product Funding",
"features": [
{
"__typename": "ProductFundingFinancialAccountFeature",
"enabled": true
},
{
"__typename": "AchCapableFinancialAccountFeature",
"enabled": true
}
],
"accountStatus": "ACTIVE",
"owner": {
"__typename": "Organization"
}
}
},
{
"node": {
"id": "BALANCE_RESERVE_ACCOUNT_ID",
"name": "Business Prepaid - Negative Balance Reserve",
"features": [
{
"__typename": "NegativeBalanceReserveFinancialAccountFeature",
"enabled": true
}
],
"accountStatus": "ACTIVE",
"owner": {
"__typename": "Organization"
}
}
},
{
"node": {
"id": "PRODUCT_RESERVE_ACCOUNT_ID",
"name": "Business Prepaid - Product Reserve ",
"features": [
{
"__typename": "ProductReserveFinancialAccountFeature",
"enabled": true
}
],
"accountStatus": "ACTIVE",
"owner": {
"__typename": "Organization"
}
}
}
]
}
}
}
}

Simulate a wire transfer

In the Test environment, use the following mutation to simulate a wire transfer to fund your product funding account:

SimulateDeposit
Query
mutation SimulateDeposit($input: SimulateDepositInput!) {
simulateDeposit(input: $input) {
__typename
... on UserError {
errors {
errorPath
code
description
}
}
}
}
Variables
{
  "input": {
    "amount": {
      "value": 1500,
      "currencyCode": "USD"
    },
    "toFinancialAccountId": "MC40LmFj",
    "memo": "",
    "source": "WIRE"
  }
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
Result
{
"data": {
"simulateDeposit": {
"__typename": "Transfer"
}
},
"extensions": {
"requestId": "19070e66-2fd9-968a-94be-85c4836eae7b"
}
}

Find wire transfers

After a wire transfer is initiated, you can use the Highnote API to find incoming and outgoing wire transfers. The direction of a wire transfer is defined as follows:

  • Incoming: Money is coming into a Highnote financial account via wire transfer.
  • Outgoing: Money is leaving a Highnote financial account via wire transfer.

Incoming wire transfers

Use the following query to find an incoming wire transfer:

NodeWireTransfer
Query
query NodeWireTransfer($id: ID!) {
node(id: $id) {
__typename
... on WireTransfer {
id
amount {
value
currencyCode
}
createdAt
updatedAt
memo
type
status
financialAccount {
id
}
}
}
}
Variables
{
"id": "WIRE_TRANSFER_ID"
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
Result
{
"data": {
"node": {
"__typename": "WireTransfer",
"id": "WIRE_TRANSFER_ID",
"amount": {
"value": 2000,
"currencyCode": "USD"
},
"createdAt": "1970-01-01T00:01:00.000Z",
"updatedAt": "1970-01-01T00:02:00.000Z",
"memo": "This is an incoming wire transfer",
"type": "INCOMING_WIRE_TRANSFER",
"status": "COMPLETED",
"financialAccount": {
"id": "FINANCIAL_ACCOUNT_ID"
}
}
}
}

Outgoing wire transfers

Use the following query to find an outgoing wire transfer:

NodeWireTransfer
Query
query NodeWireTransfer($id: ID!) {
node(id: $id) {
__typename
... on WireTransfer {
id
amount {
value
currencyCode
}
createdAt
updatedAt
memo
type
status
financialAccount {
id
}
}
}
}
Variables
{
"id": "WIRE_TRANSFER_ID"
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
Result
{
"data": {
"node": {
"__typename": "WireTransfer",
"id": "WIRE_TRANSFER_ID",
"amount": {
"value": 2000,
"currencyCode": "USD"
},
"createdAt": "1970-01-01T00:01:00.000Z",
"updatedAt": "1970-01-01T00:02:00.000Z",
"memo": "This is an outgoing wire transfer",
"type": "OUTGOING_WIRE_TRANSFER",
"status": "COMPLETED",
"financialAccount": {
"id": "FINANCIAL_ACCOUNT_ID"
}
}
}
}

Find wire transfer reversals

Wire transfer reversals occur when a wire transfer has been reversed by Highnote's support team. In the event of a wire transfer reversal, a memo is left on the wire transfer to state the reason for the reversal. The direction of a wire transfer reversal is defined as follows:

  • Incoming: An incoming wire transfer has been reversed by the Highnote support team.
  • Outgoing: An outgoing wire transfer has been reversed by the Highnote support team.

Incoming wire transfer reversal

Use the following query to find an incoming wire transfer reversal:

NodeWireTransfer
Query
query NodeWireTransfer($id: ID!) {
node(id: $id) {
__typename
... on WireTransfer {
id
amount {
value
currencyCode
}
createdAt
updatedAt
memo
type
status
financialAccount {
id
}
}
}
}
Variables
{
"id": "WIRE_TRANSFER_REVERSAL_ID"
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
Result
{
"data": {
"node": {
"__typename": "WireTransfer",
"id": "WIRE_TRANSFER_REVERSAL_ID",
"amount": {
"value": 2000,
"currencyCode": "USD"
},
"createdAt": "1970-01-01T00:01:00.000Z",
"updatedAt": "1970-01-01T00:02:00.000Z",
"memo": "This is an incoming wire transfer reversal",
"type": "INCOMING_WIRE_TRANSFER_REVERSAL",
"status": "COMPLETED",
"financialAccount": {
"id": "FINANCIAL_ACCOUNT_ID"
}
}
}
}

Outgoing wire transfer reversal

Use the following query to find an outgoing wire transfer reversal:

NodeWireTransfer
Query
query NodeWireTransfer($id: ID!) {
node(id: $id) {
__typename
... on WireTransfer {
id
amount {
value
currencyCode
}
createdAt
updatedAt
memo
type
status
financialAccount {
id
}
}
}
}
Variables
{
"id": "WIRE_TRANSFER_REVERSAL_ID"
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
Result
{
"data": {
"node": {
"__typename": "WireTransfer",
"id": "WIRE_TRANSFER_REVERSAL_ID",
"amount": {
"value": 2000,
"currencyCode": "USD"
},
"createdAt": "1970-01-01T00:01:00.000Z",
"updatedAt": "1970-01-01T00:02:00.000Z",
"memo": "This is an outgoing wire transfer reversal",
"type": "OUTGOING_WIRE_TRANSFER_REVERSAL",
"status": "COMPLETED",
"financialAccount": {
"id": "FINANCIAL_ACCOUNT_ID"
}
}
}
}

Transfer funds from a financial account

Use the following mutation to transfer funds from a Highnote financial account to your product funding account. For input variables, use the following IDs:

  • toFinancialAccountId: Product funding account ID
  • fromFinancialAccountId: Account holder's payment card financial account ID
initiateTransferFromPaymentCardFinancialAccountToFundingFinancialAccount
Query
mutation initiateTransferFromPaymentCardFinancialAccountToFundingFinancialAccount(
$input: InitiateTransferFromPaymentCardFinancialAccountToFundingFinancialAccountInput!
) {
initiateTransferFromPaymentCardFinancialAccountToFundingFinancialAccount(
input: $input
) {
__typename
... on InterFinancialAccountTransfer {
id
status
statusReason
createdAt
updatedAt
memo
amount {
value
currencyCode
}
}
... on UserError {
errors {
code
errorPath
description
}
}
... on AccessDeniedError {
message
}
}
}
Variables
{
  "input": {
    "toFinancialAccountId": "PRODUCT_FUNDING_ACCOUNT_ID",
    "fromFinancialAccountId": "FINANCIAL_ACCOUNT_ID",
    "memo": "unload card",
    "amount": {
      "value": 5000,
      "currencyCode": "USD"
    }
  }
}
⚠️ Please login to execute queries. Visit the dashboard to authenticate.
Result
{
"data": {
"initiateTransferFromPaymentCardFinancialAccountToFundingFinancialAccount": {
"__typename": "InterFinancialAccountTransfer",
"id": "TRANSFER_ID",
"status": "COMPLETED",
"memo": "unload card",
"statusReason": null,
"createdAt": "2022-2-27T22:26:55.102Z",
"updatedAt": "2022-2-27T22:26:55.127Z",
"amount": {
"value": 5000,
"currencyCode": "USD"
}
}
}
}