Overview
Applications

Open and update various types of accounts.

ACH Profiles

Create, update, and verify account ACH profiles.

Transactions

Manage deposit and withdrawal transactions on an account.

Documents

Fetch statements, tax documents and trade confirmations for customers.

Webhooks

Manage and test evented webhooks.

Virtual Accounts

Create and update paper trading accounts.

ACAT Transfers

Manage ACAT Transfers on an account.

Reference

Examples, response types, property details and explanations.

Create an ACH Profile

  • Available in Paper Trading
  • Available in Production
  • Available to Advisors
  • Supported

Submit an ACH profile for creation. ACH profiles are verified using micro deposits to the account. Once submitted a call to the ACH profile verification endpoint is necessary for the customer to verify the micro deposit amounts.

POST

Headers

Header Required Values/Example Default
Authorization Required Basic XXX

Parameters

Parameter Type Param Type Required Values/Example Default
account_id Path String Required
Account the ACH relationship belongs to.
bankAccountOwnerName Body String Required Jane Doe
Name on the bank account
bankAccountType Body String Required checking
One of: checking or savings
bankAccount Body String Required ********3123
Bank account number.
bankRoutingNumber Body String Required 253177049
Routing number.
method Body String Required MICRO_DEPOSIT
One of: MICRO_DEPOSIT, PLAID
ipAddress Body String Required 127.123.456.789
IP address of the account holder who submitted this request
nickname Body String Required Bank of America Checking
Nickname for this ACH relationship
plaidAccessToken Body String Optional access-production-123-674b-4f1e-a365-7824a5d5559b921
Plaid access token used to fetch Auth and Identity information, Required for method PLAID
plaidAccountId Body String Optional 9Qvb8K843eo76jnPxH5g8kqjLVlCV1ZZgE
Plaid account Id for the ACH profile, Required for method PLAID
meta Body String Optional {}
Required for method PLAID

Code Example

curl -X POST "https://api.tradier.com/v2/accounts/{account_id}/achprofiles" \
     -H 'Authorization: Basic <TOKEN>' \
     -H 'Accept: application/json' \
     -H 'Content-Type: application/json' \
     -d '{ "bankAccountOwnerName": "Jane Doe","bankAccountType": "checking","bankAccount": "********3123","bankRoutingNumber": "253177049","method": "MICRO_DEPOSIT","ipAddress": "127.123.456.789","nickname": "Bank of America Checking","plaidAccessToken": "access-production-123-674b-4f1e-a365-7824a5d5559b921","plaidAccountId": "9Qvb8K843eo76jnPxH5g8kqjLVlCV1ZZgE","meta": "{}" }'
// Version 1.8.0_31
import static org.apache.http.entity.ContentType.APPLICATION_JSON;
import java.io.IOException;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.methods.RequestBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;

public class Main {
  public static void main(String[] args) throws IOException {
    final ObjectNode node = new ObjectMapper().createObjectNode();
    node.put("bankAccountOwnerName", "Jane Doe");
    node.put("bankAccountType", "checking");
    node.put("bankAccount", "********3123");
    node.put("bankRoutingNumber", "253177049");
    node.put("method", "MICRO_DEPOSIT");
    node.put("ipAddress", "127.123.456.789");
    node.put("nickname", "Bank of America Checking");
    node.put("plaidAccessToken", "access-production-123-674b-4f1e-a365-7824a5d5559b921");
    node.put("plaidAccountId", "9Qvb8K843eo76jnPxH5g8kqjLVlCV1ZZgE");
    node.put("meta", "{}");
    final HttpUriRequest request = RequestBuilder
        .post("https://api.tradier.com/v2/accounts/{account_id}/achprofiles")
        .addHeader("Authorization", "Basic <TOKEN>")
        .addHeader("Accept", "application/json")
        .setEntity(new StringEntity(node.toString(), APPLICATION_JSON))
        .build();

    final HttpResponse response = HttpClientBuilder.create().build().execute(request);
    final String jsonString = EntityUtils.toString(response.getEntity());
    final JsonNode json = new ObjectMapper().readTree(jsonString);

    System.out.println(response.getStatusLine().getStatusCode());
    System.out.println(json);
  }
}
# Version 2.5.0p0
require 'uri'
require 'net/http'

url = URI("https://api.tradier.com/v2/accounts/{account_id}/achprofiles")

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

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <TOKEN>'
request["Accept"] = 'application/json'
request["Content-Type"] = 'application/json'
request.body = '{ "bankAccountOwnerName": "Jane Doe","bankAccountType": "checking","bankAccount": "********3123","bankRoutingNumber": "253177049","method": "MICRO_DEPOSIT","ipAddress": "127.123.456.789","nickname": "Bank of America Checking","plaidAccessToken": "access-production-123-674b-4f1e-a365-7824a5d5559b921","plaidAccountId": "9Qvb8K843eo76jnPxH5g8kqjLVlCV1ZZgE","meta": "{}" }'

response = http.request(request)
puts response.code
puts response.read_body
// Version go1.12
package main

import (
    "fmt"
    "net/http"
    "net/url"
    "io/ioutil"
    "log"
    "bytes"
)

