Loading funds

How to load funds onto a card account.

A load_funds transfer is instantaneous and therefore cannot be canceled, modified, or reversed after you have successfully initiated it. All transfer results can be found in the ledger, (for details, see Retrieving transactions and histories.

To load funds, use the POST transfers operation and provide parameters as shown in the table below.

ParameterTypeDescription
origination_account_id
required
stringBond account UUID (36 characters) for the originating account, for example 6f0e7dcb-6073-42df-bf02-ce71bd5fac3b.
Note, for type:
  • ach use the card_account_id
  • card-to-card use the card_account_id
  • load-funds do not use the origination_account_id
account_id
required
stringBond account UUID (36 characters) for the transfer destination account, for example 6f0e7dcb-6073-42df-bf02-ce71bd5fac3b.
Note, for type:
  • ach use the linked_account_id
  • card-to-card use the card_account_id
  • load-funds use the card_account_id
type
required
stringThe type of transfer being initiated. Can be ach, card_to_card (see note at bottom of page), or load_funds.
ach_class_codestringACH SEC code.
ach_direction
Conditionally required for ACH transfers
stringACH transfer direction of the money movement. Possible values are debit or credit.

The direction is in reference to the funds at the receiving account. An ACH debit "pulls" funds to the originating account, debiting the receiver. An ACH credit "pushes" funds from the originator to the receiver, crediting the receiver.
ach_network
Conditionally required for ACH transfers
stringACH transfer network.
Either ach or same-day-ach
ach_description
Conditionally required for ACH transfers
stringFreeform, alphanumeric description (maximum 10 characters) of the ACH transfer. Describes the purpose of the transfer and is displayed on the receiver's account statement.
amount
Conditionally required for ACH transfers
stringTransfer amount as a decimal string with two digits of precision, for example 85.50.
Currently only USD is supported.
memostringOptional string field for a memo on the transaction, for example Office supplies for Atlanta branch.
Only available for card-to-card transfers.

📘

Note

The load_funds transfer type does not require the origination_account_id. Instead, the card specified by the account_id has the funds loaded to it from the funding source of the card program.

An example of a load_fund transfer request for $75.00 is shown below.

curl --request POST \
     --url https://sandbox.bond.tech/api/v0/transfers \
     --header 'Authorization: YOUR-AUTHORIZATION' \
     --header 'Content-Type: application/json' \
     --header 'Identity: YOUR-IDENTITY' \
     --data '
{
     "origination_account_id": "6f0e7dcb-6073-42df-bf02-ce71bd5fac3b",
     "type": "load-funds",
     "account_id": "225641a5-f6e4-4ae1-b5e0-326e6b98842e",
     "ach_class_code": "CIE",
     "ach_direction": "debit",
     "ach_network": "same-day-ach",
     "ach_description": "Petty cash",
     "amount": "75.00",
     "memo": "Office supplies for Atlanta branch"
}
require 'uri'
require 'net/http'
require 'openssl'

url = URI("https://sandbox.bond.tech/api/v0/transfers")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request["Identity"] = 'YOUR-IDENTITY'
request["Authorization"] = 'YOUR-AUTHORIZATION'
request.body = "{\"origination_account_id\":\"6f0e7dcb-6073-42df-bf02-ce71bd5fac3b\",\"type\":\"load-funds\",\"account_id\":\"225641a5-f6e4-4ae1-b5e0-326e6b98842e\",\"ach_class_code\":\"CIE\",\"ach_direction\":\"debit\",\"ach_network\":\"same-day-ach\",\"ach_description\":\"Petty cash\",\"amount\":\"75.00\",\"memo\":\"Office supplies for Atlanta branch\"}"

response = http.request(request)
puts response.read_body
const options = {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Identity: 'YOUR-IDENTITY',
    Authorization: 'YOUR-AUTHORIZATION'
  },
  body: JSON.stringify({
    origination_account_id: '6f0e7dcb-6073-42df-bf02-ce71bd5fac3b',
    type: 'load-funds',
    account_id: '225641a5-f6e4-4ae1-b5e0-326e6b98842e',
    ach_class_code: 'CIE',
    ach_direction: 'debit',
    ach_network: 'same-day-ach',
    ach_description: 'Petty cash',
    amount: '75.00',
    memo: 'Office supplies for Atlanta branch'
  })
};

