curl --request GET \
--url https://api.bridge.xyz/v0/customers/{customerID}/virtual_accounts/{virtualAccountID}/history \
--header 'Api-Key: <api-key>'import requests
url = "https://api.bridge.xyz/v0/customers/{customerID}/virtual_accounts/{virtualAccountID}/history"
headers = {"Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'Api-Key': '<api-key>'}};
fetch('https://api.bridge.xyz/v0/customers/{customerID}/virtual_accounts/{virtualAccountID}/history', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.bridge.xyz/v0/customers/{customerID}/virtual_accounts/{virtualAccountID}/history",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.bridge.xyz/v0/customers/{customerID}/virtual_accounts/{virtualAccountID}/history"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.bridge.xyz/v0/customers/{customerID}/virtual_accounts/{virtualAccountID}/history")
.header("Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bridge.xyz/v0/customers/{customerID}/virtual_accounts/{virtualAccountID}/history")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"count": 3,
"data": [
{
"id": "va_event_456",
"customer_id": "cust_alice",
"virtual_account_id": "va_123",
"type": "payment_submitted",
"amount": "120.0",
"currency": "usd",
"developer_fee_amount": "1.25",
"exchange_fee_amount": "2.2",
"subtotal_amount": "120.0",
"gas_fee": "0.0",
"deposit_id": "deposit_123",
"created_at": "2024-01-01T00:00:00.000Z",
"destination_tx_hash": "0xdeadbeef",
"source": {
"payment_rail": "ach_push",
"description": "ACH description",
"sender_name": "The name of the business or individual who initiated the ACH",
"sender_bank_routing_number": "The routing number of the entity that initiated this ACH transaction",
"trace_number": "The unique, a 15-digit number associated with each ACH transaction that is used for tracking and reconciling transactions"
}
},
{
"id": "va_event_123",
"customer_id": "cust_alice",
"virtual_account_id": "va_123",
"type": "funds_received",
"amount": "123.45",
"currency": "usd",
"developer_fee_amount": "0.0",
"exchange_fee_amount": "0.0",
"subtotal_amount": "123.45",
"gas_fee": "0.0",
"deposit_id": "deposit_123",
"created_at": "2024-01-01T00:00:00.000Z",
"source": {
"payment_rail": "ach_push",
"description": "ACH description",
"sender_name": "The name of the business or individual who initiated the ACH",
"sender_bank_routing_number": "The routing number of the entity that initiated this ACH transaction",
"trace_number": "The unique, a 15-digit number associated with each ACH transaction that is used for tracking and reconciling transactions"
}
},
{
"id": "va_event_789",
"customer_id": "cust_alice",
"virtual_account_id": "va_456",
"type": "payment_processed",
"amount": "123.45",
"currency": "usdc",
"developer_fee_amount": "0.0",
"exchange_fee_amount": "0.0",
"subtotal_amount": "123.45",
"gas_fee": "0.0",
"deposit_id": "deposit_789",
"created_at": "2025-06-01T00:00:00.000Z",
"source": {
"payment_rail": "spei",
"description": "Receiving CLABE | clave de rastreo | SPEI reference",
"tracking_number": "The unique tracking number or clave de rastreo for this SPEI transaction",
"sender_name": "The name of the business or individual who initiated the SPEI credit",
"clabe": "646180546700000164",
"reference": "The reference or concepto de pago for this SPEI transaction"
}
}
]
}Virtual Account Activity
History of activity for a Virtual Account
curl --request GET \
--url https://api.bridge.xyz/v0/customers/{customerID}/virtual_accounts/{virtualAccountID}/history \
--header 'Api-Key: <api-key>'import requests
url = "https://api.bridge.xyz/v0/customers/{customerID}/virtual_accounts/{virtualAccountID}/history"
headers = {"Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'Api-Key': '<api-key>'}};
fetch('https://api.bridge.xyz/v0/customers/{customerID}/virtual_accounts/{virtualAccountID}/history', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.bridge.xyz/v0/customers/{customerID}/virtual_accounts/{virtualAccountID}/history",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.bridge.xyz/v0/customers/{customerID}/virtual_accounts/{virtualAccountID}/history"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.bridge.xyz/v0/customers/{customerID}/virtual_accounts/{virtualAccountID}/history")
.header("Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.bridge.xyz/v0/customers/{customerID}/virtual_accounts/{virtualAccountID}/history")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"count": 3,
"data": [
{
"id": "va_event_456",
"customer_id": "cust_alice",
"virtual_account_id": "va_123",
"type": "payment_submitted",
"amount": "120.0",
"currency": "usd",
"developer_fee_amount": "1.25",
"exchange_fee_amount": "2.2",
"subtotal_amount": "120.0",
"gas_fee": "0.0",
"deposit_id": "deposit_123",
"created_at": "2024-01-01T00:00:00.000Z",
"destination_tx_hash": "0xdeadbeef",
"source": {
"payment_rail": "ach_push",
"description": "ACH description",
"sender_name": "The name of the business or individual who initiated the ACH",
"sender_bank_routing_number": "The routing number of the entity that initiated this ACH transaction",
"trace_number": "The unique, a 15-digit number associated with each ACH transaction that is used for tracking and reconciling transactions"
}
},
{
"id": "va_event_123",
"customer_id": "cust_alice",
"virtual_account_id": "va_123",
"type": "funds_received",
"amount": "123.45",
"currency": "usd",
"developer_fee_amount": "0.0",
"exchange_fee_amount": "0.0",
"subtotal_amount": "123.45",
"gas_fee": "0.0",
"deposit_id": "deposit_123",
"created_at": "2024-01-01T00:00:00.000Z",
"source": {
"payment_rail": "ach_push",
"description": "ACH description",
"sender_name": "The name of the business or individual who initiated the ACH",
"sender_bank_routing_number": "The routing number of the entity that initiated this ACH transaction",
"trace_number": "The unique, a 15-digit number associated with each ACH transaction that is used for tracking and reconciling transactions"
}
},
{
"id": "va_event_789",
"customer_id": "cust_alice",
"virtual_account_id": "va_456",
"type": "payment_processed",
"amount": "123.45",
"currency": "usdc",
"developer_fee_amount": "0.0",
"exchange_fee_amount": "0.0",
"subtotal_amount": "123.45",
"gas_fee": "0.0",
"deposit_id": "deposit_789",
"created_at": "2025-06-01T00:00:00.000Z",
"source": {
"payment_rail": "spei",
"description": "Receiving CLABE | clave de rastreo | SPEI reference",
"tracking_number": "The unique tracking number or clave de rastreo for this SPEI transaction",
"sender_name": "The name of the business or individual who initiated the SPEI credit",
"clabe": "646180546700000164",
"reference": "The reference or concepto de pago for this SPEI transaction"
}
}
]
}Authorizations
Path Parameters
A UUID that uniquely identifies a resource
1 - 42[a-z0-9]*A UUID that uniquely identifies a resource
1 - 42[a-z0-9]*Query Parameters
The deposit id associated with the events. Cannot be passed if deposit_ids is also passed
The deposit ids associated with the events. Pass a list of deposit ids like "deposit_ids[]=id1&deposit_ids[]=id2". Cannot be passed if deposit_id is also passed
The hash of the transaction
The number of items to return (min 1, default 10, max 100)
1 <= x <= 100This is an event id. If this is specified, the next page that starts with an event right AFTER the specified event id on the event timeline, which is always ordered from the newest to the oldest by creation time, will be returned. This also implies that events older than the specified event id will be returned (shouldn't be set if ending_before is set)
This is an event id. If this is specified, the previous page that ends with an event right BEFORE the specified event id on the event timeline, which is always ordered from the newest to the oldest by creation time, will be returned. This also implies that events newer than the specified event id will be returned (shouldn't be set if starting_after is set)
Filter history by event type
funds_received, payment_submitted, payment_processed, in_review, refund, refund_in_flight, refund_failed, microdeposit, account_update, deactivation, activation Was this page helpful?