formbasedocs
Go to appApp

Building Forms

Payment collection

Collect one-time payments inside your form. Connect Stripe, insert a Payment field, set a price, and respondents pay through Stripe Checkout.


Connect Stripe

A Stripe connection belongs to one form: connect it from the form you want to collect money on, and repeat for the next form. Card details never pass through formbase.

  1. 1

    Insert a Payment field

    Type / on the canvas, search for "Payment", and place the block. The block shows the amount, a currency picker, and the connection status.

  2. 2

    Click Connect

    formbase sends you to Stripe to authorize the connection. If you do not have a Stripe account yet, you can create one during this step.

  3. 3

    Complete Stripe onboarding

    Stripe walks you through identity verification, bank account setup, and business details. When it is done you land back in formbase.

The badge on the Payment block tells you where the connection stands:

BadgeMeaning
Not connectedNo Stripe account is linked to this form yet.
ConnectedStripe reports charges enabled — respondents can pay.
Setup incompleteStripe has not enabled charges yet. Finish onboarding in your Stripe Dashboard, or reconnect.
VerifyingStripe is reviewing the account. Usually nothing for you to do.
RestrictedStripe restricted the account. Review it in the Stripe Dashboard.
DisconnectedThe connection is gone. Reconnect to keep collecting.

How the Stripe connection works

formbase uses

Stripe Connect

to link your Stripe account to your form. The charge is created on your account, not ours. In practice:

DetailWhat happens
PaymentsGo directly to your Stripe account. formbase does not hold or touch the funds.
Stripe feesStandard Stripe processing fees apply to your account. formbase adds no fee of its own.
Refunds and disputesYou handle these from your own Stripe Dashboard. You are the merchant of record.
ReceiptsShow your business name and details, not formbase.

formbase can see your Stripe account status (whether charges are enabled and onboarding is done) and basic transaction info (payment status, amount, receipt link). It cannot read your Stripe balance, your customer list, or anything outside payments made through your forms.

Set the price

Pick a currency and type an amount on the Payment block. The amount must be at least Stripe’s minimum charge for that currency — $0.50 for USD and EUR, £0.30 for GBP, ¥50 for JPY, 3 kr for SEK and NOK. Stripe caps a single charge just under 1,000,000, so keep amounts below that.

Supported currencies: USD, EUR, GBP, JPY, CAD, AUD, CHF, SEK, NOK, DKK, NZD, SGD, HKD, AED, TRY.

The Payment field takes one-time charges only. Recurring subscriptions are not part of it.

Dynamic pricing

You can vary the amount from the respondent’s answers. Add a Set payment amount action to a logic rule above your Payment field and point it at the block.

Each action picks how it changes the price — set to, increase by, or decrease by:

  • Set to — replace the running price with an absolute amount.

  • Increase by / decrease by — adjust the running price. Stack several for add-ons, surcharges, or discounts; each builds on the amount so far, and the result never drops below zero.

The value itself can be:

  • A fixed number — a literal amount.

  • A field reference — pick a calculated field so the amount follows the answers.

Rules run in the order they appear in the form, starting from the price on the block. A later set to overwrites whatever earlier rules produced, so put your most specific rule last.

Example: a ticket form has a Dropdown (“Standard” or “VIP”) and a Number field for quantity. A calculated field multiplies the base price by quantity. A logic rule targets the Payment field: if the Dropdown is “VIP”, set the payment amount to the calculated field.

Add-on example: a $50 price on the block, a “Rush delivery” switch that increases the amount by 15, and a “Member” switch that decreases it by 5. With both on, the respondent pays $60.

The block price is the fallback

The price you set on the Payment block is what respondents see before any rule fires. Make it your most common price so the form never shows a placeholder amount.

Respondent experience

The respondent clicks Complete Payment on the card and Stripe Checkout opens, hosted by Stripe. After paying they return to the form to finish and submit. The amount charged is recomputed on the server from your own rules — a tampered client cannot change the price.

If the payment fails (expired card, insufficient funds), the card shows the error and a Retry payment button that reopens Checkout.

After payment

Once a respondent has paid, formbase locks the questions that fed the amount — the conditions and values of any rule that set it, the fields behind a referenced calculated field, and anything that controls whether the Payment block is visible. Locked questions show their answers read-only with “Locked because this answer was used for a completed payment.” The rest of the form stays editable.

Viewing payments

Payments show up with the response in the Submissions tab:

FieldDescription
Payment statuspending, paid, failed, or canceled.
Amount and currencyWhat was charged, e.g. $25.00.
Receipt linkOpens the Stripe-hosted receipt, or your Stripe payments dashboard when no receipt URL came back.

The payment also goes out with the submission: notification emails, the PDF, exports, webhooks, Zapier, n8n, Make, request callbacks and the API all carry its amount, currency, status and receipt link under the Payment question. See Bookings and payments for the shape.

Refunds and disputes

Payments land in your Stripe account, so you handle refunds and disputes yourself. formbase reserves the right to issue refunds on your behalf in cases of abuse or policy violations. When Stripe reports a refund or a dispute, the payment on the submission changes to Refunded, Partially refunded or Disputed; integrations are not sent again.

  1. 1

    Issue a refund

    Open your Stripe Dashboard, find the payment, and click Refund. Full and partial refunds are supported.

  2. 2

    Handle a dispute

    If a respondent opens a dispute (chargeback), Stripe notifies you by email. You respond with evidence in your Stripe Dashboard.

Stripe’s own documentation covers both in depth:

Payment logic conditions

A Payment field can also be read by logic: amount equals, amount is greater than, amount is less than, is completed, and is not completed. See Conditional logic for the full operator reference.

Next steps