Skip to main content

Troubleshooting for Stripe Reader

This topic helps you diagnose and resolve common configuration and runtime issues when using the Stripe Reader.

Common errors and fixes

Symptom

Cause

Resolution

401 Unauthorized or “Invalid API Key provided”.

API key is missing, wrong (test vs. live), expired, or restricted.

Use a valid secret (or appropriately scoped restricted) key from the Stripe Dashboard. Verify environment (test/live) matches the data you intend to read. Re-paste the key in the reader properties and redeploy.

403 Forbidden when reading certain tables via OAuth.

Those tables require higher privileges than granted by OAuth.

Authenticate with an API key instead of OAuth for tables that need elevated permissions. See the limitations list for objects not supported via OAuth.

“Insufficient permission to access the metadata” during wizard validation.

OAuth app or key lacks permissions for selected objects.

Adjust permissions/scopes in Stripe or select only objects allowed by the current credentials. Re-validate credentials in the wizard.

Reader starts but no data appears for a connected account.

Connected account not enabled, or missing Account ID.

Set Connected account to True and provide the connected Account ID. Connected accounts must authenticate with an API key, not OAuth.

Duplicates in the target after restarts or during recovery.

Incremental position replays overlapping data; target isn’t merging.

Enable upsert/merge semantics on the target using appropriate key columns. If required, re-run with a clean start position or perform a resync.

No updates captured for Customers or Invoices.

These objects require full resyncs to reflect updates.

Leave the Incremental load marker empty to force a full resync each polling interval for these objects, or schedule periodic resyncs and use merge on the target.

“Invalid table names” at startup.

Typos, unsupported objects, or conflict between Tables and Exclude tables.

Correct names and wildcards in Tables. Remove or fix entries in Exclude tables so they don’t exclude everything matched by Tables. Use supported object names from the programmer’s reference.

429 Too Many Requests / throttling.

Stripe API rate limits exceeded (high concurrency or frequent polling).

Increase Polling interval, lower Thread pool count, and avoid unnecessary resyncs. If possible, stagger multiple apps to reduce bursts.

Application halts during high-volume loads.

Thread pool count exceeds Connection pool size, starving connections.

Set Thread pool countConnection pool size. For best performance, align connection pool size to the number of active tables processed in parallel.

Some columns are always null for certain objects (for example, Coupons, PaymentLinks).

Those fields require expand[] in the Stripe API and are not returned in standard responses.

This is a known limitation. Where needed, enrich downstream via post-processing or join with auxiliary datasets at the target.

Missed or late changes when using ID as the incremental marker.

ID is not a reliable watermark during high-volume ingestion.

Use the timestamp Created as the Incremental load marker for incremental mode. If data loss is suspected, remove the marker for the affected table and perform a resync.

Diagnostics and where to look

  • Adapter logs: Check application logs for HTTP status codes (401/403/429), schema or object-name errors, and credential validation messages.

  • Monitoring: Watch metrics such as inserts per interval and latest activity to verify forward progress.

  • Configuration snapshot: Capture reader properties (redact secrets) and target upsert/merge configuration when opening a support request.

Prevention and best practices

  • Prefer API key auth for objects that are not available via OAuth.

  • Use Created as the incremental marker for incremental mode.

  • Enable merge/upsert semantics at the target to deduplicate during recovery or resync.

  • Align Thread pool count with Connection pool size to avoid resource contention.

  • Increase Polling interval if you observe rate limiting.