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.

Test Transaction Hook

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

By making a request to this endpoint, we will send a fake web hook request to all registered URLs using the parameters you send. This allows developers to integration test web hook functionality without creating applications, ACH profiles, or transactions.

{
  "type": "info",
  "body": "Any data sent in this payload can be fake."
}
POST

Headers

Header Required Values/Example Default
Authorization Required Basic XXX

Parameters

Parameter Type Param Type Required Values/Example Default
transactionId Body Int Required 1234
A transaction Id
clearingAccount Body String Required 6YA01234
A clearing account
type Body String Required TRANSACTION
The webhook type
action Body String Required COMPLETED
One of: SUBMITTED, APPROVED, COMPLETED
branchId Body Int Required 1
A branch Id
email Body String Required example@email.com
An email address
amount Body Decimal Required 500.0
A transaction amount
direction Body String Required DEPOSIT
One of: DEPOSIT, WITHDRAWAL

Code Example

curl -X POST "https://api.tradier.com/v2/webhooks/transaction" \
     -H 'Authorization: Basic <TOKEN>' \
     -H 'Accept: application/json' \
     -H 'Content-Type: application/json' \
     -d '{ "transactionId": 1234,"clearingAccount": "6YA01234","type": "TRANSACTION","action": "COMPLETED","branchId": 1,"email": "example@email.com","amount": 500.0,"direction": "DEPOSIT" }'
// 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("transactionId", 1234);
    node.put("clearingAccount", "6YA01234");
    node.put("type", "TRANSACTION");
    node.put("action", "COMPLETED");
    node.put("branchId", 1);
    node.put("email", "example@email.com");
    node.put("amount", 500.0);
    node.put("direction", "DEPOSIT");
    final HttpUriRequest request = RequestBuilder
        .post("https://api.tradier.com/v2/webhooks/transaction")
        .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/webhooks/transaction")

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 = '{ "transactionId": 1234,"clearingAccount": "6YA01234","type": "TRANSACTION","action": "COMPLETED","branchId": 1,"email": "example@email.com","amount": 500.0,"direction": "DEPOSIT" }'

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/webhooks/transaction"
    u, _ := url.ParseRequestURI(apiUrl)
    urlStr := u.String()
    var jsonStr = []byte(`{ "transactionId": 1234,"clearingAccount": "6YA01234","type": "TRANSACTION","action": "COMPLETED","branchId": 1,"email": "example@email.com","amount": 500.0,"direction": "DEPOSIT" }`)
    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/webhooks/transaction");
    var requestData = "{ \"transactionId\": 1234,\"clearingAccount\": \"6YA01234\",\"type\": \"TRANSACTION\",\"action\": \"COMPLETED\",\"branchId\": 1,\"email\": \"example@email.com\",\"amount\": 500.0,\"direction\": \"DEPOSIT\" }";
    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/webhooks/transaction',
    json: {
     'transactionId': 1234,
     'clearingAccount': '6YA01234',
     'type': 'TRANSACTION',
     'action': 'COMPLETED',
     'branchId': 1,
     'email': 'example@email.com',
     'amount': 500.0,
     'direction': 'DEPOSIT'
    },
    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/webhooks/transaction',
    json={'transactionId': 1234, 'clearingAccount': '6YA01234', 'type': 'TRANSACTION', 'action': 'COMPLETED', 'branchId': 1, 'email': 'example@email.com', 'amount': 500.0, 'direction': 'DEPOSIT'},
    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/webhooks/transaction');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{ "transactionId": 1234,"clearingAccount": "6YA01234","type": "TRANSACTION","action": "COMPLETED","branchId": 1,"email": "example@email.com","amount": 500.0,"direction": "DEPOSIT" }');
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