Google Forms payments: what works and what it costs
Google Forms payments are always a workaround, because Forms has no payment question and no checkout on any plan. You can still get paid: a Stripe or PayPal link after the form, a Marketplace add-on, or a small Apps Script that creates a checkout for each response. This guide shows how each one works, what it costs on a $100 order at today's published fees, and where each one breaks.
By Raj Kumar, Founder, Zunoform

Short answer
Google Forms cannot accept payments by itself. There is no payment question type, and a paid Google Workspace plan does not add one. To collect money you send the respondent to Stripe or PayPal, either with a link in the confirmation message, through a payment add-on, or with an Apps Script that emails a checkout link after each submission.
- Cheapest: a Stripe Payment Link or PayPal link in the confirmation message. You pay only processor fees (Stripe 2.9% + 30¢ on a US card).
- Least manual: a payment add-on such as Payable Forms or PayQ, which adds its own fee or subscription.
- Most flexible and free: Apps Script plus the Stripe API, if you are comfortable maintaining code.
- None of them can stop someone submitting the form without paying.
Can Google Forms accept payments?
No. Google's own list of Forms question types covers short answer, paragraph, choices, dropdown, file upload, scales, ratings, grids, date and time. There is nothing that takes a card, and nothing in Settings connects Forms to Stripe, PayPal or Google Pay. Workspace plans change storage and admin controls, not the question list.
So every "Google Forms payment" setup is really two systems: the form records the order, and a payment processor takes the money on a separate page. The questions worth asking are how the respondent gets from one to the other, how you match the two records afterwards, and what each hop costs.
Source: Google Docs Editors Help: Choose a type of question for your form
What are the ways to take payments with a Google Form?
There are four in common use. They differ in setup time, in who takes a cut, and in how much reconciliation they leave you with.
1. A Stripe or PayPal link in the confirmation message
Create a Stripe Payment Link (or a PayPal payment link) for a fixed price, then paste the URL into the form's confirmation message and into the description of the last section. The respondent submits, sees the message, clicks, and pays on Stripe's or PayPal's page. Setup takes about ten minutes, and you pay only the processor's normal fees.
The weakness is that the confirmation message is the same static text for everyone. It cannot show a total based on answers, and paying is optional: the response is already saved before the respondent decides whether to click.
2. A payment add-on from the Workspace Marketplace
Add-ons attach a payment step to the form and write paid or unpaid status back to your responses. The two we checked take different pricing routes. Payable Forms (Payable Apps) connects Stripe, PayPal, Square and others and charges per transaction instead of a subscription: a flat $0.49 on payments from $5 to $50 and 1% on payments over $50, on top of processor fees. PayQ (by PCI Vault) has a free plan and paid plans at $9.99/month (Individual) or $16.99/month (Enterprise), and its Marketplace listing shows 19,000+ installs.
Before installing any add-on, read the permissions screen. A payment add-on needs to read your form and its responses to do its job, which means a third party sees your respondents' data. That is fine for a bake sale and worth a conversation with whoever owns data protection if you run a clinic or a school.
Source: Payable Apps: Pricing
Source: Google Workspace Marketplace: PayQ – Add Payments on Google Forms
3. Apps Script plus the Stripe API
Google Forms supports an installable "on form submit" trigger in Apps Script. A short script can read the answers, work out the amount, create a Stripe Checkout Session for exactly that amount, and email the respondent a payment link. It is free apart from Stripe's fees and it solves the variable-price problem. The trade-off is maintenance: you own the code, the API key and the failure cases. A copyable version is further down this page.
4. Bank details or a payment QR code
For a club subscription or a school trip with twenty families, putting bank transfer details or a payment QR code in the last section and ticking payments off weekly is often the fastest thing that works. It stops scaling once you have more than one price or more than a few dozen orders, because every match is done by eye.
How do you add a Stripe or PayPal payment link to a Google Form?
This is the free method, set up so that matching payments to responses later is not painful.
Collect everything before the payment step
Put every question you need (items, quantity, delivery details, contact) in the form itself and turn on email collection in Settings. If someone never clicks through to pay, you still have a complete order and a way to chase it. Do not rely on the payment page to collect order details.
Create one Payment Link per price
In the Stripe Dashboard, create a Payment Link for each fixed price, named after the option it belongs to (for example "Adult ticket" and "Child ticket"). In PayPal, create a payment link or button per price. Avoid a single "pay what you owe" link: typed amounts are where mistakes come from.
Route respondents to the right link
If you have several prices, ask the ticket-type question as Multiple choice and use "Go to section based on answer" so each respondent lands on a final section that contains only their link. With one price, put the link in the confirmation message under Settings, Presentation.
Give yourself a matching key
Stripe Payment Links accept URL parameters such as prefilled_email and client_reference_id (letters, numbers, dashes and underscores, up to 200 characters), which come back in Stripe's checkout.session.completed event. The catch: a Google Forms confirmation message is the same for everyone, so it cannot insert each respondent's email or ID. With a static link, ask buyers to use the same email on both pages and match on that; for per-person references, use the Apps Script method below.
Reconcile on a schedule
Once a day or once a week, export Stripe payments and compare them with the response sheet by email address. Mark each row paid in a column you add to the sheet. Anything unmatched after a few days gets a polite reminder email.
What does each Google Forms payment method cost on a $100 order?
Worked example: one $100 payment from a US buyer to a US account. Fees are each provider's published standard US rates, checked on 28 September 2026. Negotiated, nonprofit and volume rates differ.
| Method | Processor fee on $100 | Extra platform fee | You receive | Monthly cost |
|---|---|---|---|---|
| Stripe Payment Link, US card | $3.20 (2.9% + $0.30) | None | $96.80 | $0 |
| Stripe Payment Link, international card | $4.70 (adds 1.5%) | None | $95.30 | $0 |
| PayPal Checkout (buyer pays with PayPal) | $3.98 (3.49% + $0.49) | None | $96.02 | $0 |
| PayPal, standard card payment | $3.48 (2.99% + $0.49) | None | $96.52 | $0 |
| Payable Forms add-on + Stripe | $3.20 | $1.00 (1% over $50) | $95.80 | $0 |
| PayQ add-on + Stripe | $3.20 | None listed per payment | $96.80 | $0 free plan, or $9.99–$16.99 |
| Apps Script + Stripe Checkout | $3.20 | None | $96.80 | $0 |
| Zunoform payment field + your Stripe | $3.20 | None (0%) | $96.80 | $14.99 (Pro plan) |
Stripe adds 1% when currency conversion is needed and 0.5% for manually entered cards. PayPal adds 1.50% to domestic rates for international transactions. Fixed fees differ outside USD. Payable's figures are from its published pricing page; confirm before you rely on them.
Sources: Stripe: Pricing & fees (US) · PayPal: Merchant fees (US), updated 1 September 2026 · Payable Apps: Pricing · Google Workspace Marketplace: PayQ listing
Which is cheaper for Google Forms: Stripe or PayPal?
On a domestic card payment, Stripe is cheaper: $3.20 against $3.98 when the buyer checks out with a PayPal account. The gap grows with the fixed fee on small orders. On a $10 order, Stripe keeps $0.59 and PayPal Checkout keeps $0.84.
PayPal still earns its place. Some buyers will only pay with a PayPal balance, and for them a PayPal link converts better than a card form. If your audience is mixed, offer both links in the final section and let people pick. For international buyers, both add a surcharge (Stripe 1.5%, PayPal 1.50%), and currency conversion costs extra on both.
Add-ons change the maths more than the processor choice does. A 1% per-payment fee costs nothing noticeable at $20 but $10 on a $1,000 invoice, and a $9.99 subscription is expensive if you take five payments a month and cheap if you take five hundred.
Apps Script: create a Stripe checkout for each Google Form response
// Paste into Extensions > Apps Script on the form (a script bound to the form).
// 1. Project Settings > Script properties: add STRIPE_SECRET_KEY (use a test key first).
// 2. Triggers > Add trigger: function onSubmit, event source From form, On form submit.
// 3. In the form's Settings, collect email addresses (Verified or Responder input).
// Price per option label, in cents. Labels must match your form options exactly.
const PRICES = { 'Adult ticket': 2500, 'Child ticket': 1200, 'T-shirt': 1800 };
function onSubmit(e) {
const response = e.response;
const email = response.getRespondentEmail();
let total = 0;
response.getItemResponses().forEach(function (item) {
const answer = item.getResponse();
[].concat(answer).forEach(function (a) { if (PRICES[a]) total += PRICES[a]; });
});
if (!email || total === 0) return;
const key = PropertiesService.getScriptProperties().getProperty('STRIPE_SECRET_KEY');
const res = UrlFetchApp.fetch('https://api.stripe.com/v1/checkout/sessions', {
method: 'post',
headers: { Authorization: 'Bearer ' + key },
payload: {
'mode': 'payment',
'customer_email': email,
'client_reference_id': response.getId().replace(/[^A-Za-z0-9_-]/g, ''),
'line_items[0][price_data][currency]': 'usd',
'line_items[0][price_data][unit_amount]': String(total),
'line_items[0][price_data][product_data][name]': 'Your order',
'line_items[0][quantity]': '1',
'success_url': 'https://example.com/thanks'
}
});
const session = JSON.parse(res.getContentText());
MailApp.sendEmail(email, 'Complete your payment',
'Thanks for your order. Your total is $' + (total / 100).toFixed(2) +
'. Pay here: ' + session.url);
}Test in Stripe test mode first. Apps Script can send email to 100 recipients a day on a free Google account and 1,500 on Workspace, so a busy form can hit the cap. Checkout links expire, so chase unpaid orders promptly. The response ID is stored on the Stripe session, which lets you match the payment to the exact row.
What can't any Google Forms payment workaround fix?
Three things, whichever method you pick.
Payment cannot be a condition of submitting. Forms saves the response the moment the respondent presses Submit. Every method above asks for money afterwards, so you will always collect some orders that never get paid, and you cannot tell a buyer who plans to pay tomorrow from one who changed their mind.
The order and the payment are two records. Even with add-ons that write status back to the sheet, refunds, partial payments and duplicate submissions still need a human to look at both systems. A shared reference (email address, response ID or client_reference_id) makes this bearable; nothing makes it disappear.
Forms cannot calculate. It has no arithmetic on answers, so a total that depends on quantity, size or add-ons must be computed somewhere else: by an add-on, by your script, or by a separate link for every combination. That is where most homegrown setups start charging the wrong amount.
Where Zunoform fits (and where it doesn't)
Zunoform has a payment question type, so the charge happens inside the form, before submission. It uses your own Stripe or PayPal keys, Zunoform takes 0% of each payment, and your processor's normal fees still apply. The amount can come from earlier answers (a price mapped to each option of a choice or dropdown question, plus an optional base fee, tax and discount), and it is recomputed on the server so a respondent cannot edit the price. A form with a required payment field is rejected at submission unless a verified payment is attached, which removes the unpaid-order problem above. Currencies are USD, EUR, GBP and INR.
The limits: publishing a payment field needs the Pro plan ($14.99/month or $149.99/year); on Free you can build and preview it but not publish. Free also caps you at 500 responses a month, while Google Forms has no response cap. If you take a handful of fixed-price payments a month, a Stripe Payment Link in a free Google Form is cheaper and perfectly adequate. Zunoform earns its fee when prices vary by answer, when unpaid orders cost you real time, or when you want the order and the payment in one record.
Forms that usually take payment
Each starts with the order questions laid out; add a payment field to charge at submission.
A complete order flow: product picker, shipping, and card payment priced by selection.
Pick tickets, pay in the same form — prices add up automatically.
Giving tiers, an optional dedication, and secure card payment.
Pick a course, pick a schedule, and pay the fee in one sitting.
Bulk pallet ordering for retail buyers with delivery details and payment.
Questions people ask
Can Google Forms accept payments?
Not natively. Google Forms has no payment question type and no checkout on any plan, including paid Workspace. To collect money, you send respondents to Stripe, PayPal or another processor after they fill in the form, either with a link, a Marketplace add-on, or an Apps Script that emails a checkout link per response.
How do I connect Stripe to Google Forms?
The simplest way is a Stripe Payment Link pasted into the form's confirmation message or final section. For amounts that depend on answers, use a payment add-on or an Apps Script on the form-submit trigger that creates a Stripe Checkout Session for the calculated total and emails the link. Stripe's standard US fee is 2.9% + 30¢ per card payment.
Can I add a PayPal button to a Google Form?
Not as a working button inside the form, because Forms does not run custom code or embeds on the form page. You can paste a PayPal payment link as text in a section description or the confirmation message, where it appears as a clickable link. PayPal Checkout costs 3.49% + $0.49 per US transaction at published rates.
Is there a free way to take payments through Google Forms?
Yes. A Stripe Payment Link or PayPal link has no setup or monthly cost; you pay only the processor's per-transaction fee. An Apps Script integration with Stripe is also free apart from Stripe's fees. Some add-ons have free plans, but check their per-payment fees and limits before relying on them.
Can Google Forms calculate a total price?
No. Google Forms has no calculation feature, so it cannot add up selected items or multiply by quantity. Totals have to be computed by an add-on, by an Apps Script that reads the response, or by giving each price combination its own payment link. A form builder with calculated fields can show and charge the total inside the form.
Can I make payment required before a Google Form submits?
No. Google Forms saves the response when the respondent presses Submit, and every payment method runs afterwards on another page. You can make the payment instructions prominent and chase unpaid orders, but you cannot block submission. Form builders with a native payment field can hold the submission until the charge succeeds.
Are Google Forms payment add-ons safe?
Established add-ons process cards through Stripe or PayPal, so the card data does not sit in your form. The main thing to check is the permissions screen: the add-on needs to read your form and responses, so a third party sees your respondents' data. Check its privacy policy, and use the fewest add-ons you can.
Raj Kumar · Founder, Zunoform
Raj Kumar is the founder of Zunoform, the form builder made by Symphonic Grow. He builds the product and writes these guides, checking every competitor price and feature claim against the vendor's own pages before publishing.
Raj Kumar on LinkedInKeep reading

Ready when you are
Better forms.
Better data.
Start with a conversation, a document or a single page.
Unlimited forms and 500 responses per month on Free.
No card required.
- No credit card
- Unlimited forms
- 500 responses / month