fetch('https://sandbox.bond.tech/api/v0/transfers', options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
import requests

url = "https://sandbox.bond.tech/api/v0/transfers"

payload = {
    "origination_account_id": "6f0e7dcb-6073-42df-bf02-ce71bd5fac3b",
    "type": "load-funds",
    "account_id": "225641a5-f6e4-4ae1-b5e0-326e6b98842e",
    "ach_class_code": "CIE",
    "ach_direction": "debit",
    "ach_network": "same-day-ach",
    "ach_description": "Petty cash",
    "amount": "75.00",
    "memo": "Office supplies for Atlanta branch"
}
headers = {
    "Content-Type": "application/json",
    "Identity": "YOUR-IDENTITY",
    "Authorization": "YOUR-AUTHORIZATION"
}

response = requests.request("POST", url, json=payload, headers=headers)

print(response.text)
var client = new RestClient("https://sandbox.bond.tech/api/v0/transfers");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Identity", "YOUR-IDENTITY");
request.AddHeader("Authorization", "YOUR-AUTHORIZATION");
request.AddParameter("application/json", "{\"origination_account_id\":\"6f0e7dcb-6073-42df-bf02-ce71bd5fac3b\",\"type\":\"load-funds\",\"account_id\":\"225641a5-f6e4-4ae1-b5e0-326e6b98842e\",\"ach_class_code\":\"CIE\",\"ach_direction\":\"debit\",\"ach_network\":\"same-day-ach\",\"ach_description\":\"Petty cash\",\"amount\":\"75.00\",\"memo\":\"Office supplies for Atlanta branch\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"origination_account_id\":\"6f0e7dcb-6073-42df-bf02-ce71bd5fac3b\",\"type\":\"load-funds\",\"account_id\":\"225641a5-f6e4-4ae1-b5e0-326e6b98842e\",\"ach_class_code\":\"CIE\",\"ach_direction\":\"debit\",\"ach_network\":\"same-day-ach\",\"ach_description\":\"Petty cash\",\"amount\":\"75.00\",\"memo\":\"Office supplies for Atlanta branch\"}");
Request request = new Request.Builder()
  .url("https://sandbox.bond.tech/api/v0/transfers")
  .post(body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Identity", "YOUR-IDENTITY")
  .addHeader("Authorization", "YOUR-AUTHORIZATION")
  .build();

Response response = client.newCall(request).execute();

A successful request results in a transfer with a completed status, represented by a transfer_id.

Given the request example above, the successful 200 response is shown below. Note that the transfer amount is expressed as a decimal string in cents.

{
        "date_created": "2020-10-09T17:14:09.686688",
        "transfer_id": "4ead6cdc-77eb-45fa-9959-3f166385a60a",
        "origination_account_id": "6f0e7dcb-6073-42df-bf02-ce71bd5fac3b",
        "account_id": "225641a5-f6e4-4ae1-b5e0-326e6b98842e",
        "type": "load-funds",
        "ach_direction": "debit",
        "ach_class_code": "CIE",
        "ach_network": "same_day_ach",
        "ach_description": "Petty cash",
        "status": "completed",
        "ach_return_code": null,
        "failure_reason": null,
        "amount_in_cents": "7500",
        "iso_currency_code": "USD"
}

📘

Note

Card-to-card transfers are not available for credit cards.

For a complete specification and interactive examples, see Create a transfer in the Bond API Reference.

ACH Standard Entry Class codes

The following are valid for ach_class_code:

  • ARC—Accounts Receivable Conversion
  • CBR—Cross Border Entry (corporate)
  • CCD—Cash Concentration or Disbursement
  • CIE—Customer Initiated Entry
  • COR—Notification of Change (NOC) or Refused NOC
  • CTX—Corporate Trade Exchange
  • IAT—International ACH Transactions
  • MTE—Machine Transfer Entry
  • PBR—Cross Border Entry (consumer)
  • POP—Point-of-Purchase Entry
  • POS—Point-of-Sale Entry
  • PPD—Prearranged Payment and Depoit
  • RCK—Represented Check
  • TEL—Telephone-Initiated Entry
  • WEB—Internet-Initiated Entry