Source connector
Zuora connector
Zuora integration for databases, warehouses and BI tools
Subscription billing, revenue, and quoting. Datrise captures Zuora entities such as subscriptions, accounts, invoices, rate plans, payments and amendments, then lands normalized and typed models for warehouse reporting, attribution, and AI workflows.
The Zuora REST API v1 (Data Query / AQuA) authenticates with OAuth 2.0, incremental runs key on UpdatedDate, and Zuora caps calls at 50,000 API requests per minute / 2.25M per hour / 27M per day on Production and Central Sandbox tenants, with concurrency capped at 40 requests by default (80 for Object Query, 200 for high-volume transaction endpoints).
Of the 6 objects, 4 sync as upserts keyed on the primary key and 2 as append-only streams, so each incremental run moves only what changed since the last watermark. Every object lands in its own table (for example `zuora_subscriptions`) with a schema derived from the Zuora API rather than a flattened CSV, in any of the 43 supported destinations.
Datrise is in early access: pick a destination below to open the Zuora pipeline page, and join the waitlist to get the Zuora connector with guided onboarding.
What Zuora data Datrise extracts
Each object lands in its own typed table. Sync mode is derived from the object: history-style objects append, everything else upserts.
| Object | Landing table | Sync mode |
|---|---|---|
| subscriptions | zuora_subscriptions | Upsert by primary key, incremental on updated-at |
| accounts | zuora_accounts | Upsert by primary key, incremental on updated-at |
| invoices | zuora_invoices | Append-only, incremental by timestamp |
| rate plans | zuora_rate_plans | Upsert by primary key, incremental on updated-at |
| payments | zuora_payments | Append-only, incremental by timestamp |
| amendments | zuora_amendments | Upsert by primary key, incremental on updated-at |
Zuora API: setup facts for the connector
Verified against the vendor documentation on 2026-09-02. Unknown values are left blank rather than guessed.
| API | Zuora REST API v1 (Data Query / AQuA) |
|---|---|
| Authentication | OAuth 2.0 — OAuth 2.0 client-credentials tokens issued by the `/oauth/token` endpoint from a Zuora-UI-registered OAuth client; Basic auth with a user's API key still works but OAuth is the recommended flow. |
| Pagination | cursor — Standard REST list endpoints default `pageSize` to 10 and cap it at 40, while the Object Query API caps `pageSize` at 99; both return a `nextPage`/`cursor` token when more rows remain. |
| Rate limit | 50,000 API requests per minute / 2.25M per hour / 27M per day on Production and Central Sandbox tenants, with concurrency capped at 40 requests by default (80 for Object Query, 200 for high-volume transaction endpoints) |
| Incremental cursor | UpdatedDate — Data Query / AQuA filters on the indexed `UpdatedDate` column, and stateful AQuA jobs can instead pass an `incrementalTime` parameter to pull only records created or modified since the last run. |
| Webhooks | Yes — Callout Notifications |
| Bulk export | Yes — AQuA (Aggregate Query API) / Data Query |
| Deletes detectable | Yes — AQuA queries with the `deleted.forceExport` option set to true add an `is_deleted` boolean column, but Zuora's deleted-record retention is only 30 days |
What bites when replicating Zuora
- The Object Query API caps `pageSize` at 99 while standard v1 REST list endpoints cap it at 40 and silently default to 10 when the parameter is omitted, so an unset page size drastically undersizes a bulk sync.
- AQuA jobs that run longer than 3 hours are automatically killed by Zuora, forcing large historical backfills to be split into smaller date-bounded query batches.
- Deleted records are only retrievable for a 30-day retention window and require explicitly setting `deleted.forceExport` (with a named boolean column like `is_deleted`) in the AQuA query body; a connector polling less often misses deletes permanently.
- The OAuth token endpoint itself is throttled to 100 requests per minute, so minting a fresh token per API call instead of reusing it until expiry can trip a separate, tighter rate limit than the main API.
Popular destinations for Zuora
Choose a destination below to open the ready pipeline page.
- AAirtable
Relational spreadsheet destination for ops and go-to-market teams.
View pipeline - AAmazon Athena
Serverless SQL over S3 data lake tables.
View pipeline - AAmazon DynamoDB
Serverless key-value and document store on AWS.
View pipeline - AAmazon QuickSight
AWS serverless BI with SPICE and embedded analytics.
View pipeline - AAmazon Redshift
AWS petabyte-scale warehouse with Spectrum.
View pipeline - AAmazon S3 Data Lake
Object storage landing zone for parquet and snapshots.
View pipeline - AApache Superset
Open-source BI for SQL exploration, charts, and dashboard publishing.
View pipeline - AAzure Data Lake Storage
ADLS Gen2 object storage for analytics workloads.
View pipeline - AAzure Synapse
Microsoft analytics workspace with SQL pools.
View pipeline
Zuora connector FAQ
- What Zuora data does the connector extract?
- 6 objects: subscriptions, accounts, invoices, rate plans, payments and amendments. Each lands in its own table with types preserved; history-style objects (2: invoices and payments) load as append-only streams.
- Is the Zuora integration incremental?
- Yes. After the initial full load, every run reads only records changed since the last watermark (updated-at or event timestamp) and applies an upsert or an append depending on the object.
- Where can I load Zuora data?
- Into 43 destinations: relational databases, cloud warehouses, data lakes, spreadsheets and BI tools. Each Zuora → destination pair has its own page with the object-to-table mapping.
Related sources
Other sources in the same category, each with its own connector page.
Early access
Launch your Zuora pipeline with guided onboarding
Join the waitlist to get priority access for Zuora integrations with guided setup, schema-aware mapping, and production-grade incremental sync.