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
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
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
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:
| Badge | Meaning |
|---|---|
| Not connected | No Stripe account is linked to this form yet. |
| Connected | Stripe reports charges enabled — respondents can pay. |
| Setup incomplete | Stripe has not enabled charges yet. Finish onboarding in your Stripe Dashboard, or reconnect. |
| Verifying | Stripe is reviewing the account. Usually nothing for you to do. |
| Restricted | Stripe restricted the account. Review it in the Stripe Dashboard. |
| Disconnected | The connection is gone. Reconnect to keep collecting. |
Publishing is blocked until payments are complete
A form with a Payment field will not publish until every payment block has a supported currency and an amount at or above that currency’s minimum, and the form has a connected Stripe account with charges enabled.
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:
| Detail | What happens |
|---|---|
| Payments | Go directly to your Stripe account. formbase does not hold or touch the funds. |
| Stripe fees | Standard Stripe processing fees apply to your account. formbase adds no fee of its own. |
| Refunds and disputes | You handle these from your own Stripe Dashboard. You are the merchant of record. |
| Receipts | Show 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.
A payment makes the submission final
Any form version containing a Payment, Signature, or Schedule appointment field turns off edit after submit for submissions made against it.
Viewing payments
Payments show up with the response in the Submissions tab:
| Field | Description |
|---|---|
| Payment status | pending, paid, failed, or canceled. |
| Amount and currency | What was charged, e.g. $25.00. |
| Receipt link | Opens 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
Issue a refund
Open your Stripe Dashboard, find the payment, and click Refund. Full and partial refunds are supported.
- 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.