# Payment collection

Accept one-time payments from respondents via Stripe. Connect your account, set a price or change it with logic, and find each payment with its submission.

## Connect Stripe

Connect a Stripe account once, and every form in the workspace can charge through it. A person has to do this; an AI agent or workflow cannot.

1. **Open Integrations**

   In the sidebar, open **Integrations** and find **Stripe** under Payments & scheduling. Or click **Connect** on a Payment question.

2. **Click Connect**

   Stripe opens to approve the connection. You can create a Stripe account there if you have none.

3. **Complete Stripe onboarding**

   Stripe asks for your identity, bank account, and business details, then sends you back to Formstep.

Payments go straight to your Stripe account, and receipts show your business name. You pay Stripe's usual fees; Formstep adds none. Card details never pass through Formstep.

The badge on the Payment question shows whether the account can take payments. Connected means it can. Verifying means Stripe is reviewing the account, which usually needs nothing from you. For Setup incomplete or Restricted, open your Stripe Dashboard; for Disconnected, reconnect.

### Several Stripe accounts

The first account is the workspace default. To use another account, connect it too, then click **Make default** (owner only), or pick it under **Stripe account** on one form's Payment question.

Disconnecting an account cancels open payments on its forms, and they stop taking payments until they have another account. Completed payments stay in your Stripe account.

## Set the price

Pick a currency and type an amount on the Payment question. Stripe has a minimum per currency, such as $0.50 for USD and EUR or £0.30 for GBP. The Payment question takes one-time charges only, not subscriptions.

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

> **Publishing waits for a complete setup**
>
> A form with a Payment question publishes only when each one has a currency and a valid amount, and the Stripe account can take payments.

## Change the price with logic

To change the price based on answers, add a logic rule with the **Set payment amount** action. It can **set** the price, or **increase** or **decrease** it, by a fixed number or by a [calculated field](https://formstep.io/docs/building-forms/calculated-fields/). Rules start from the price on the question and run top to bottom.

Example: the question says $50. A “Rush delivery” switch increases it by 15, and a “Member” switch decreases it by 5. With both on, the respondent pays $60.

Logic can also read a Payment question: **amount equals**, **is greater than**, **is less than**, **is completed**, and **is not completed**.

## What respondents see

The respondent clicks **Complete Payment**, pays in Stripe Checkout, and comes back to submit the form. They cannot change the amount. If a payment fails, **Retry payment** opens Checkout again.

After payment, the answers that set the price are locked, so the respondent cannot change what they paid for. A form with a Payment question does not allow [edit after submit](https://formstep.io/docs/submissions-analytics/edit-after-submit/).

## Find payments

Each payment shows with its submission in the List view on the form's Submissions tab: its status (pending, paid, failed, or canceled), the amount, and a link to the Stripe receipt. Emails, PDFs, exports, and integrations include the payment too.

Handle

[refunds](https://docs.stripe.com/refunds)

and

[disputes](https://docs.stripe.com/disputes)

in your Stripe Dashboard: you are the merchant. The submission then shows Refunded, Partially refunded, or Disputed. Formstep may refund payments in cases of abuse.

## Next steps

[Conditional logic](https://formstep.io/docs/building-forms/conditional-logic/) — The rules that set the payment amount

[Calculated fields](https://formstep.io/docs/building-forms/calculated-fields/) — Work out a total to charge
