Skip to main content
Version: Next

Stripe

Stripe PaymentIntents source connector

Description

Reads PaymentIntent objects from Stripe as a bounded batch source. Each output row contains one complete PaymentIntent JSON object in the content string column.

The connector follows Stripe's reverse-chronological list order and uses the last object ID from each response as the starting_after cursor for the next page.

Key features

Options

nametyperequireddefault valuedescription
secret_keyStringYes-Stripe secret API key. The connector sends it as a Bearer token and does not include it in connector logs.
api_base_urlStringNohttps://api.stripe.comStripe API base URL. This is primarily useful for local testing through a compatible HTTP endpoint.
api_versionStringNo-Stripe API version sent in the Stripe-Version header. Pin this when a job needs a stable Stripe response contract.
page_sizeintNo100PaymentIntents requested per page. The allowed range is 1 to 100.
created_gtelongNo-Inclusive lower created boundary in Unix seconds.
created_ltlongNo-Exclusive upper created boundary in Unix seconds. When both boundaries are set, created_gte must be lower than created_lt.
rate_limit_max_retriesintNo3Maximum retries after an HTTP 429 response.
rate_limit_backoff_msintNo1000Initial exponential backoff after an HTTP 429 response. Backoff is capped at 60 seconds.
retryintNo-Maximum retry count for transport-level IOException failures.
retry_backoff_multiplier_msintNo100Retry backoff multiplier for transport failures.
retry_backoff_max_msintNo10000Maximum retry backoff for transport failures.
connect_timeout_msintNo12000HTTP connection timeout.
socket_timeout_msintNo60000HTTP socket timeout.
common-optionsconfigNo-Source common options. See Source Common Options.

Output

The source has a stable single-column schema:

columntypedescription
contentstringOne complete PaymentIntent object serialized as JSON.

Returning the complete object avoids treating Stripe's expandable fields and metadata keys as a fixed relational schema. Use a transform after this source when individual fields are needed.

PaymentIntent objects can contain sensitive values such as client_secret. Protect the source output and downstream storage accordingly. A custom api_base_url also receives the configured API key, so use only a trusted HTTPS endpoint outside local testing.

Time boundaries and recovery

Stripe returns PaymentIntents in reverse chronological order. The connector uses starting_after with the last ID from each page, so every request continues toward older objects within the same list operation.

For repeatable scheduled extracts, use a half-open time range: created_gte is inclusive and created_lt is exclusive. Adjacent runs can therefore use [previous_end, current_end) without overlapping their time boundaries.

This V1 connector uses SeaTunnel's bounded single-split source model. If a task fails before the batch completes, recovery starts the bounded read again from the configured time range. Downstream processing should therefore tolerate replayed rows.

The Stripe list API is not a transactional snapshot. A PaymentIntent can change while a multi-page read is in progress. The time range bounds which objects are selected, but it does not freeze their contents. Set api_version when the JSON contract must remain stable across account API-version changes.

Example

env {
parallelism = 1
job.mode = "BATCH"
}

source {
Stripe {
plugin_output = "stripe_payment_intents"
secret_key = "${STRIPE_SECRET_KEY}"
api_version = "2026-02-25.clover"
page_size = 100
created_gte = 1754006400
created_lt = 1754092800
}
}

sink {
Console {
plugin_input = "stripe_payment_intents"
}
}

Changelog

Change Log
ChangeCommitVersion