Making a card-to-card transfer

How to make card-to-card transfers.

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

▶ Run in Postman

ParameterTypeDescription
origination_account_id
required
stringBond account UUID (36 characters) for the originating account, for example 6f0e7dcb-6073-42df-bf02-ce71bd5fac3b.

  • card-to-card use the card_account_id
  • account_id
    required
    stringBond account UUID (36 characters) for the transfer destination account, for example 6f0e7dcb-6073-42df-bf02-ce71bd5fac3b.

  • card-to-card use the card_account_id
  • type
    required
    stringThe type of transfer being initiated. Either ach or card_to_card
    amount
    required
    stringTransfer 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 'Accept: application/json' \
         --header 'Authorization: Z5EJLaFRxcFVuYmxRew9CKWZfz/WOovhMiMfXSOWpcX3atPmnfj8IvuutnpqJvgm' \
         --header 'Content-Type: application/json' \
         --header 'Identity: 4bc611ab-7dfb-43f8-950a-eac7a4f6a05f' \
         --data '
    {
         "amount": "175.00",
         "origination_account_id": "6f0e7dcb-6073-42df-bf02-ce71bd5fac3b",
         "account_id": "225641a5-f6e4-4ae1-b5e0-326e6b98842e"
    }
    '
    
    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["Accept"] = 'application/json'
    request["Content-Type"] = 'application/json'
    request["Authorization"] = 'YOUR-AUTHORIZATION'
    request.body = "{\"type\":\"card-to-card\",\"amount\":\"175.00\",
    \"origination_account_id\":\"6f0e7dcb-6073-42df-bf02-ce71bd5fac3b\",
    \"account_id\":\"225641a5-f6e4-4ae1-b5e0-326e6b98842e\"}"
    
    response = http.request(request)
    puts response.read_body
    
    const options = {
      method: 'POST',
      headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
        Authorization: 'YOUR-AUTHORIZATION'
      },
      body: JSON.stringify({type: 'card-to-card', 
                            origination_account_id: "6f0e7dcb-6073-42df-bf02-ce71bd5fac3b",
                            account_id: "225641a5-f6e4-4ae1-b5e0-326e6b98842e", 
                            amount: '175.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 = {
        "type": "card-to-card",
      	"origination_account_id": "6f0e7dcb-6073-42df-bf02-ce71bd5fac3b",
        "account_id": "225641a5-f6e4-4ae1-b5e0-326e6b98842e",
        "amount": "175.00"
    }
    headers = {
        "Accept": "application/json",
        "Content-Type": "application/json",
        "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("Accept", "application/json");
    request.AddHeader("Content-Type", "application/json");
    request.AddHeader("Authorization", "YOUR-AUTHORIZATION");
    request.AddParameter("application/json", "{\"type\":\"card-to-card\",\"amount\":\"175.00\",\"origination_account_id\":\"6f0e7dcb-6073-42df-bf02-ce71bd5fac3b\",\"account_id\":\"225641a5-f6e4-4ae1-b5e0-326e6b98842e\"}", ParameterType.RequestBody);
    IRestResponse response = client.Execute(request);
    
    OkHttpClient client = new OkHttpClient();
    
    MediaType mediaType = MediaType.parse("application/json");
    RequestBody body = RequestBody.create(mediaType, "{\"type\":\"card-to-card\",\"amount\":\"175.00\",\"origination_account_id\":\"6f0e7dcb-6073-42df-bf02-ce71bd5fac3b\",\"account_id\":\"225641a5-f6e4-4ae1-b5e0-326e6b98842e\"}");
    Request request = new Request.Builder()
      .url("https://sandbox.bond.tech/api/v0/transfers")
      .post(body)
      .addHeader("Accept", "application/json")
      .addHeader("Content-Type", "application/json")
      .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": "pending",
      "failure_reason": null,
      "amount_in_cents": "17500",
      "iso_currency_code": "USD"
    }
    

    A successful request results in a completed status. The failure_reason field in the response payload will indicate a failure reasons in the event the transfer is not successfully completed.

    📘

    Note

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

    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.


    Next Steps