Fodo Docs
Forms

Payment Integration

Accept payments through your forms with Stripe and PayPal

Payment Integration

This is a Pro feature. Upgrade to Pro to accept payments.

Collect payments directly through your forms using Stripe or PayPal. Perfect for orders, donations, registrations, and service bookings.

Supported gateways

GatewayCardsDigital WalletsSetup
StripeVisa, MC, Amex, DiscoverApple Pay, Google PayAPI keys
PayPalVia PayPalPayPal balanceClient ID

Setting up payments

1. Configure gateway

Go to Fodo Forms → Settings → Payments

Stripe setup

  1. Log in to Stripe Dashboard
  2. Get your API keys (Settings → API Keys)
  3. Enter in Fodo Forms:
    • Test Publishable Key: pk_test_...
    • Test Secret Key: sk_test_...
    • Live Publishable Key: pk_live_...
    • Live Secret Key: sk_live_...

PayPal setup

  1. Log in to PayPal Developer
  2. Create an app to get credentials
  3. Enter in Fodo Forms:
    • Client ID
    • Secret

2. Enable on form

  1. Edit your form
  2. Go to Settings → Payments
  3. Enable payments
  4. Select gateway
  5. Configure amount

3. Configure amount

Fixed amount

Set a specific price:

Amount Type: Fixed
Amount: $50.00

Field-based amount

Calculate from a form field:

Amount Type: From Field
Field: total_amount

Useful when users select options that affect price.

Calculated amount

Build pricing from multiple fields (Pro):

Base: $100
+ size_option: Small (+$0), Medium (+$25), Large (+$50)
+ rush_delivery: (+$30 if checked)
= Dynamic total

Payment fields

When payments are enabled, the form automatically adds:

Payment summary

Shows the amount to be charged:

┌─────────────────────────┐
│ Order Summary           │
│                         │
│ Service Fee    $50.00   │
│ ─────────────────────── │
│ Total          $50.00   │
└─────────────────────────┘

Card input (Stripe)

Secure card entry powered by Stripe Elements:

Card Number: [4242 4242 4242 4242]
Expiry: [12/25]  CVC: [123]

Card data never touches your server, sent directly to Stripe.

PayPal button

PayPal checkout button that opens PayPal flow.

Payment flow

Stripe flow

  1. User fills out form
  2. User enters card details
  3. User clicks Submit
  4. Card is validated and charged
  5. Form submission is saved with payment info
  6. Confirmation shown to user
  7. Email notifications sent

PayPal flow

  1. User fills out form
  2. User clicks PayPal button
  3. PayPal popup opens
  4. User completes payment in PayPal
  5. Popup closes, form submits
  6. Confirmation shown

Order management

Viewing payments

Form entries include payment information:

Entry #123
──────────────
Name: John Smith
Email: john@example.com
...
──────────────
Payment
Gateway: Stripe
Transaction ID: pi_abc123
Amount: $50.00
Status: Completed

Payment statuses

StatusDescription
CompletedPayment successful
PendingAwaiting payment (PayPal)
FailedPayment declined
RefundedPayment was refunded

Refunds

Refunds must be processed through your payment gateway dashboard:

  • Stripe: Dashboard → Payments → Select → Refund
  • PayPal: Activity → Transaction → Refund

Testing

Stripe test mode

Use test mode before going live:

  1. Toggle to Test Mode in settings
  2. Use test card numbers:
CardResult
4242 4242 4242 4242Successful payment
4000 0000 0000 0002Card declined
4000 0000 0000 9995Insufficient funds

Any future expiry and any 3-digit CVC work in test mode.

PayPal sandbox

Use sandbox accounts for testing:

  1. Create sandbox accounts in PayPal Developer
  2. Toggle to Sandbox in settings
  3. Use sandbox buyer account to test

Receipts & notifications

Customer receipt

Automatic email to customer:

Subject: Payment Receipt - Order #123

Thank you for your payment!

Amount: $50.00
Date: January 15, 2024
Transaction ID: pi_abc123

[Link to receipt]

Admin notification

Your notification email includes payment details:

New order received

Customer: John Smith
Email: john@example.com
Amount: $50.00
Status: Completed
Transaction: pi_abc123

Security

PCI compliance

Fodo Forms uses Stripe Elements and PayPal's hosted fields. Card data is:

  • Entered in iframes hosted by payment provider
  • Never sent to your server
  • Never stored in your database

This keeps you out of PCI scope.

SSL required

Payment forms require HTTPS. Ensure your site has an SSL certificate.

Troubleshooting

Payment failed

  1. Check card details are correct
  2. Verify sufficient funds
  3. Try a different card
  4. Check Stripe/PayPal dashboard for details

"Invalid API key"

  1. Verify keys are entered correctly
  2. Check test vs. live mode matches
  3. Regenerate keys if needed

PayPal button not showing

  1. Verify Client ID is correct
  2. Check browser console for errors
  3. Ensure HTTPS is enabled