Transactions
Retrieve a full Vobiz transaction ledger - credits, debits, call charges, DID rentals, and invoice history with per-day totals and reference-type breakdowns.
curl --request GET \
--url https://api.vobiz.ai/api/v1/Account/{auth_id}/transactions \
--header 'X-Auth-ID: <api-key>' \
--header 'X-Auth-Token: <api-key>'import requests
url = "https://api.vobiz.ai/api/v1/Account/{auth_id}/transactions"
headers = {
"X-Auth-ID": "<api-key>",
"X-Auth-Token": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-Auth-ID': '<api-key>', 'X-Auth-Token': '<api-key>'}
};
fetch('https://api.vobiz.ai/api/v1/Account/{auth_id}/transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"transactions": [
{
"id": "aabbccdd-1234-5678-90ab-cdef12345678",
"account_id": "MA_XXXXXXXX",
"balance_id": "11223344-5566-7788-99aa-bbccddeeff00",
"type": "debit",
"amount": 0.08,
"currency": "INR",
"description": "Call to 919876543210 (1s)",
"reference": "cdr:99887766-aabb-ccdd-eeff-001122334455",
"reference_type": "cdr",
"status": "completed",
"processed_at": "2026-05-11T06:59:32.806790Z",
"created_at": "2026-05-11T06:59:32.806790Z",
"updated_at": "2026-05-11T06:59:32.806790Z"
}
],
"summary": {
"total_transactions": 5657,
"total_debit": 138901.97,
"total_credit": 350806,
"net_amount": 211904.03,
"by_reference_type": [
{
"reference_type": "cdr",
"total_debit": 932.93,
"total_credit": 0,
"count": 1866
},
{
"reference_type": "did_rental",
"total_debit": 18100,
"total_credit": 0,
"count": 44
},
{
"reference_type": "manual_adjustment",
"total_debit": 0,
"total_credit": 2455,
"count": 6
}
]
},
"total": 5657,
"page": 1,
"per_page": 50,
"total_pages": 114
}Get Transactions
GET https://api.vobiz.ai/api/v1/Account/{auth_id}/transactions
X-Auth-ID+X-Auth-Tokenheaders, or- HTTP Basic,
curl -u 'YOUR_AUTH_ID:YOUR_AUTH_TOKEN'
{auth_id} in the path must match the authenticated account. Passing another account’s ID returns 403 Access denied: account ID mismatch.Request
curl --location 'https://api.vobiz.ai/api/v1/Account/YOUR_AUTH_ID/transactions?page=1&per_page=50' \
--header 'X-Auth-ID: YOUR_AUTH_ID' \
--header 'X-Auth-Token: YOUR_AUTH_TOKEN' \
--header 'Accept: application/json'
Response
{
"transactions": [
{
"id": "aabbccdd-1234-5678-90ab-cdef12345678",
"account_id": "MA_XXXXXX",
"balance_id": "11223344-5566-7788-99aa-bbccddeeff00",
"type": "debit",
"amount": 0.9,
"currency": "INR",
"description": "Stream session (70s)",
"reference": "cdr:e565c2de-975c-4ba5-b115-44b1042cd397",
"reference_type": "cdr",
"status": "completed",
"processed_at": "2025-12-08T09:38:06.923988Z",
"created_at": "2025-12-08T09:38:06.923988Z",
"updated_at": "2025-12-08T09:38:06.923988Z"
}
],
"summary": {
"total_transactions": 125,
"total_debit": 150.75,
"total_credit": 500.00,
"net_amount": 349.25,
"by_reference_type": [
{
"reference_type": "cdr",
"total_debit": 140.25,
"total_credit": 0,
"count": 110
},
{
"reference_type": "did_rental",
"total_debit": 10.50,
"total_credit": 0,
"count": 14
},
{
"reference_type": "payment",
"total_debit": 0,
"total_credit": 500.00,
"count": 1
}
]
},
"total": 125,
"page": 1,
"per_page": 50,
"total_pages": 3
}
account_id. The reference_type groups spend by source - cdr (per-call charges), did_rental (phone-number setup and monthly fees), manual_adjustment, payment, and refund. DID purchases and recurring monthly number fees appear here as did_rental debits.Query parameters
Every filter is optional and they are AND-ed together.| Field | Type | Description |
|---|---|---|
page | integer | Page number, 1-indexed. Default: 1. |
per_page | integer | Records per page. Default: 50. Maximum: 1000. |
from_date | string | Start of the window, inclusive. Matches on created_at. |
to_date | string | End of the window, inclusive. Matches on created_at. |
type | string | credit or debit as a broad classification, or any literal type for an exact match. |
status | string | completed, pending, failed, or cancelled. Exact match. |
currency | string | Currency code, e.g. INR. Uppercased server-side. |
reference_type | string | Spend source, e.g. cdr, did_rental, recording. Exact match. |
description | string | Case-insensitive substring match on the description. |
reference | string | Case-insensitive substring match on the reference. |
transaction_id | string | Fetch one entry by its UUID. |
created_at descending. There is no sort override.
limit and offset are not supported. Unknown query parameters are silently dropped, so ?limit=100&offset=0 returns the default 50 rows on page 1 and never advances. Use page and per_page.Likewise, a per_page above 1000 falls back to 50 rather than clamping to the maximum - per_page=5000 returns 50 rows. The only signal is the per_page value echoed in the response, so assert on it.Fetch all transactions for one date
Setfrom_date and to_date to the same date. A bare YYYY-MM-DD in to_date is expanded to 23:59:59, so both bounds are inclusive and one request covers the whole day:
curl -sS -G 'https://api.vobiz.ai/api/v1/account/YOUR_AUTH_ID/transactions' \
--header 'X-Auth-ID: YOUR_AUTH_ID' \
--header 'X-Auth-Token: YOUR_AUTH_TOKEN' \
--header 'Accept: application/json' \
--data-urlencode 'from_date=2026-08-28' \
--data-urlencode 'to_date=2026-08-28' \
--data-urlencode 'per_page=1000' \
--data-urlencode 'page=1'
total_pages from the response and walk page=2, page=3, and so on.
Daily totals without paging
Thesummary block is computed over the entire filtered set, not just the current page. For reconciliation totals you can request a single row and read summary alone:
curl -sS -G 'https://api.vobiz.ai/api/v1/account/YOUR_AUTH_ID/transactions' \
--header 'X-Auth-ID: YOUR_AUTH_ID' \
--header 'X-Auth-Token: YOUR_AUTH_TOKEN' \
--data-urlencode 'from_date=2026-08-28' \
--data-urlencode 'to_date=2026-08-28' \
--data-urlencode 'per_page=1'
summary.total_debit, summary.total_credit, summary.net_amount, and the by_reference_type breakdown all cover the full day.
Pinning a day to a specific timezone
created_at is stored with a timezone and a bare date is resolved in the server’s timezone (UTC). For a true IST calendar day, send explicit offsets:
curl -sS -G 'https://api.vobiz.ai/api/v1/account/YOUR_AUTH_ID/transactions' \
--header 'X-Auth-ID: YOUR_AUTH_ID' \
--header 'X-Auth-Token: YOUR_AUTH_TOKEN' \
--data-urlencode 'from_date=2026-08-28T00:00:00+05:30' \
--data-urlencode 'to_date=2026-08-28T23:59:59+05:30' \
--data-urlencode 'per_page=1000'
-G with --data-urlencode (or URL-encode + as %2B yourself). A raw + in a query string decodes as a space, and the malformed timestamp returns 500 {"error": "Failed to retrieve transactions"}.The automatic 23:59:59 expansion only applies to a bare 10-character date, so an explicit timestamp must carry its own end-of-day time.Discovering reference types
To list thereference_type values actually present on an account:
curl -sS 'https://api.vobiz.ai/api/v1/account/YOUR_AUTH_ID/transactions/reference-types' \
--header 'X-Auth-ID: YOUR_AUTH_ID' \
--header 'X-Auth-Token: YOUR_AUTH_TOKEN'
{
"reference_types": ["cdr", "did_purchase", "did_rental", "manual_adjustment", "ncc", "recording", "stream_cdr", "transcription"]
}
Integration notes
type=debitis a classification, not an equality test. It sweeps in legacy entry types stored directly in thetypecolumn - atype=debitquery on an account with DID rentals returns rows whosetypeisdid_rentalalongside thedebitrows. Totals from this filter will not match a naivetype = 'debit'comparison.referenceis omitted when null, rather than being sent asnull. Treat it as an optional key.- Sub-account IDs (
SA_...) resolve to the parent account’s ledger. A sub-account query returns the parent’s full transaction list, not a sub-account-scoped slice. - A zeroed
summaryalongside a non-emptytransactionsarray is a degraded response, not an empty day - summary computation failing does not fail the request.
Errors
| Status | Body | Cause |
|---|---|---|
400 | {"error": "accountID is required"} | Missing account ID in the path. |
401 | {"error": {"code": 401, "message": "Invalid token"}} | Bad or missing credentials. |
403 | {"error": {"code": 403, "message": "Access denied: account ID mismatch"}} | The path account ID is not the authenticated account. |
500 | {"error": "Failed to retrieve transactions"} | Unparseable date - check formatting before treating it as an empty day. |
Related
Account Balance
Call Detail Records
cdr reference back to the call that generated the charge.Authorizations
Your Vobiz account Auth ID
Your Vobiz account Auth Token
Path Parameters
Your account Auth ID
"MA_XXXXXX"
Query Parameters
Page number, 1-indexed.
Records per page. A value above the maximum falls back to the default of 50 rather than clamping.
x <= 1000Start of the window, inclusive. Date-only or full ISO 8601 timestamp. Day boundaries are UTC.
"2026-08-25"
End of the window, inclusive. A date-only value covers the whole day.
"2026-08-25"
credit or debit act as broad classifications and sweep in legacy entry types such as did_rental; any other value is an exact match on transactions[].type.
"debit"
Exact match on transaction status.
completed, pending, failed, cancelled Currency code. Uppercased server-side, exact match.
"INR"
Spend source, matching transactions[].reference_type.
"cdr"
Case-insensitive substring match on the description.
Case-insensitive substring match on the reference.
Fetch a single ledger entry by its UUID.
Was this page helpful?
curl --request GET \
--url https://api.vobiz.ai/api/v1/Account/{auth_id}/transactions \
--header 'X-Auth-ID: <api-key>' \
--header 'X-Auth-Token: <api-key>'import requests
url = "https://api.vobiz.ai/api/v1/Account/{auth_id}/transactions"
headers = {
"X-Auth-ID": "<api-key>",
"X-Auth-Token": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-Auth-ID': '<api-key>', 'X-Auth-Token': '<api-key>'}
};
fetch('https://api.vobiz.ai/api/v1/Account/{auth_id}/transactions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"transactions": [
{
"id": "aabbccdd-1234-5678-90ab-cdef12345678",
"account_id": "MA_XXXXXXXX",
"balance_id": "11223344-5566-7788-99aa-bbccddeeff00",
"type": "debit",
"amount": 0.08,
"currency": "INR",
"description": "Call to 919876543210 (1s)",
"reference": "cdr:99887766-aabb-ccdd-eeff-001122334455",
"reference_type": "cdr",
"status": "completed",
"processed_at": "2026-05-11T06:59:32.806790Z",
"created_at": "2026-05-11T06:59:32.806790Z",
"updated_at": "2026-05-11T06:59:32.806790Z"
}
],
"summary": {
"total_transactions": 5657,
"total_debit": 138901.97,
"total_credit": 350806,
"net_amount": 211904.03,
"by_reference_type": [
{
"reference_type": "cdr",
"total_debit": 932.93,
"total_credit": 0,
"count": 1866
},
{
"reference_type": "did_rental",
"total_debit": 18100,
"total_credit": 0,
"count": 44
},
{
"reference_type": "manual_adjustment",
"total_debit": 0,
"total_credit": 2455,
"count": 6
}
]
},
"total": 5657,
"page": 1,
"per_page": 50,
"total_pages": 114
}