Formstep

Payment request form template

A payment request form asks one person to pay one amount. Your caller sets the invoice number and the amount, and the form charges it through your own Stripe account.

Updated

Use this template

Opens in the editor. No account needed to try it.

The Payment form under a photo of a card payment, showing the invoice number and an amount of $240.00
What the recipient sees. Swap the photo and logo for your own.

What it asks

QuestionField key
Email Addressemail
Payment (charges the amount you send)

How the amount gets there

Two hidden fields, invoice_number and amount, are set on the request and cannot be changed by the recipient. A logic rule charges the amount you sent, so one form works for every invoice.

What the recipient sees

Their invoice number and the amount, written into the intro from the two hidden fields, an email question for the receipt, and the card form. The page carries your logo and cover photo, and the charge goes through your own Stripe account. There is no account to make and nothing to type except a card.

How to use it

  1. Select Use this template, then connect your Stripe account.
  2. Publish it, and create a request with the invoice number and amount as request context.
  3. Send the link. When they pay, the request completes and your workflow can mark the invoice as paid.

What to change

  • Currency. The payment question starts in US dollars. Change it on the question; Stripe payments work in 15 currencies on every plan.
  • What it is for. Add a line of text, or a Documents question with the invoice PDF attached per request, so the person sees what they are paying for before they pay.
  • The receipt address. email is there so you have an address for the receipt. Prefill it and lock it when you already know it.
  • More than one amount. The rule charges whatever amount holds, so one form covers every invoice. For a choice between fixed amounts, replace the hidden field with a dropdown and a rule per option.

Send it from a workflow

The invoice number and the amount travel as request context, which the recipient sees but cannot change. The email is prefilled so the receipt goes to the right place.

{
  "method": "requests.create",
  "params": {
    "formId": "j57...",
    "recipient": { "email": "ada@acme.example", "name": "Ada Lovelace" },
    "context": { "invoice_number": "INV-2041", "amount": 240 },
    "prefill": { "email": "ada@acme.example" },
    "readonly": ["email"],
    "delivery": "email",
    "externalId": "INV-2041",
    "callbackUrl": "https://automation.example/webhook/INV-2041"
  }
}

The request completes when the payment goes through, and the callback returns context.invoice_number and context.amount unchanged, which is what your accounting step marks as paid. answers.payment carries the Stripe side: status: "paid", the amount, the currency and a receipt URL. The amount is in the currency’s main unit: 240 is $240.00. An unpaid request expires after 30 days unless you set expiresAt, and sends request.expired, so you can chase it another way.

When another template fits

More templates

Questions about this template

Something else on your mind? The docs cover every setting, and we answer email.

Read the docs

No. Payments go to your own Stripe account, and Formstep takes no cut. Stripe’s own fees still apply.

No. Formstep collects one-time payments only.

Stripe payments are on every plan, including Free, in 15 currencies. The template starts in US dollars, and you change the currency on the question.

The invoice or reference number, the amount, an email address for the receipt, and the payment itself. The invoice number and amount are set on the request, so the person paying cannot change them.

Collect information from anyone.

Publish a sample form, answer it as your recipient would, and watch the answers come back. No account needed.

Read the docs