Payment Integration
Accept secure payments directly in your forms with Stripe integration. Perfect for selling products, collecting donations, processing registrations, and monetizing your services.
Overview
WorkForm integrates seamlessly with Stripe to enable secure payment processing directly within your forms. Collect one-time payments with full PCI compliance, customizable amounts, and automatic payment confirmation.
Industry-leading payment processor trusted by millions of businesses worldwide. Stripe handles all security, compliance, and payment processing while you focus on your forms.
- PCI DSS Compliant: Stripe handles all card data securely
- Secure Tokenization: Card details never touch your servers
- Instant Processing: Real-time payment confirmation
Use Cases
Product Sales & E-commerce
Sell digital products, physical goods, or services directly through forms with fixed or custom pricing
Event Registration & Ticketing
Collect registration fees, sell event tickets, or charge for workshops and conferences
Donations & Fundraising
Accept donations with custom amounts, set minimum/maximum values, and collect supporter information
Service Booking & Deposits
Collect deposits for consultations, require upfront payment for services, or process booking fees
Setting Up Stripe Payment
Prerequisites
You need an active Stripe account to accept payments. If you don't have one,sign up for Stripe here.
Connect Stripe to Your Workspace
Go to Settings → Integrations → Stripe in your WorkForm dashboard. Click "Connect Stripe" and enter your Stripe API keys (Publishable Key and Secret Key).
Finding Your Stripe Keys:
- Log into your Stripe Dashboard
- Navigate to Developers → API Keys
- Copy your Publishable key (starts with "pk_")
- Click "Reveal test key" or "Reveal live key" for your Secret key (starts with "sk_" or "rk_")
- Paste both keys into WorkForm
Add Payment Question (Standard Forms)
In your form builder, click "Add Question" and select the Payment question type (credit card icon).
Add Payment Node (Workflow Forms)
Drag a Payment Node onto your workflow canvas and connect it to your flow.
Configure Payment Settings
Click on the payment question/node to configure:
Payment Type
Currently supports One-time payments. Subscription support coming soon.
Amount & Currency
- Fixed Amount: Set a specific price (e.g., $50.00)
- Custom Amount: Allow customers to enter their own amount
- Currency: USD, EUR, GBP, CAD, AUD, JPY, INR
- Min/Max: Set boundaries for custom amounts
Product Details
- Product Name: What the customer is paying for
- Description: Additional details about the product/service
Collection Options
- Collect Email: Request customer email for receipts
- Collect Name: Request cardholder name
- Collect Billing Address: Require full billing address (recommended)
- Collect Shipping Address: For physical products (coming soon)
Test Your Payment Form
Use Stripe's test mode to verify payments work correctly before going live.
Stripe Test Cards:
4242 4242 4242 4242- Successful payment4000 0000 0000 0002- Declined card- Any future expiry date and any 3-digit CVC
Go Live
When ready, switch to Stripe live keys in your integration settings. Update your Stripe account to activate live payments if you haven't already.
How It Works
- 1.User fills out form and reaches the payment question
- 2.Stripe Elements securely loads the payment form (card input field)
- 3.User enters card details, billing info, and any required information
- 4.User clicks "Pay" button to process payment
- 5.Stripe securely tokenizes the card data (card details never touch WorkForm servers)
- 6.Payment is processed through Stripe's API using your secret key
- 7.Success/failure is displayed instantly to the user
- 8.Form progression is blocked until payment succeeds
- 9.Payment details are saved with the form submission
Payment questions automatically block form progression until payment is completed:
- Users cannot proceed to next page or submit form without successful payment
- Once payment succeeds, a green success message is displayed
- Failed payments show clear error messages with retry option
- Real-time validation ensures all required fields are complete
WorkForm captures comprehensive payment details visible in response viewer and CSV exports:
- Payment status (Completed or Pending)
- Amount charged (including custom amounts)
- Currency (USD, EUR, GBP, etc.)
- Payment Intent ID (for Stripe dashboard reference)
- Cardholder name (if collected)
- Customer email (if collected)
- Billing address (if collected)
- Product name and description
- Timestamp of payment
Viewing Payment Data
In the response viewer, payment questions display:
- Table view: Shows currency symbol, amount, and payment status (e.g., "$50.00 (USD) - Completed")
- Detail view: Full payment breakdown including all collected information
Payment detail view shows:
- Green success badge with "Payment Completed"
- Amount and currency
- Payment Intent ID (clickable link to Stripe dashboard)
- Cardholder name and email (if collected)
- Full billing address (if collected)
- Product name and description
When exporting responses to CSV, payment data is formatted clearly:
Standard export:
$50.00 - CompletedWith payment details enabled:
Amount: $50.00 | Currency: USD | Status: Completed | Intent ID: pi_xyz... | Email: customer@example.comAll payments appear in your Stripe Dashboard for detailed tracking:
- View complete payment history
- Issue refunds if needed
- Download detailed transaction reports
- Track revenue and fees
- Manage disputes and chargebacks
- Access customer information
Best Practices
Always Collect Billing Address
Collecting billing address helps reduce fraud, improves success rates, and provides additional verification for card transactions. It's enabled by default for security.
Use Clear Product Descriptions
Provide detailed product names and descriptions so customers know exactly what they're paying for. This reduces confusion and chargebacks.
Set Reasonable Min/Max for Custom Amounts
When allowing custom amounts (e.g., for donations), set minimum and maximum values to prevent accidental typos or fraudulent attempts.
Test Before Going Live
Always test your payment flow with Stripe test keys and test cards before switching to live mode. Verify the entire user journey from start to finish.
Collect Email for Receipts
Enable email collection so customers receive payment confirmations from Stripe. This provides a better customer experience and reduces support requests.
Use Workflow Forms for Conditional Pricing
In workflow forms, you can show different payment amounts based on user selections. For example, charge different prices for different product tiers or membership levels.
Security & Compliance
WorkForm uses Stripe Elements for payment collection, which means:
- Card data never touches your servers: Stripe Elements creates a secure iframe that handles all card input
- Tokenization happens client-side: Card details are converted to secure tokens before any data is sent
- No PCI DSS compliance burden: Stripe handles all compliance requirements
- Automatic security updates: Stripe Elements stays up-to-date with latest security standards
All payment data is transmitted over secure HTTPS connections with industry-standard encryption. Stripe uses 256-bit SSL/TLS encryption for all API communications.
Troubleshooting
Possible causes:
- Stripe not connected to workspace - verify integration settings
- Invalid Stripe API keys - check that keys are correct and not revoked
- Browser blocking Stripe.js - disable ad blockers or privacy extensions
- Network connectivity issues - check internet connection
Common reasons:
- Insufficient funds in customer's account
- Card expired or incorrect expiry date
- Incorrect CVC code
- Card issuer declined the transaction (contact bank)
- Billing address doesn't match card
Solution: Error message from Stripe will indicate the specific issue. Customer should contact their bank or try a different card.
Cause: Stripe integration not set up or deactivated
Solution: Go to Settings → Integrations → Stripe and connect your account with valid API keys.
Possible causes:
- Other required form fields not completed
- Network error during submission
- User navigated away before submission completed
Note: The payment was still processed. Check your Stripe dashboard for the transaction. You can manually follow up with the customer using the payment details.
Stripe Fees & Pricing
WorkForm does not charge any additional fees on top of Stripe's standard rates. You pay only Stripe's processing fees:
- United States: 2.9% + $0.30 per successful charge
- European Cards: 1.4% + €0.25 per charge (varies by country)
- International Cards: Additional 1.5% fee
- Currency Conversion: Additional 1% fee for currency conversion
Technical Details
Payment Processing:
- Uses Stripe.js v3 and Stripe Elements for secure card input
- Implements Payment Intents API for SCA (Strong Customer Authentication) compliance
- Automatic 3D Secure authentication when required
- Client-side tokenization before server communication
Data Storage:
- Payment completion stored as
paymentComplete: true/false - Payment Intent ID stored for reference and refunds
- Amount, currency, and metadata stored with submission
- No raw card data stored (only Stripe tokens)
API Integration:
- Publishable key used for client-side Stripe.js initialization
- Secret key (or restricted key) used for server-side payment processing
- Webhook support for payment status updates (optional)
- Supports both new and legacy Stripe key structures
Supported Features:
- ✅ One-time payments
- ✅ Custom amounts with min/max validation
- ✅ Multiple currencies (USD, EUR, GBP, CAD, AUD, JPY, INR)
- ✅ Billing address collection
- ✅ Email collection for receipts
- ⏳ Subscriptions (coming soon)
- ⏳ Shipping address collection (coming soon)