func main() {
    apiUrl := "https://api.tradier.com/v2/accounts/{account_id}/achprofiles"
    u, _ := url.ParseRequestURI(apiUrl)
    urlStr := u.String()
    var jsonStr = []byte(`{ "bankAccountOwnerName": "Jane Doe","bankAccountType": "checking","bankAccount": "********3123","bankRoutingNumber": "253177049","method": "MICRO_DEPOSIT","ipAddress": "127.123.456.789","nickname": "Bank of America Checking","plaidAccessToken": "access-production-123-674b-4f1e-a365-7824a5d5559b921","plaidAccountId": "9Qvb8K843eo76jnPxH5g8kqjLVlCV1ZZgE","meta": "{}" }`)
    client := &http.Client{}
    r, _ := http.NewRequest("POST", urlStr, bytes.NewBuffer(jsonStr))
    r.Header.Add("Authorization", "Basic <TOKEN>")
    r.Header.Add("Accept", "application/json")
    r.Header.Add("Content-Type", "application/json")

    resp, _ := client.Do(r)
    responseData, err := ioutil.ReadAll(resp.Body)

    if err != nil {
      log.Fatal(err)
    }

    fmt.Println(resp.Status)
    fmt.Println(string(responseData))
}
// Version 4.6.2.0
using System;
using System.Net;
using System.IO;
using System.Text;

public class MainClass {
  public static void Main (string[] args) {
    var request = (HttpWebRequest)WebRequest.Create("https://api.tradier.com/v2/accounts/{account_id}/achprofiles");
    var requestData = "{ \"bankAccountOwnerName\": \"Jane Doe\",\"bankAccountType\": \"checking\",\"bankAccount\": \"********3123\",\"bankRoutingNumber\": \"253177049\",\"method\": \"MICRO_DEPOSIT\",\"ipAddress\": \"127.123.456.789\",\"nickname\": \"Bank of America Checking\",\"plaidAccessToken\": \"access-production-123-674b-4f1e-a365-7824a5d5559b921\",\"plaidAccountId\": \"9Qvb8K843eo76jnPxH5g8kqjLVlCV1ZZgE\",\"meta\": \"{}\" }";
    var data = Encoding.ASCII.GetBytes(requestData);
    
    request.Method = "POST";
    request.Headers["Authorization"] = "Basic <TOKEN>";
    request.Accept = "application/json";
    request.ContentType = "application/json";
    request.ContentLength = data.Length;

    using (var stream = request.GetRequestStream())
     {
         stream.Write(data, 0, data.Length);
     }

    var response = (HttpWebResponse)request.GetResponse();

    Console.WriteLine (response.StatusCode);
    var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
    Console.WriteLine (responseString);
  }
}
// Version 10.15.2
const request = require('request');

request({
    method: 'post',
    url: 'https://api.tradier.com/v2/accounts/{account_id}/achprofiles',
    json: {
     'bankAccountOwnerName': 'Jane Doe',
     'bankAccountType': 'checking',
     'bankAccount': '********3123',
     'bankRoutingNumber': '253177049',
     'method': 'MICRO_DEPOSIT',
     'ipAddress': '127.123.456.789',
     'nickname': 'Bank of America Checking',
     'plaidAccessToken': 'access-production-123-674b-4f1e-a365-7824a5d5559b921',
     'plaidAccountId': '9Qvb8K843eo76jnPxH5g8kqjLVlCV1ZZgE',
     'meta': '{}'
    },
    headers: {
      'Authorization': 'Basic <TOKEN>',
      'Accept': 'application/json'
    }
  }, (error, response, body) => {
      console.log(response.statusCode);
      console.log(body);
  });
# Version 3.6.1
import requests

response = requests.post('https://api.tradier.com/v2/accounts/{account_id}/achprofiles',
    json={'bankAccountOwnerName': 'Jane Doe', 'bankAccountType': 'checking', 'bankAccount': '********3123', 'bankRoutingNumber': '253177049', 'method': 'MICRO_DEPOSIT', 'ipAddress': '127.123.456.789', 'nickname': 'Bank of America Checking', 'plaidAccessToken': 'access-production-123-674b-4f1e-a365-7824a5d5559b921', 'plaidAccountId': '9Qvb8K843eo76jnPxH5g8kqjLVlCV1ZZgE', 'meta': '{}'},
    headers={'Authorization': 'Basic <TOKEN>', 'Accept': 'application/json'}
)
json_response = response.json()
print(response.status_code)
print(json_response)
<?php
// Version 7.2.17-0ubuntu0.18.04.1
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.tradier.com/v2/accounts/{account_id}/achprofiles');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "bankAccountOwnerName": "Jane Doe","bankAccountType": "checking","bankAccount": "********3123","bankRoutingNumber": "253177049","method": "MICRO_DEPOSIT","ipAddress": "127.123.456.789","nickname": "Bank of America Checking","plaidAccessToken": "access-production-123-674b-4f1e-a365-7824a5d5559b921","plaidAccountId": "9Qvb8K843eo76jnPxH5g8kqjLVlCV1ZZgE","meta": "{}" }');
curl_setopt($ch, CURLOPT_POST, 1);

$headers = array();
$headers[] = 'Authorization: Basic <TOKEN>';
$headers[] = 'Accept: application/json';
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
echo $http_code;
echo $result;

Response

Response Definition

{
    "id": 4,
    "status": "PENDING",
    "approvalMethod": "MICRO_DEPOSIT",
    "bankRoutingNumber": "253177049",
    "bankAccount": "********3123",
    "bankAccountType": "checking",
    "bankAccountOwnerName": "Jane Doe",
    "nickname": "Bank of America Checking",
    "ipAddress": "127.123.456.789",
    "createdAt": "2015-03-20 20:14:34",
    "updatedAt": "2015-05-21 15:17:37",
    "achRelationshipId": "588a58c4e4b00a129b1d5dd6"
}