From 91878080d43644ecc1d6ed2f3922399304c85e81 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Tue, 27 Jan 2026 22:46:32 +0000 Subject: [PATCH 1/7] feat(source-stripe): Add optional config parameters for performance optimization - Add balance_transaction_type filter to filter balance transactions by type - Add expand_charge_refunds option to control refund expansion in charges stream - Add expand_invoice_details option to control discount/tax rate expansion in invoices stream - Add subscription_status option to filter subscriptions by status These options allow users to reduce API response sizes and improve sync performance by only fetching the data they need. Co-Authored-By: alfredo.garcia@airbyte.io --- .../connectors/source-stripe/manifest.yaml | 107 +++++++++++++++++- 1 file changed, 103 insertions(+), 4 deletions(-) diff --git a/airbyte-integrations/connectors/source-stripe/manifest.yaml b/airbyte-integrations/connectors/source-stripe/manifest.yaml index fcdd3eafea63..5466e583136e 100644 --- a/airbyte-integrations/connectors/source-stripe/manifest.yaml +++ b/airbyte-integrations/connectors/source-stripe/manifest.yaml @@ -291,12 +291,19 @@ definitions: name: shipping_rates balance_transactions: $ref: "#/definitions/created_stream" + retriever: + $ref: "#/definitions/base_retriever" + requester: + $ref: "#/definitions/base_requester" + request_parameters: + type: "{{ config.get('balance_transaction_type', '') }}" + $parameters: + path: balance_transactions schema_loader: type: InlineSchemaLoader schema: $ref: "#/schemas/balance_transactions" $parameters: - path: balance_transactions name: balance_transactions files: $ref: "#/definitions/created_stream" @@ -356,7 +363,7 @@ definitions: requester: $ref: "#/definitions/base_requester" request_parameters: - status: "all" + status: "{{ config.get('subscription_status', 'all') }}" schema_loader: type: InlineSchemaLoader schema: @@ -386,7 +393,7 @@ definitions: requester: $ref: "#/definitions/base_requester" request_parameters: - expand[]: '{{["data.discounts", "data.total_tax_amounts.tax_rate"]}}' + expand[]: '{{ ["data.discounts", "data.total_tax_amounts.tax_rate"] if config.get("expand_invoice_details", true) else [] }}' schema_loader: type: InlineSchemaLoader schema: @@ -520,7 +527,7 @@ definitions: requester: $ref: "#/definitions/base_requester" request_parameters: - expand[]: '{{["data.refunds"]}}' + expand[]: '{{ ["data.refunds"] if config.get("expand_charge_refunds", true) else [] }}' schema_loader: type: InlineSchemaLoader schema: @@ -1898,6 +1905,98 @@ spec: The number of API calls per second that you allow connector to make. This value can not be bigger than real API call rate limit (https://stripe.com/docs/rate-limits). If not specified the default maximum is 25 and 100 calls per second for test and production tokens respectively. + order: 6 + balance_transaction_type: + type: string + title: Balance Transaction Type Filter + description: >- + Filter balance transactions by type. If not specified, all types will be synced. + See Stripe API docs for available types. + enum: + - adjustment + - advance + - advance_funding + - anticipation_repayment + - application_fee + - application_fee_refund + - charge + - climate_order_purchase + - climate_order_refund + - connect_collection_transfer + - contribution + - issuing_authorization_hold + - issuing_authorization_release + - issuing_dispute + - issuing_transaction + - obligation_outbound + - obligation_reversal_inbound + - payment + - payment_failure_refund + - payment_network_reserve_hold + - payment_network_reserve_release + - payment_refund + - payment_reversal + - payment_unreconciled + - payout + - payout_cancel + - payout_failure + - payout_minimum_balance_hold + - payout_minimum_balance_release + - refund + - refund_failure + - reserve_transaction + - reserved_funds + - reserve_hold + - reserve_release + - stripe_fee + - stripe_fx_fee + - stripe_balance_payment_debit + - stripe_balance_payment_debit_reversal + - tax_fee + - topup + - topup_reversal + - transfer + - transfer_cancel + - transfer_failure + - transfer_refund + order: 7 + subscription_status: + type: string + title: Subscription Status Filter + description: >- + Filter subscriptions by status. By default, all subscriptions are synced (including canceled). + See Stripe API docs for details. + enum: + - all + - active + - canceled + - ended + - incomplete + - incomplete_expired + - past_due + - paused + - trialing + - unpaid + default: "all" + order: 8 + expand_charge_refunds: + type: boolean + title: Expand Charge Refunds + description: >- + When enabled, the charges stream will include full refund objects embedded in each charge. + When disabled, only refund IDs are included, reducing response size. + See Stripe API docs for details. + default: true + order: 9 + expand_invoice_details: + type: boolean + title: Expand Invoice Details + description: >- + When enabled, the invoices stream will include full discount and tax rate objects. + When disabled, only IDs are included, reducing response size. + See Stripe API docs for details. + default: true + order: 10 api_budget: type: HTTPAPIBudget From 850bdd2e498b42cf4d1a01945e29a3fd56a533a9 Mon Sep 17 00:00:00 2001 From: Octavia Squidington III Date: Tue, 27 Jan 2026 22:56:02 +0000 Subject: [PATCH 2/7] chore: bump-version --- airbyte-integrations/connectors/source-stripe/metadata.yaml | 2 +- docs/integrations/sources/stripe.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/airbyte-integrations/connectors/source-stripe/metadata.yaml b/airbyte-integrations/connectors/source-stripe/metadata.yaml index 85e8e3890fe4..43bb4597c279 100644 --- a/airbyte-integrations/connectors/source-stripe/metadata.yaml +++ b/airbyte-integrations/connectors/source-stripe/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: e094cb9a-26de-4645-8761-65c0c425d1de - dockerImageTag: 5.15.16 + dockerImageTag: 5.15.17 dockerRepository: airbyte/source-stripe documentationUrl: https://docs.airbyte.com/integrations/sources/stripe erdUrl: https://dbdocs.io/airbyteio/source-stripe?view=relationships diff --git a/docs/integrations/sources/stripe.md b/docs/integrations/sources/stripe.md index 07b9cdae9301..e25e89fba217 100644 --- a/docs/integrations/sources/stripe.md +++ b/docs/integrations/sources/stripe.md @@ -246,6 +246,7 @@ Each record is marked with `is_deleted` flag when the appropriate event happens | Version | Date | Pull Request | Subject | |:------------|:-----------|:-------------------------------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 5.15.17 | 2026-01-27 | [72393](https://github.com/airbytehq/airbyte/pull/72393) | feat(source-stripe): Add optional config parameters for performance optimization | | 5.15.16 | 2026-01-20 | [72106](https://github.com/airbytehq/airbyte/pull/72106) | Update dependencies | | 5.15.15 | 2026-01-14 | [71614](https://github.com/airbytehq/airbyte/pull/71614) | Update dependencies | | 5.15.14 | 2025-12-18 | [70638](https://github.com/airbytehq/airbyte/pull/70638) | Update dependencies | From 9bb1c899da0b644d1c574b691e7c4cfd7109d1ea Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Tue, 27 Jan 2026 23:02:34 +0000 Subject: [PATCH 3/7] fix: Remove invalid subscription_status enum values Only keep valid Stripe API filter values: all, canceled, ended Co-Authored-By: alfredo.garcia@airbyte.io --- .../connectors/source-stripe/manifest.yaml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/airbyte-integrations/connectors/source-stripe/manifest.yaml b/airbyte-integrations/connectors/source-stripe/manifest.yaml index 5466e583136e..4db5d2dab0d6 100644 --- a/airbyte-integrations/connectors/source-stripe/manifest.yaml +++ b/airbyte-integrations/connectors/source-stripe/manifest.yaml @@ -1968,15 +1968,8 @@ spec: See Stripe API docs for details. enum: - all - - active - canceled - ended - - incomplete - - incomplete_expired - - past_due - - paused - - trialing - - unpaid default: "all" order: 8 expand_charge_refunds: From c1ac50aa700cbdda61fcbb4872718951bf975648 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Tue, 27 Jan 2026 23:18:27 +0000 Subject: [PATCH 4/7] fix: Restore path parameter in balance_transactions stream $parameters Co-Authored-By: alfredo.garcia@airbyte.io --- airbyte-integrations/connectors/source-stripe/manifest.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/airbyte-integrations/connectors/source-stripe/manifest.yaml b/airbyte-integrations/connectors/source-stripe/manifest.yaml index 4db5d2dab0d6..26329e9ed49c 100644 --- a/airbyte-integrations/connectors/source-stripe/manifest.yaml +++ b/airbyte-integrations/connectors/source-stripe/manifest.yaml @@ -304,6 +304,7 @@ definitions: schema: $ref: "#/schemas/balance_transactions" $parameters: + path: balance_transactions name: balance_transactions files: $ref: "#/definitions/created_stream" From 10667e867ea7e10daefc7abb8a949f49c9820ddf Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Tue, 27 Jan 2026 23:30:22 +0000 Subject: [PATCH 5/7] fix: Remove balance_transaction_type config (incompatible with created_stream pattern) The balance_transaction_type filter could not be implemented with the created_stream pattern without breaking manifest validation. Keeping the other 3 improvements: subscription_status, expand_charge_refunds, and expand_invoice_details. Co-Authored-By: alfredo.garcia@airbyte.io --- .../connectors/source-stripe/manifest.yaml | 68 +------------------ 1 file changed, 3 insertions(+), 65 deletions(-) diff --git a/airbyte-integrations/connectors/source-stripe/manifest.yaml b/airbyte-integrations/connectors/source-stripe/manifest.yaml index 26329e9ed49c..b6059560cd67 100644 --- a/airbyte-integrations/connectors/source-stripe/manifest.yaml +++ b/airbyte-integrations/connectors/source-stripe/manifest.yaml @@ -291,14 +291,6 @@ definitions: name: shipping_rates balance_transactions: $ref: "#/definitions/created_stream" - retriever: - $ref: "#/definitions/base_retriever" - requester: - $ref: "#/definitions/base_requester" - request_parameters: - type: "{{ config.get('balance_transaction_type', '') }}" - $parameters: - path: balance_transactions schema_loader: type: InlineSchemaLoader schema: @@ -1907,60 +1899,6 @@ spec: API call rate limit (https://stripe.com/docs/rate-limits). If not specified the default maximum is 25 and 100 calls per second for test and production tokens respectively. order: 6 - balance_transaction_type: - type: string - title: Balance Transaction Type Filter - description: >- - Filter balance transactions by type. If not specified, all types will be synced. - See Stripe API docs for available types. - enum: - - adjustment - - advance - - advance_funding - - anticipation_repayment - - application_fee - - application_fee_refund - - charge - - climate_order_purchase - - climate_order_refund - - connect_collection_transfer - - contribution - - issuing_authorization_hold - - issuing_authorization_release - - issuing_dispute - - issuing_transaction - - obligation_outbound - - obligation_reversal_inbound - - payment - - payment_failure_refund - - payment_network_reserve_hold - - payment_network_reserve_release - - payment_refund - - payment_reversal - - payment_unreconciled - - payout - - payout_cancel - - payout_failure - - payout_minimum_balance_hold - - payout_minimum_balance_release - - refund - - refund_failure - - reserve_transaction - - reserved_funds - - reserve_hold - - reserve_release - - stripe_fee - - stripe_fx_fee - - stripe_balance_payment_debit - - stripe_balance_payment_debit_reversal - - tax_fee - - topup - - topup_reversal - - transfer - - transfer_cancel - - transfer_failure - - transfer_refund - order: 7 subscription_status: type: string title: Subscription Status Filter @@ -1972,7 +1910,7 @@ spec: - canceled - ended default: "all" - order: 8 + order: 7 expand_charge_refunds: type: boolean title: Expand Charge Refunds @@ -1981,7 +1919,7 @@ spec: When disabled, only refund IDs are included, reducing response size. See Stripe API docs for details. default: true - order: 9 + order: 8 expand_invoice_details: type: boolean title: Expand Invoice Details @@ -1990,7 +1928,7 @@ spec: When disabled, only IDs are included, reducing response size. See Stripe API docs for details. default: true - order: 10 + order: 9 api_budget: type: HTTPAPIBudget From 9e5e9760878a5815612cc5d0ff1dac4b9812c226 Mon Sep 17 00:00:00 2001 From: Alfredo Garcia <169859663+agarctfi@users.noreply.github.com> Date: Tue, 27 Jan 2026 18:38:07 -0600 Subject: [PATCH 6/7] update dockerImageTag --- airbyte-integrations/connectors/source-stripe/metadata.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airbyte-integrations/connectors/source-stripe/metadata.yaml b/airbyte-integrations/connectors/source-stripe/metadata.yaml index 43bb4597c279..c18be5370080 100644 --- a/airbyte-integrations/connectors/source-stripe/metadata.yaml +++ b/airbyte-integrations/connectors/source-stripe/metadata.yaml @@ -10,7 +10,7 @@ data: connectorSubtype: api connectorType: source definitionId: e094cb9a-26de-4645-8761-65c0c425d1de - dockerImageTag: 5.15.17 + dockerImageTag: 5.16.0 dockerRepository: airbyte/source-stripe documentationUrl: https://docs.airbyte.com/integrations/sources/stripe erdUrl: https://dbdocs.io/airbyteio/source-stripe?view=relationships From e779173bdfa0b0bfbeefbe974b26869ca5613a7a Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 28 Jan 2026 01:03:02 +0000 Subject: [PATCH 7/7] docs: Add documentation for new Stripe performance config options Co-Authored-By: alfredo.garcia@airbyte.io --- docs/integrations/sources/stripe.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/integrations/sources/stripe.md b/docs/integrations/sources/stripe.md index a5a6d3cb4be6..13efd5033df5 100644 --- a/docs/integrations/sources/stripe.md +++ b/docs/integrations/sources/stripe.md @@ -64,7 +64,13 @@ For more information on Stripe API Keys, see the [Stripe documentation](https:// If you are unsure of which value to use, we recommend leaving this setting at its default value of 365 days. -10. Click **Set up source** and wait for the tests to complete. +10. (Optional) For **Subscription Status Filter**, you can filter which subscriptions are synced. By default, all subscriptions are synced (including canceled). You can choose to sync only `canceled` or `ended` subscriptions to reduce data volume. See the [Stripe Subscriptions API](https://docs.stripe.com/api/subscriptions/list) for details. + +11. (Optional) For **Expand Charge Refunds**, you can disable this to exclude full refund objects from the charges stream, reducing response payload sizes. When disabled, only refund IDs are included. This setting only affects full refresh syncs. See the [Stripe Charges API](https://docs.stripe.com/api/charges/list) for details. + +12. (Optional) For **Expand Invoice Details**, you can disable this to exclude full discount and tax rate objects from the invoices stream, reducing response payload sizes. When disabled, only IDs are included. This setting only affects full refresh syncs. See the [Stripe Invoices API](https://docs.stripe.com/api/invoices/list) for details. + +13. Click **Set up source** and wait for the tests to complete. @@ -158,6 +164,10 @@ The Stripe connector should not run into Stripe API limitations under normal usa Please be aware: this also means that any change older than 30 days will not be replicated using the incremental sync mode. If you want all your synced data to remain up to date, please set up your sync frequency to no more than 30 days. ::: +#### Performance optimization settings + +The **Expand Charge Refunds** and **Expand Invoice Details** configuration options only affect **full refresh** syncs, which use the direct List APIs. **Incremental** syncs use the [Events API](https://docs.stripe.com/api/events/list) which returns full objects without expand parameters, so these settings have no effect on incremental sync performance. + ### Troubleshooting Since the Stripe API does not allow querying objects which were updated since the last sync, the Stripe connector uses the Events API under the hood to implement incremental syncs and export data based on its update date.