Skip to main content

How to Accept Payments on Your Form with Stripe

What you can do with Stripe payments on Uplup

Connect your Stripe account to any Uplup form to charge for access, sell products, collect registration fees, or accept donations. Payments are processed securely through Stripe Connect, money goes directly to your Stripe account, and Uplup never touches the funds.

  • One-time payments tied to a form submission
  • Discount codes and partial refunds from your Uplup dashboard
  • 19+ supported currencies
  • Webhook events for every state change (succeeded, failed, refunded, disputed)
  • Full audit trail per payment

Plan requirement

Stripe payments require Pro plan or higher. Free and Starter plans do not include the Payment Page; upgrade in your account settings to enable it.


Step 1 — Connect your Stripe account

  1. Open your Uplup dashboard and go to Integrations.
  2. Find the Stripe card under Payments.
  3. Click Connect Stripe. A popup window will open Stripe’s authorization page.
  4. Sign in to your existing Stripe account (or create a new one — Stripe will walk you through onboarding).
  5. After authorizing, the popup closes automatically and Uplup shows your account email under “Connected”.

If you operate multiple brands inside Uplup (agencies often do), each brand can connect a different Stripe account.


Step 2 — Add a Payment Page to your form

  1. Open the form builder for the form you want to monetize.
  2. Click + Add page and choose Payment Page.
  3. Configure the price, currency, and product name. Optionally enable discount codes, billing address collection, or cardholder name.
  4. Drag the Payment Page anywhere in your form. Most owners place it right before the thank-you page.
  5. Save and publish.

How payments are processed

When a respondent reaches the Payment Page, Uplup creates a Stripe PaymentIntent on the back end and renders Stripe’s secure card form (an iframe served by Stripe — Uplup never sees raw card data). When the respondent confirms their card, Stripe processes the charge and notifies Uplup via webhook. Only after the webhook confirms succeeded does the form submission record get created and your outbound webhooks fire.

This payment-first flow means you’ll never see a “ghost submission” without a corresponding successful payment.


Refunds and disputes

  • Refunds: Open the form, go to the Payments tab, click a payment, then Refund. You can issue a full or partial refund. Owners and Collaborators can refund; Viewers cannot.
  • Disputes: If a customer disputes a charge with their card issuer, the dispute appears with a badge in your Payments tab. Manage the dispute (submit evidence) directly in your Stripe Dashboard; Uplup tracks the lifecycle so you always know which payments have outstanding disputes.
  • Refund window: Stripe accepts refunds up to 180 days after the original charge.

Test mode

Connect a Stripe account in test mode to preview the payment flow before going live. Test payments use Stripe’s test cards (e.g., 4242 4242 4242 4242 for success, 4000 0000 0000 0002 for a decline) and never move real money. The Payments tab clearly marks test-mode payments so you can distinguish them from live ones.


Webhook events

If you’ve set up Uplup webhooks, payment-related submissions fire payment.succeeded alongside the usual submission.created. Other events you can subscribe to:

  • payment.succeeded — payment confirmed, submission created
  • payment.failed — card declined or other failure
  • payment.refunded — full or partial refund issued
  • payment.disputed — chargeback opened
  • payment.dispute_won / payment.dispute_lost — dispute resolved

Troubleshooting

  • “Form owner has not connected Stripe”: Connect your Stripe account in Integrations → Stripe. If you connected previously, check that the row is still marked Connected (Stripe sometimes deauthorizes automatically if your account is incomplete).
  • Connection popup doesn’t close: Disable popup blockers and try again. The popup closes automatically on success.
  • Payment shows as Pending forever: Wait up to 30 seconds — Stripe’s webhook delivery can take a moment. If it’s still pending after a minute, check your Stripe Dashboard for the actual status.
  • Refund button missing: Refunds are restricted to Owner and Collaborator team roles. If you’re a Viewer, ask an Owner to issue the refund.