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.






Bond 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`



Bond 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`



The type of transfer being initiated. Can be ach, card_to_card (see note at bottom of page), or load_funds.



ACH SEC code.

Conditionally required for ACH transfers


ACH 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.

Conditionally required for ACH transfers


ACH transfer network.
Either ach or same-day-ach

Conditionally required for ACH transfers


Freeform, alphanumeric description (maximum 10 characters) of the ACH transfer. Describes the purpose of the transfer and is displayed on the receiver's account statement.

Conditionally required for ACH transfers


Transfer amount as a decimal string with two digits of precision, for example 85.50.
Currently only USD is supported.



Optional string field for a memo on the transaction, for example Office supplies for Atlanta branch.
Only available for card-to-card transfers.



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)

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()
  .addHeader("Content-Type", "application/json")
  .addHeader("Identity", "YOUR-IDENTITY")
  .addHeader("Authorization", "YOUR-AUTHORIZATION")

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"



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

Did this page help you?