diff --git a/cli/commands/component/init/openapi/src/main/java/com/bytechef/cli/command/component/init/openapi/ComponentInitOpenApiGenerator.java b/cli/commands/component/init/openapi/src/main/java/com/bytechef/cli/command/component/init/openapi/ComponentInitOpenApiGenerator.java
index df712e434cd..5e345081e0a 100644
--- a/cli/commands/component/init/openapi/src/main/java/com/bytechef/cli/command/component/init/openapi/ComponentInitOpenApiGenerator.java
+++ b/cli/commands/component/init/openapi/src/main/java/com/bytechef/cli/command/component/init/openapi/ComponentInitOpenApiGenerator.java
@@ -1492,7 +1492,7 @@ private PropertiesEntry getRequestBodyPropertiesItem(Operation operation, OpenAP
bodyContentType = switch (mimeType) {
case "application/json" -> "JSON";
case "application/xml" -> "XML";
- case "application/x-www-form-urlencoded" -> "FORM_URLENCODED";
+ case "application/x-www-form-urlencoded" -> "FORM_URL_ENCODED";
case "application/octet-stream" -> "BINARY";
case "multipart/form-data" -> "FORM_DATA";
default -> "RAW";
diff --git a/docs/src/content/docs/reference/components/stripe.md b/docs/src/content/docs/reference/components/stripe.md
new file mode 100644
index 00000000000..8788d9b7ea2
--- /dev/null
+++ b/docs/src/content/docs/reference/components/stripe.md
@@ -0,0 +1,177 @@
+---
+title: "Stripe"
+description: "Stripe is a payment processing platform that allows businesses to accept online payments and manage transactions securely."
+---
+## Reference
+
+
+Stripe is a payment processing platform that allows businesses to accept online payments and manage transactions securely.
+
+
+Categories: [payment-processing]
+
+
+Version: 1
+
+
+
+
+
+## Connections
+
+Version: 1
+
+
+### Bearer Token
+
+#### Properties
+
+| Name | Type | Control Type | Description |
+|:--------------:|:------------:|:--------------------:|:-------------------:|
+| Token | STRING | TEXT | |
+
+
+
+
+
+
+
+
+
+## Triggers
+
+
+### New Customer
+Triggers when a new customer is created.
+
+#### Type: DYNAMIC_WEBHOOK
+#### Properties
+
+| Name | Type | Control Type | Description |
+|:--------------:|:------------:|:--------------------:|:-------------------:|
+null
+
+
+### Output
+
+
+
+Type: OBJECT
+
+
+#### Properties
+
+| Type | Control Type |
+|:------------:|:--------------------:|
+| STRING | TEXT |
+| STRING | TEXT |
+| STRING | TEXT |
+| STRING | TEXT |
+| STRING | TEXT |
+| STRING | TEXT |
+| {STRING\(city), STRING\(country), STRING\(line1), STRING\(line2), STRING\(postal_code), STRING\(state)} | OBJECT_BUILDER |
+
+
+
+
+
+
+
+### New Invoice
+Triggers on a new invoice.
+
+#### Type: DYNAMIC_WEBHOOK
+#### Properties
+
+| Name | Type | Control Type | Description |
+|:--------------:|:------------:|:--------------------:|:-------------------:|
+null
+
+
+### Output
+
+
+
+Type: OBJECT
+
+
+#### Properties
+
+| Type | Control Type |
+|:------------:|:--------------------:|
+| STRING | TEXT |
+| STRING | TEXT |
+| STRING | TEXT |
+| STRING | TEXT |
+| STRING | TEXT |
+| STRING | TEXT |
+
+
+
+
+
+
+
+
+
+
+
+## Actions
+
+
+### Create Customer
+Creates a new customer.
+
+#### Properties
+
+| Name | Type | Control Type | Description |
+|:--------------:|:------------:|:--------------------:|:-------------------:|
+| Customer | {STRING\(email), STRING\(name), STRING\(description), STRING\(phone), {STRING\(city), STRING\(country), STRING\(line1), STRING\(line2), STRING\(postal_code), STRING\(state)}\(address)} | OBJECT_BUILDER | |
+
+
+### Output
+
+
+
+Type: OBJECT
+
+
+#### Properties
+
+| Type | Control Type |
+|:------------:|:--------------------:|
+| {STRING\(id), STRING\(description), STRING\(email), STRING\(name), STRING\(phone), {STRING\(city), STRING\(country), STRING\(line1), STRING\(line2), STRING\(postal_code), STRING\(state)}\(address)} | OBJECT_BUILDER |
+
+
+
+
+
+
+### Create Invoice
+Creates a new invoice.
+
+#### Properties
+
+| Name | Type | Control Type | Description |
+|:--------------:|:------------:|:--------------------:|:-------------------:|
+| Invoice | {STRING\(customer), STRING\(currency), STRING\(description)} | OBJECT_BUILDER | |
+
+
+### Output
+
+
+
+Type: OBJECT
+
+
+#### Properties
+
+| Type | Control Type |
+|:------------:|:--------------------:|
+| {STRING\(id), STRING\(customer), STRING\(currency), STRING\(description)} | OBJECT_BUILDER |
+
+
+
+
+
+
diff --git a/server/apps/server-app/build.gradle.kts b/server/apps/server-app/build.gradle.kts
index 2601d904262..eee280c758c 100644
--- a/server/apps/server-app/build.gradle.kts
+++ b/server/apps/server-app/build.gradle.kts
@@ -219,6 +219,7 @@ dependencies {
implementation(project(":server:libs:modules:components:shopify"))
implementation(project(":server:libs:modules:components:slack"))
implementation(project(":server:libs:modules:components:spotify"))
+ implementation(project(":server:libs:modules:components:stripe"))
implementation(project(":server:libs:modules:components:teamwork"))
implementation(project(":server:libs:modules:components:text-helper"))
implementation(project(":server:libs:modules:components:todoist"))
diff --git a/server/ee/apps/worker-app/build.gradle.kts b/server/ee/apps/worker-app/build.gradle.kts
index 1df9805527a..e9cebf1739b 100644
--- a/server/ee/apps/worker-app/build.gradle.kts
+++ b/server/ee/apps/worker-app/build.gradle.kts
@@ -140,6 +140,7 @@ dependencies {
implementation(project(":server:libs:modules:components:shopify"))
implementation(project(":server:libs:modules:components:slack"))
implementation(project(":server:libs:modules:components:spotify"))
+ implementation(project(":server:libs:modules:components:stripe"))
implementation(project(":server:libs:modules:components:teamwork"))
implementation(project(":server:libs:modules:components:text-helper"))
implementation(project(":server:libs:modules:components:todoist"))
diff --git a/server/libs/modules/components/stripe/openapi.yaml b/server/libs/modules/components/stripe/openapi.yaml
new file mode 100644
index 00000000000..5ceb60319d0
--- /dev/null
+++ b/server/libs/modules/components/stripe/openapi.yaml
@@ -0,0 +1,136 @@
+---
+openapi: "3.0.1"
+info:
+ title: "Stripe"
+ description: "Stripe is a payment processing platform that allows businesses to accept online payments and manage transactions securely."
+ version: "v1"
+servers:
+ - url: "https://api.stripe.com/v1"
+paths:
+ /customers:
+ post:
+ summary: "Create Customer"
+ description: "Creates a new customer."
+ operationId: "createCustomer"
+ requestBody:
+ content:
+ application/x-www-form-urlencoded:
+ schema:
+ title: "Customer"
+ type: "object"
+ properties:
+ email:
+ type: "string"
+ description: "Customer’s email address."
+ maxLength: 512
+ name:
+ type: "string"
+ description: "The customer's full name."
+ description:
+ type: "string"
+ phone:
+ type: "string"
+ address:
+ type: "object"
+ properties:
+ city:
+ type: "string"
+ country:
+ type: "string"
+ line1:
+ type: "string"
+ title: "Address Line 1"
+ line2:
+ type: "string"
+ title: "Address Line 2"
+ postal_code:
+ type: "string"
+ title: "Postal Code"
+ state:
+ type: "string"
+ description: "State, country, province, or region."
+ responses:
+ 200:
+ description: "Successful operation."
+ content:
+ application/json:
+ schema:
+ type: "object"
+ properties:
+ body:
+ type: "object"
+ properties:
+ id:
+ type: "string"
+ description:
+ type: "string"
+ email:
+ type: "string"
+ name:
+ type: "string"
+ phone:
+ type: "string"
+ address:
+ type: "object"
+ properties:
+ city:
+ type: "string"
+ country:
+ type: "string"
+ line1:
+ type: "string"
+ line2:
+ type: "string"
+ postal_code:
+ type: "string"
+ state:
+ type: "string"
+ /invoices:
+ post:
+ summary: "Create Invoice"
+ description: "Creates a new invoice."
+ operationId: "createInvoice"
+ requestBody:
+ content:
+ application/x-www-form-urlencoded:
+ schema:
+ title: "Invoice"
+ type: "object"
+ required:
+ - "customer_id"
+ - "currency"
+ properties:
+ customer:
+ type: "string"
+ title: "Customer"
+ description: "Customer who will be billed."
+ currency:
+ type: "string"
+ description: "Currency used for invoice."
+ description:
+ type: "string"
+ description: "Description for the invoice."
+ responses:
+ 200:
+ description: "Successful operation."
+ content:
+ application/json:
+ schema:
+ type: "object"
+ properties:
+ body:
+ type: "object"
+ properties:
+ id:
+ type: "string"
+ customer:
+ type: "string"
+ currency:
+ type: "string"
+ description:
+ type: "string"
+components:
+ securitySchemes:
+ bearerAuth:
+ scheme: "bearer"
+ type: "http"
diff --git a/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/AbstractStripeComponentHandler.java b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/AbstractStripeComponentHandler.java
new file mode 100644
index 00000000000..455e6db24c8
--- /dev/null
+++ b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/AbstractStripeComponentHandler.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2023-present ByteChef Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.stripe;
+
+import static com.bytechef.component.definition.ComponentDsl.component;
+
+import com.bytechef.component.OpenApiComponentHandler;
+import com.bytechef.component.definition.ComponentDefinition;
+import com.bytechef.component.stripe.action.StripeCreateCustomerAction;
+import com.bytechef.component.stripe.action.StripeCreateInvoiceAction;
+import com.bytechef.component.stripe.connection.StripeConnection;
+
+/**
+ * Provides the base implementation for the REST based component.
+ *
+ * @generated
+ */
+public abstract class AbstractStripeComponentHandler implements OpenApiComponentHandler {
+ private final ComponentDefinition componentDefinition = modifyComponent(
+ component("stripe")
+ .title("Stripe")
+ .description(
+ "Stripe is a payment processing platform that allows businesses to accept online payments and manage transactions securely."))
+ .actions(modifyActions(StripeCreateCustomerAction.ACTION_DEFINITION,
+ StripeCreateInvoiceAction.ACTION_DEFINITION))
+ .connection(modifyConnection(StripeConnection.CONNECTION_DEFINITION))
+ .triggers(getTriggers());
+
+ @Override
+ public ComponentDefinition getDefinition() {
+ return componentDefinition;
+ }
+}
diff --git a/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/StripeComponentHandler.java b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/StripeComponentHandler.java
new file mode 100644
index 00000000000..da56047481a
--- /dev/null
+++ b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/StripeComponentHandler.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2023-present ByteChef Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.stripe;
+
+import static com.bytechef.component.definition.Authorization.AUTHORIZATION;
+import static com.bytechef.component.definition.Authorization.TOKEN;
+import static com.bytechef.component.definition.ComponentDsl.authorization;
+import static com.bytechef.component.definition.ComponentDsl.string;
+
+import com.bytechef.component.OpenApiComponentHandler;
+import com.bytechef.component.definition.ActionDefinition;
+import com.bytechef.component.definition.Authorization.ApplyResponse;
+import com.bytechef.component.definition.Authorization.AuthorizationType;
+import com.bytechef.component.definition.ComponentCategory;
+import com.bytechef.component.definition.ComponentDsl.ModifiableComponentDefinition;
+import com.bytechef.component.definition.ComponentDsl.ModifiableConnectionDefinition;
+import com.bytechef.component.definition.ComponentDsl.ModifiableObjectProperty;
+import com.bytechef.component.definition.ComponentDsl.ModifiableProperty;
+import com.bytechef.component.definition.ComponentDsl.ModifiableStringProperty;
+import com.bytechef.component.definition.ComponentDsl.ModifiableTriggerDefinition;
+import com.bytechef.component.definition.OptionsDataSource.ActionOptionsFunction;
+import com.bytechef.component.definition.Property.ValueProperty;
+import com.bytechef.component.stripe.trigger.StripeNewCustomerTrigger;
+import com.bytechef.component.stripe.trigger.StripeNewInvoiceTrigger;
+import com.bytechef.component.stripe.util.StripeUtils;
+import com.bytechef.definition.BaseProperty;
+import com.google.auto.service.AutoService;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * @author Monika Kušter
+ */
+@AutoService(OpenApiComponentHandler.class)
+public class StripeComponentHandler extends AbstractStripeComponentHandler {
+
+ @Override
+ public List getTriggers() {
+ return List.of(StripeNewCustomerTrigger.TRIGGER_DEFINITION, StripeNewInvoiceTrigger.TRIGGER_DEFINITION);
+ }
+
+ @Override
+ public ModifiableComponentDefinition modifyComponent(ModifiableComponentDefinition modifiableComponentDefinition) {
+ return modifiableComponentDefinition
+ .customAction(true)
+ .icon("path:assets/stripe.svg")
+ .categories(ComponentCategory.PAYMENT_PROCESSING);
+ }
+
+ @Override
+ public ModifiableConnectionDefinition modifyConnection(
+ ModifiableConnectionDefinition modifiableConnectionDefinition) {
+
+ return modifiableConnectionDefinition
+ .baseUri((connectionParameters, context) -> "https://api.stripe.com/v1")
+ .authorizations(
+ authorization(AuthorizationType.BEARER_TOKEN)
+ .title("Bearer Token")
+ .properties(
+ string(TOKEN)
+ .label("Token")
+ .required(true))
+ .apply((connectionParameters, context) -> ApplyResponse
+ .ofHeaders(
+ Map.of(
+ "Content-Type", List.of("application/x-www-form-urlencoded"),
+ AUTHORIZATION, List.of("Bearer " + connectionParameters.getRequiredString(TOKEN))))));
+ }
+
+ @Override
+ public ModifiableProperty> modifyProperty(
+ ActionDefinition actionDefinition, ModifiableProperty> modifiableProperty) {
+
+ if (Objects.equals(modifiableProperty.getName(), "__item")) {
+ Optional>> propertiesOptional =
+ ((ModifiableObjectProperty) modifiableProperty).getProperties();
+
+ for (BaseProperty baseProperty : propertiesOptional.get()) {
+ if (Objects.equals(baseProperty.getName(), "customer")) {
+ ((ModifiableStringProperty) baseProperty)
+ .options((ActionOptionsFunction) StripeUtils::getCustomerOptions);
+ }
+ }
+ }
+
+ return modifiableProperty;
+ }
+
+}
diff --git a/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/action/StripeCreateCustomerAction.java b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/action/StripeCreateCustomerAction.java
new file mode 100644
index 00000000000..3b6e2a41310
--- /dev/null
+++ b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/action/StripeCreateCustomerAction.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2023-present ByteChef Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.stripe.action;
+
+import static com.bytechef.component.OpenApiComponentHandler.PropertyType;
+import static com.bytechef.component.definition.ComponentDsl.action;
+import static com.bytechef.component.definition.ComponentDsl.object;
+import static com.bytechef.component.definition.ComponentDsl.outputSchema;
+import static com.bytechef.component.definition.ComponentDsl.string;
+import static com.bytechef.component.definition.Context.Http.BodyContentType;
+import static com.bytechef.component.definition.Context.Http.ResponseType;
+
+import com.bytechef.component.definition.ComponentDsl;
+import java.util.Map;
+
+/**
+ * Provides a list of the component actions.
+ *
+ * @generated
+ */
+public class StripeCreateCustomerAction {
+ public static final ComponentDsl.ModifiableActionDefinition ACTION_DEFINITION = action("createCustomer")
+ .title("Create Customer")
+ .description("Creates a new customer.")
+ .metadata(
+ Map.of(
+ "method", "POST",
+ "path", "/customers", "bodyContentType", BodyContentType.FORM_URL_ENCODED, "mimeType",
+ "application/x-www-form-urlencoded"
+
+ ))
+ .properties(object("__item").properties(string("email").maxLength(512)
+ .label("Email")
+ .description("Customer’s email address.")
+ .required(false),
+ string("name").label("Name")
+ .description("The customer's full name.")
+ .required(false),
+ string("description").label("Description")
+ .required(false),
+ string("phone").label("Phone")
+ .required(false),
+ object("address").properties(string("city").label("City")
+ .required(false),
+ string("country").label("Country")
+ .required(false),
+ string("line1").label("Address Line 1")
+ .required(false),
+ string("line2").label("Address Line 2")
+ .required(false),
+ string("postal_code").label("Postal Code")
+ .required(false),
+ string("state").label("State")
+ .description("State, country, province, or region.")
+ .required(false))
+ .label("Address")
+ .required(false))
+ .label("Customer")
+ .metadata(
+ Map.of(
+ "type", PropertyType.BODY)))
+ .output(outputSchema(object()
+ .properties(object("body")
+ .properties(string("id").required(false), string("description").required(false),
+ string("email").required(false), string("name").required(false), string("phone").required(false),
+ object("address")
+ .properties(string("city").required(false), string("country").required(false),
+ string("line1").required(false), string("line2").required(false),
+ string("postal_code").required(false), string("state").required(false))
+ .required(false))
+ .required(false))
+ .metadata(
+ Map.of(
+ "responseType", ResponseType.JSON))));
+
+ private StripeCreateCustomerAction() {
+ }
+}
diff --git a/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/action/StripeCreateInvoiceAction.java b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/action/StripeCreateInvoiceAction.java
new file mode 100644
index 00000000000..8201cbd29af
--- /dev/null
+++ b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/action/StripeCreateInvoiceAction.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2023-present ByteChef Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.stripe.action;
+
+import static com.bytechef.component.OpenApiComponentHandler.PropertyType;
+import static com.bytechef.component.definition.ComponentDsl.action;
+import static com.bytechef.component.definition.ComponentDsl.object;
+import static com.bytechef.component.definition.ComponentDsl.outputSchema;
+import static com.bytechef.component.definition.ComponentDsl.string;
+import static com.bytechef.component.definition.Context.Http.BodyContentType;
+import static com.bytechef.component.definition.Context.Http.ResponseType;
+
+import com.bytechef.component.definition.ComponentDsl;
+import java.util.Map;
+
+/**
+ * Provides a list of the component actions.
+ *
+ * @generated
+ */
+public class StripeCreateInvoiceAction {
+ public static final ComponentDsl.ModifiableActionDefinition ACTION_DEFINITION = action("createInvoice")
+ .title("Create Invoice")
+ .description("Creates a new invoice.")
+ .metadata(
+ Map.of(
+ "method", "POST",
+ "path", "/invoices", "bodyContentType", BodyContentType.FORM_URL_ENCODED, "mimeType",
+ "application/x-www-form-urlencoded"
+
+ ))
+ .properties(object("__item").properties(string("customer").label("Customer")
+ .description("Customer who will be billed.")
+ .required(false),
+ string("currency").label("Currency")
+ .description("Currency used for invoice.")
+ .required(true),
+ string("description").label("Description")
+ .description("Description for the invoice.")
+ .required(false))
+ .label("Invoice")
+ .metadata(
+ Map.of(
+ "type", PropertyType.BODY)))
+ .output(outputSchema(object()
+ .properties(object("body")
+ .properties(string("id").required(false), string("customer").required(false),
+ string("currency").required(false), string("description").required(false))
+ .required(false))
+ .metadata(
+ Map.of(
+ "responseType", ResponseType.JSON))));
+
+ private StripeCreateInvoiceAction() {
+ }
+}
diff --git a/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/connection/StripeConnection.java b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/connection/StripeConnection.java
new file mode 100644
index 00000000000..f205446a312
--- /dev/null
+++ b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/connection/StripeConnection.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2023-present ByteChef Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.stripe.connection;
+
+import static com.bytechef.component.definition.Authorization.AuthorizationType;
+import static com.bytechef.component.definition.Authorization.TOKEN;
+import static com.bytechef.component.definition.ComponentDsl.authorization;
+import static com.bytechef.component.definition.ComponentDsl.connection;
+import static com.bytechef.component.definition.ComponentDsl.string;
+
+import com.bytechef.component.definition.ComponentDsl;
+
+/**
+ * Provides the component connection definition.
+ *
+ * @generated
+ */
+public class StripeConnection {
+ public static final ComponentDsl.ModifiableConnectionDefinition CONNECTION_DEFINITION = connection()
+ .baseUri((connectionParameters, context) -> "https://api.stripe.com/v1")
+ .authorizations(authorization(AuthorizationType.BEARER_TOKEN)
+ .title("Bearer Token")
+ .properties(
+ string(TOKEN)
+ .label("Token")
+ .required(true)));
+
+ private StripeConnection() {
+ }
+}
diff --git a/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/constant/StripeConstants.java b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/constant/StripeConstants.java
new file mode 100644
index 00000000000..07f1801163b
--- /dev/null
+++ b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/constant/StripeConstants.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2023-present ByteChef Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.stripe.constant;
+
+/**
+ * @author Monika Kušter
+ */
+public class StripeConstants {
+
+ public static final String ID = "id";
+
+ private StripeConstants() {
+ }
+}
diff --git a/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/trigger/StripeNewCustomerTrigger.java b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/trigger/StripeNewCustomerTrigger.java
new file mode 100644
index 00000000000..4a0b0d13e36
--- /dev/null
+++ b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/trigger/StripeNewCustomerTrigger.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2023-present ByteChef Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.stripe.trigger;
+
+import static com.bytechef.component.definition.ComponentDsl.object;
+import static com.bytechef.component.definition.ComponentDsl.outputSchema;
+import static com.bytechef.component.definition.ComponentDsl.string;
+import static com.bytechef.component.definition.ComponentDsl.trigger;
+import static com.bytechef.component.stripe.constant.StripeConstants.ID;
+
+import com.bytechef.component.definition.ComponentDsl.ModifiableTriggerDefinition;
+import com.bytechef.component.definition.Parameters;
+import com.bytechef.component.definition.TriggerContext;
+import com.bytechef.component.definition.TriggerDefinition.HttpHeaders;
+import com.bytechef.component.definition.TriggerDefinition.HttpParameters;
+import com.bytechef.component.definition.TriggerDefinition.TriggerType;
+import com.bytechef.component.definition.TriggerDefinition.WebhookBody;
+import com.bytechef.component.definition.TriggerDefinition.WebhookEnableOutput;
+import com.bytechef.component.definition.TriggerDefinition.WebhookMethod;
+import com.bytechef.component.stripe.util.StripeUtils;
+import java.util.Map;
+
+/**
+ * @author Monika Kušter
+ */
+public class StripeNewCustomerTrigger {
+
+ public static final ModifiableTriggerDefinition TRIGGER_DEFINITION = trigger("newCustomer")
+ .title("New Customer")
+ .description("Triggers when a new customer is created.")
+ .type(TriggerType.DYNAMIC_WEBHOOK)
+ .output(
+ outputSchema(
+ object()
+ .properties(
+ string(ID),
+ string("object"),
+ string("description"),
+ string("email"),
+ string("name"),
+ string("phone"),
+ object("address")
+ .properties(
+ string("city"),
+ string("country"),
+ string("line1"),
+ string("line2"),
+ string("postal_code"),
+ string("state")))))
+ .webhookEnable(StripeNewCustomerTrigger::webhookEnable)
+ .webhookDisable(StripeNewCustomerTrigger::webhookDisable)
+ .webhookRequest(StripeNewCustomerTrigger::webhookRequest);
+
+ private StripeNewCustomerTrigger() {
+ }
+
+ protected static WebhookEnableOutput webhookEnable(
+ Parameters inputParameters, Parameters connectionParameters, String webhookUrl, String workflowExecutionId,
+ TriggerContext context) {
+
+ return new WebhookEnableOutput(
+ Map.of(ID, StripeUtils.subscribeWebhook(webhookUrl, context, "customer.created")), null);
+ }
+
+ protected static void webhookDisable(
+ Parameters inputParameters, Parameters connectionParameters, Parameters outputParameters,
+ String workflowExecutionId, TriggerContext context) {
+
+ StripeUtils.unsubscribeWebhook(outputParameters.getString(ID), context);
+ }
+
+ protected static Object webhookRequest(
+ Parameters inputParameters, Parameters connectionParameters, HttpHeaders headers, HttpParameters parameters,
+ WebhookBody body, WebhookMethod method, WebhookEnableOutput output, TriggerContext context) {
+
+ return StripeUtils.getNewObject(body);
+ }
+}
diff --git a/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/trigger/StripeNewInvoiceTrigger.java b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/trigger/StripeNewInvoiceTrigger.java
new file mode 100644
index 00000000000..f9188e0805e
--- /dev/null
+++ b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/trigger/StripeNewInvoiceTrigger.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2023-present ByteChef Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.stripe.trigger;
+
+import static com.bytechef.component.definition.ComponentDsl.object;
+import static com.bytechef.component.definition.ComponentDsl.outputSchema;
+import static com.bytechef.component.definition.ComponentDsl.string;
+import static com.bytechef.component.definition.ComponentDsl.trigger;
+import static com.bytechef.component.stripe.constant.StripeConstants.ID;
+
+import com.bytechef.component.definition.ComponentDsl.ModifiableTriggerDefinition;
+import com.bytechef.component.definition.Parameters;
+import com.bytechef.component.definition.TriggerContext;
+import com.bytechef.component.definition.TriggerDefinition.HttpHeaders;
+import com.bytechef.component.definition.TriggerDefinition.HttpParameters;
+import com.bytechef.component.definition.TriggerDefinition.TriggerType;
+import com.bytechef.component.definition.TriggerDefinition.WebhookBody;
+import com.bytechef.component.definition.TriggerDefinition.WebhookEnableOutput;
+import com.bytechef.component.definition.TriggerDefinition.WebhookMethod;
+import com.bytechef.component.stripe.util.StripeUtils;
+import java.util.Map;
+
+/**
+ * @author Monika Kušter
+ */
+public class StripeNewInvoiceTrigger {
+
+ public static final ModifiableTriggerDefinition TRIGGER_DEFINITION = trigger("newInvoice")
+ .title("New Invoice")
+ .description("Triggers on a new invoice.")
+ .type(TriggerType.DYNAMIC_WEBHOOK)
+ .output(
+ outputSchema(
+ object()
+ .properties(
+ string(ID),
+ string("object"),
+ string("currency"),
+ string("customer"),
+ string("customer_name"),
+ string("description"))))
+ .webhookEnable(StripeNewInvoiceTrigger::webhookEnable)
+ .webhookDisable(StripeNewInvoiceTrigger::webhookDisable)
+ .webhookRequest(StripeNewInvoiceTrigger::webhookRequest);
+
+ private StripeNewInvoiceTrigger() {
+ }
+
+ protected static WebhookEnableOutput webhookEnable(
+ Parameters inputParameters, Parameters connectionParameters, String webhookUrl, String workflowExecutionId,
+ TriggerContext context) {
+
+ return new WebhookEnableOutput(
+ Map.of(ID, StripeUtils.subscribeWebhook(webhookUrl, context, "invoice.created")), null);
+ }
+
+ protected static void webhookDisable(
+ Parameters inputParameters, Parameters connectionParameters, Parameters outputParameters,
+ String workflowExecutionId, TriggerContext context) {
+
+ StripeUtils.unsubscribeWebhook(outputParameters.getString(ID), context);
+ }
+
+ protected static Object webhookRequest(
+ Parameters inputParameters, Parameters connectionParameters, HttpHeaders headers, HttpParameters parameters,
+ WebhookBody body, WebhookMethod method, WebhookEnableOutput output, TriggerContext context) {
+
+ return StripeUtils.getNewObject(body);
+ }
+}
diff --git a/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/util/StripeUtils.java b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/util/StripeUtils.java
new file mode 100644
index 00000000000..dce3e8f3166
--- /dev/null
+++ b/server/libs/modules/components/stripe/src/main/java/com/bytechef/component/stripe/util/StripeUtils.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright 2023-present ByteChef Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.bytechef.component.stripe.util;
+
+import static com.bytechef.component.definition.ComponentDsl.option;
+import static com.bytechef.component.definition.Context.Http.responseType;
+import static com.bytechef.component.stripe.constant.StripeConstants.ID;
+
+import com.bytechef.component.definition.ActionContext;
+import com.bytechef.component.definition.Context.Http;
+import com.bytechef.component.definition.Context.Http.ResponseType;
+import com.bytechef.component.definition.Option;
+import com.bytechef.component.definition.Parameters;
+import com.bytechef.component.definition.TriggerContext;
+import com.bytechef.component.definition.TriggerDefinition.WebhookBody;
+import com.bytechef.component.definition.TypeReference;
+import com.bytechef.component.exception.ProviderException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Monika Kušter
+ */
+public class StripeUtils {
+
+ public static List