Skip to main content
GET
List transactions

Get Transactions

Returns a list of transactions for a specific account.
Authentication - either scheme works:
  • X-Auth-ID + X-Auth-Token headers, or
  • HTTP Basic, curl -u 'YOUR_AUTH_ID:YOUR_AUTH_TOKEN'
The {auth_id} in the path must match the authenticated account. Passing another account’s ID returns 403 Access denied: account ID mismatch.

Request

cURL

Response

JSON Response
Each transaction is keyed to the owning account by 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. Results are always ordered by 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

Set from_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
If a day exceeds 1000 rows, read total_pages from the response and walk page=2, page=3, and so on.

Daily totals without paging

The summary 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
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
Use -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 the reference_type values actually present on an account:
cURL
JSON Response

Integration notes

  • type=debit is a classification, not an equality test. It sweeps in legacy entry types stored directly in the type column - a type=debit query on an account with DID rentals returns rows whose type is did_rental alongside the debit rows. Totals from this filter will not match a naive type = 'debit' comparison.
  • reference is omitted when null, rather than being sent as null. 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 summary alongside a non-empty transactions array is a degraded response, not an empty day - summary computation failing does not fail the request.

Errors

Account Balance

Check available balance, reserved funds, and credit limit by currency.

Call Detail Records

Trace a cdr reference back to the call that generated the charge.

Authorizations

X-Auth-ID
string
header
required

Your Vobiz account Auth ID

X-Auth-Token
string
header
required

Your Vobiz account Auth Token

Path Parameters

auth_id
string
required

Your account Auth ID

Example:

"MA_XXXXXX"

Query Parameters

page
integer
default:1

Page number, 1-indexed.

per_page
integer
default:50

Records per page. A value above the maximum falls back to the default of 50 rather than clamping.

Required range: x <= 1000
from_date
string

Start of the window, inclusive. Date-only or full ISO 8601 timestamp. Day boundaries are UTC.

Example:

"2026-08-25"

to_date
string

End of the window, inclusive. A date-only value covers the whole day.

Example:

"2026-08-25"

type
string

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.

Example:

"debit"

status
enum<string>

Exact match on transaction status.

Available options:
completed,
pending,
failed,
cancelled
currency
string

Currency code. Uppercased server-side, exact match.

Example:

"INR"

reference_type
string

Spend source, matching transactions[].reference_type.

Example:

"cdr"

description
string

Case-insensitive substring match on the description.

reference
string

Case-insensitive substring match on the reference.

transaction_id
string<uuid>

Fetch a single ledger entry by its UUID.

Response

200 - application/json

Transaction list

transactions
object[]
required
summary
object
required
total
integer
required
page
integer
required
per_page
integer
required
total_pages
integer
required