> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vibeflow.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Stripe Node

> Accept payments and manage subscriptions with Stripe

## Overview

The **Stripe Node** integrates Stripe payment processing into your workflows. Handle one-time payments, recurring subscriptions, and subscription management with a simple configuration.

## Required Configuration

### Step 1: API Setup

**Node Label**

* Display name for this node (generates function name)

**Payment Type:** Select one:

* **One-time Payment:** Single payment checkout
* **Recurring (Subscription):** Subscription with recurring billing
* **Cancel Subscription:** Cancel an active subscription
* **Resume Subscription:** Resume a paused/canceled subscription
* **Customer Portal:** Generate link to Stripe's billing portal

**Stripe Secret Key** (for One-time & Recurring only)

* Get your key from [dashboard.stripe.com/apikeys](https://dashboard.stripe.com/apikeys)
* Automatically validated (shows Test/Live mode)

### Step 2: Payment Details

#### One-time Payment

**Required:**

* Amount (in cents, e.g., 1000 = \$10.00)
* Currency (40+ supported: USD, EUR, GBP, JPY, etc.)
* Product Name

**Optional:** Customer Email, Customer ID, Product ID

#### Recurring (Subscription)

**Required:**

* Customer Email

**Pricing (choose one):**

* **Price ID:** Use existing Stripe Price from your dashboard
* **OR define dynamically:**
  * Amount (in cents)
  * Currency
  * Billing Interval (day, week, month, year)

**Optional:** Interval Count, Trial Period Days, Customer ID, Product Name, Product ID

#### Cancel/Resume Subscription

**Required:**

* Subscription ID

#### Customer Portal

**Required:**

* Customer ID

### Value Input Modes

All fields support:

* **Fixed:** Static values
* **From args:** Dynamic values from connected nodes or user input
* **Expression:** Complex value transformations and calculations

## Output Slots

**One-time & Recurring Payments** have 3 outputs:

* **success:** Payment completed
* **failure:** Payment failed or declined
* **expired:** Session expired

**Cancel/Resume/Portal** have 1 output:

* **output:** Operation result

## Testing

**Important:** Open your app in a new tab to test. Stripe Checkout won't work in the preview iframe.

Use test mode key (`sk_test_...`) from your stripe account or Stripe's shared key to try it out:

* `sk_test_51SMQ2dIX0cvZzaSkHVbLxzXL2wzynIbUWfBVKfrV2Mr7npuWnhvtqpmyL45WYmBVMg9o3Pwzq0ts6YrrtUV6jzug00o42QMreJ`

Then use [test cards](https://stripe.com/docs/testing):

* Success: `4242 4242 4242 4242`
* Decline: `4000 0000 0000 0002`

## Connections

**Input Nodes:**

* Frontend Element nodes: Buttons to trigger payments
* Query nodes: Fetch pricing, customer data, or subscription IDs
* Other workflow nodes: Pre-payment actions (transform data, calculate amounts, etc.)

**Output Nodes:**

* Mutation nodes: Save payment records to database
* Conditional nodes: Route based on payment outcome
* Other workflow nodes: Post-payment actions (send emails, grant access, etc.)

## Related Nodes

<CardGroup cols={2}>
  <Card title="Frontend Element Node" icon="mouse-pointer" href="/nodes/frontend-element-node">
    Trigger payments with buttons
  </Card>

  <Card title="Mutation Node" icon="database" href="/nodes/mutation-node">
    Save payment records
  </Card>
</CardGroup>
