> ## Documentation Index
> Fetch the complete documentation index at: https://docs.invoca.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Transactions API: Programmatic Data Access

> Export transactional data — calls, Signals, and sales — from Invoca automatically for in-house reporting or connecting to external systems.

The Transactions API is an advanced feature requiring coding experience or developer resources. Developer documentation, along with authentication steps for accessing Invoca APIs, is available in the developer portal. To push transaction data instead of polling it, see [Certified Integrations and Custom Webhooks](/s/article/certified-integrations-and-custom-webhooks).

**Applies to:** Transactions API, developers

## Frequently asked questions

**How frequently should the Transactions API be polled?**

It's designed to be polled at any interval over 5 minutes. Store the last transaction ID you downloaded and pass it as `start_after_transaction_id` on the next request. If your interval is long or volume is high, not all rows may return in one request — keep polling until you've downloaded everything.

**How do I know I've downloaded all transactions?**

When the number of transactions returned is less than your configured row limit. Use the `limit` query parameter to control how many transactions return per call — the default is 1,000, and the maximum is 4,000.

**How often does the API update?**

Once a call completes, its transaction record is written and immediately available via the API — the same holds true for the platform's reporting UI.

**Why do transaction corrections occur, and how are they returned?**

Corrections happen for reasons like additional data being appended to a completed call, updated Signal values, notes added to a transaction, or changes to pay-in/payout amounts for affiliate-driven calls. The API returns a separate row for the original call and each subsequent correction (linked via `corrects_transaction_id`), while the Transactions Report shows only one updated call. Replace the original transaction's attributes with the correction's when you receive one. Corrections are included when using date-range query parameters like `from=` and `to=`.

**Which transaction has the most up-to-date information after a correction?**

The most recent transaction returned holds the aggregate corrected data. Duration-related parameters are cleared from previous transactions to prevent incorrect aggregation.

**What transaction types will I see?**

Depending on your API version: Call (a phone call), Signal (older versions only — a Signal applied to a call), Sale (older versions only — a reported conversion), and Post-call event (newer versions only — any event adding data to an already-completed call, via API or Signal file upload). Older versions return Signal and Sale transactions as separate rows linked to the original call via `complete_call_id`; newer versions roll all Signal and Sale data into the same row as the originating call or post-call event.

**How do I identify all transactions that make up one call?**

The `complete_call_id` parameter (labeled "Call Record ID" in the platform UI) is a globally unique identifier linking all of a call's related transactions — useful for building a complete call record elsewhere.

**What timezone logic applies?**

Platforms are set to a specific timezone, and any API OAuth token pulled from that platform returns results in that timezone. Match your user settings to the platform timezone when reconciling totals. If a platform's timezone changes, existing tokens still use the original timezone — generate a new token to use the updated one. The `start_time_network_timezone` parameter always reflects the platform's current timezone preference.

**How are custom data and Signals returned?**

By default, they aren't. Add them via `include_columns` (returns name-value pairs like `[custom data API name]: [value]` and `[signal name]: [value]`) or by querying with nested fields (JSON/XML only, using the `custom_data` parameter, which includes each field's partner name, value, data type, and source). Field partner names are listed under the gear icon > Custom Data > "Partner (API) Name" column. Querying with `transaction_type` = call returns no Signal or Post-call event rows.

## Where to go next

* [Can Call Transcripts Be Accessed Through the Transactions API?](/s/article/call-transcripts-transactions-api)
* [What Are the Character Limits for Each Data Point in the Transactions API?](/s/article/character-limits-transactions-api)
