Stripe Payment
An embedded Stripe checkout field for collecting one-time payments, subscriptions, or saving payment methods.
The Stripe Payment field embeds a Stripe checkout experience directly inside your form. It supports one-time payments, recurring subscriptions, and setup mode for saving payment methods without an immediate charge. The field requires a connected Stripe credential and produces structured output data that can be used in workflow edge conditions.
Configuration
| Property | Type | Default | Description |
|---|---|---|---|
| label | string | -- | Label text displayed above the payment field |
| width | LayoutWidth | "full" | Horizontal space the field occupies |
| credentialId | string | -- | ID of the connected Stripe credential |
| mode | StripePaymentMode | -- | Payment mode: "payment", "setup", or "subscription" |
| amount | number | -- | Payment amount in the smallest currency unit (e.g. cents) |
| dynamicAmount | string | -- | Expression for computing the amount dynamically from other field values |
| currency | string | -- | Three-letter currency code (e.g. "usd", "eur", "gbp") |
| productName | string | -- | Name of the product or service being purchased |
| productDescription | string | -- | Description shown in the checkout |
| allowPromotionCodes | boolean | -- | Whether to allow coupon/promo codes at checkout |
| collectBillingAddress | boolean | -- | Whether to collect the customer's billing address |
| collectShippingAddress | boolean | -- | Whether to collect the customer's shipping address |
| successUrl | string | -- | Redirect URL after successful payment (for hosted checkout) |
| cancelUrl | string | -- | Redirect URL if the user cancels payment (for hosted checkout) |
| buttonText | string | -- | Custom text for the pay button |
| showAmount | boolean | -- | Whether to display the payment amount on the button |
| useEmbeddedCheckout | boolean | -- | Whether to use Stripe Embedded Checkout instead of redirect |
| onComplete | OnCompleteAction | "auto" | Action after payment completes: "auto", "next", "submit", or "none" |
Stripe Connect (Payout) Settings
| Property | Type | Description |
|---|---|---|
| destinationAccountId | string | Connected Stripe account ID for direct payouts |
| platformFeePercent | number | Platform fee as a percentage of the payment amount |
| platformFeeFixed | number | Fixed platform fee in the smallest currency unit |
Payment Modes
- payment -- Collect a one-time payment. The customer is charged immediately.
- subscription -- Set up a recurring subscription. Requires a Stripe Price or Product.
- setup -- Save a payment method for future use without charging the customer.
Output Data
After a payment attempt, the field produces structured output that can be used in workflow edge conditions:
| Output Key | Type | Description |
|---|---|---|
| status | enum | Payment result: "success", "failed", "canceled", "requires_action", or "processing" |
| amount | number | Charged amount in the smallest currency unit |
| currency | string | Three-letter currency code |
| paymentIntentId | string | Stripe PaymentIntent ID |
| checkoutSessionId | string | Stripe Checkout Session ID |
| paymentMethod | enum | Method used (e.g. "card", "bank_transfer", "klarna", "link") |
| cardBrand | enum | Card brand if paid by card ("visa", "mastercard", "amex", etc.) |
| cardLast4 | string | Last four digits of the card |
| customerEmail | string | Customer's email address |
| customerId | string | Stripe Customer ID |
| errorCode | enum | Error code on failure (e.g. "card_declined", "insufficient_funds") |
| errorMessage | string | Human-readable error description |
Example Usage
A simple one-time payment field:
{
"type": "stripePayment",
"label": "Payment",
"mode": "payment",
"amount": 2999,
"currency": "usd",
"productName": "Pro Plan",
"productDescription": "Annual subscription to the Pro plan",
"showAmount": true,
"buttonText": "Pay $29.99",
"collectBillingAddress": true,
"onComplete": "next"
}