Bond Studio

The Bond Developer Hub

Welcome to the Bond Studio Developer Hub.

Get up and running fast with documentation, guides, and support.

Let's get started!

Get Started    API Reference

Card-to-card transfers

📘

Note

Card-to-card transfers are instantaneous, so they cannot be cancelled, modified, or reversed after successful creation.

To execute an internal transfer, use the POST /transfers operation and provide the body parameters as shown in the table below.

Parameter

Type

Description

origination_account_id
required

String

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`

account_id
required

String

Bond account UUID (36 characters) for the transfer destination account, for example 6f0e7dcb-6073-42df-bf02-ce71bd5fac3b.
Note, for type=

  • `ach` use the `external_account_id`
  • `card-to-card` use the `card_account_id`

type
required

String

The type of transfer being initiated. Possible values are:

  • ach
  • card_to_card

ach_class_code

String

ACH SEC code.

ach_direction
Conditionally required for ACH transfers

String

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.

ach_network
Conditionally required for ACH transfers

String

ACH transfer network.
Possible values are ach and same-day-ach.

ach_description
Conditionally required for ACH transfers

String

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.

amount
Conditionally required for ACH transfers

String

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

An example of a request to transfer $10.00 internally 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",
     "account_id": "225641a5-f6e4-4ae1-b5e0-326e6b98842e",
     "type": "card-to-card",
     "ach_class_code": "CIE",
     "ach_direction": "debit",
     "ach_network": "same-day-ach",
     "ach_description": "Repayment",
     "amount": "10.00"
}
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\",\"account_id\":\"225641a5-f6e4-4ae1-b5e0-326e6b98842e\",\"type\":\"card-to-card\",\"ach_class_code\":\"CIE\",\"ach_direction\":\"debit\",\"ach_network\":\"same-day-ach\",\"ach_description\":\"Repayment\",\"amount\":\"10.00\"}"

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',
    account_id: '225641a5-f6e4-4ae1-b5e0-326e6b98842e',
    type: 'card-to-card',
    ach_class_code: 'CIE',
    ach_direction: 'debit',
    ach_network: 'same-day-ach',
    ach_description: 'Repayment',
    amount: '10.00'
  })
};

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",
    "account_id": "225641a5-f6e4-4ae1-b5e0-326e6b98842e",
    "type": "card-to-card",
    "ach_class_code": "CIE",
    "ach_direction": "debit",
    "ach_network": "same-day-ach",
    "ach_description": "Repayment",
    "amount": "10.00"
}
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\",\"account_id\":\"225641a5-f6e4-4ae1-b5e0-326e6b98842e\",\"type\":\"card-to-card\",\"ach_class_code\":\"CIE\",\"ach_direction\":\"debit\",\"ach_network\":\"same-day-ach\",\"ach_description\":\"Repayment\",\"amount\":\"10.00\"}", 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\",\"account_id\":\"225641a5-f6e4-4ae1-b5e0-326e6b98842e\",\"type\":\"card-to-card\",\"ach_class_code\":\"CIE\",\"ach_direction\":\"debit\",\"ach_network\":\"same-day-ach\",\"ach_description\":\"Repayment\",\"amount\":\"10.00\"}");
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();

The response shown below includes the unique transfer_id representing the transfer. 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": "card-to-card",
    "status": "posted",
    "amount_in_cents": "1000",
    "iso_currency_code": "USD"
}

A successful request results in a posted status.

For details related to ACH transfers, see ACH transfers.

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

Updated 9 days ago


Next Steps

ACH transfers

Card-to-card transfers


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.