Loading tutorials…
Loading tutorials…
Tally + Stripe is the cheapest way to collect online payments without building a custom checkout. Done wrong, you lose 10-15% of would-be customers to confusion. Here's the right setup.
Who this is forFounders selling digital products, services, or memberships who want to collect payment inside a form rather than redirecting to Stripe Checkout. Course creators, consultants, agency owners selling productized services.
What you'll need
Step 1
Tally Pro → Settings → Integrations → Stripe. Authorize with the Stripe account you actually use for production.
In Tally, open any form. Form settings → Integrations → Stripe → Connect.
Authorize via Stripe OAuth. You will be redirected to Stripe to confirm access.
Critical: pick the right Stripe account if you have multiple. Tally connects to ONE account per workspace. Switching is painful.
Confirm the connection in Tally — it shows your Stripe account name and last 4 of account ID.
Step 2
Add the Tally Payment block (Pro). Configure: currency, amount, optional subscription, payment method types.
In the form editor, add a Payment block. It only appears on Pro.
Set currency (USD, EUR, GBP, etc.). Cannot be changed per response — pick once.
Set amount: fixed (e.g., $99) or dynamic from a calculated field (e.g., based on quantity * price).
Choose payment types: card-only (default), or enable Apple Pay / Google Pay / Link if you want higher mobile conversion.
For subscriptions, set frequency: monthly, quarterly, yearly. Stripe creates a subscription object automatically.
Step 3
The email field in Tally maps to the Stripe customer email. Always collect email BEFORE the payment block.
In your form, place an Email block early (Q1 or Q2).
In the Payment block settings, set "Customer email" → map to the Email block.
This ensures every Stripe charge is tied to a customer email, which makes Stripe Dashboard searchable and Stripe receipts deliverable.
Without email mapping, Stripe shows "Guest" charges that are hard to refund or follow up on.
Step 4
After successful payment, redirect to a confirmation page on your site (not the default Tally thank-you).
Form settings → Thank you page → Redirect to URL.
Best practice: redirect to `yoursite.com/welcome?email={email}` with the form's email field passed in.
On the welcome page, send the customer their access link, course login, or onboarding next step.
Critical: do NOT send course access in the redirect itself — only via webhook on payment confirmation. Redirects can fail; webhooks are reliable.
Step 5
In Stripe Dashboard, add a webhook for `checkout.session.completed` or `customer.subscription.created`. Route to your fulfillment endpoint.
Stripe Dashboard → Developers → Webhooks → Add endpoint.
Endpoint URL: your fulfillment endpoint (e.g., `yoursite.com/api/webhooks/stripe`).
Events to listen for: `checkout.session.completed` (one-time), `customer.subscription.created` (recurring), `invoice.paid` (recurring renewals).
On webhook fire, your code grants access (sends course email, creates user account, etc.).
This is the reliable fulfillment path — not the Tally redirect, which fails on browser close.
Step 6
Switch Stripe to Test mode → run a real test card through the form → verify charge in Stripe Dashboard. Then switch to Live mode and run one $1 real charge to confirm.
In Tally → form settings → Payment block, toggle "Test mode" ON.
Submit the form using Stripe test card `4242 4242 4242 4242`, any future date, any CVC.
Verify the test charge appears in Stripe Dashboard → Payments → Test data.
Check the webhook fired: Stripe Dashboard → Webhooks → recent events.
Switch back to Live mode. Run ONE $1 real charge with your own card. Verify Live charge in Stripe Dashboard. Refund yourself.
You are now live. Monitor first 5 real charges manually before trusting the system at scale.
Common mistakes
Skipping the test charge before launch
What goes wrong: Form goes live with a misconfigured Stripe block. First 10 customers cannot complete payment. You lose ~$1,000-2,000 in revenue and 10 angry customers in the first week.
How to avoid: Always run a test-mode charge AND a live $1 real charge before launching. Budget 30 minutes for this — it is non-negotiable.
Fulfilling via redirect instead of webhook
What goes wrong: Customer pays, closes the tab before redirect, never gets their course access. Refund requests, angry emails, churn. Affects ~5-10% of customers on mobile.
How to avoid: Use a Stripe webhook for fulfillment. The redirect is for UX (showing a thank-you page). Webhooks are for delivery.
Not collecting email before payment
What goes wrong: Stripe Dashboard shows "Guest" charges. You cannot find the customer to refund. You cannot send a receipt. You cannot follow up. Refund chargebacks compound the problem.
How to avoid: Always place Email block before Payment block. Map Tally email to Stripe customer email in the Payment block settings.
Wrong Stripe account connected
What goes wrong: Payments land in the wrong Stripe account — usually a personal test account instead of the business one. Bookkeeping nightmare. Tax implications. $200-500 of accountant time to untangle per quarter.
How to avoid: Confirm Stripe account name + ID in Tally integrations panel. If wrong, disconnect and re-authorize with the correct account.
Forgetting to switch from Test to Live mode
What goes wrong: Form is live, customers think they paid, but Tally is still in Test mode. No money lands. You discover days later when refund requests pour in.
How to avoid: In Tally Payment block settings, verify "Test mode" is OFF before launching publicly. Re-check after every form edit.
Recap
Done — what's next
How to build a Tally form that actually converts
Read the next tutorial
Hand it off
Payment forms are unforgiving — every misconfiguration costs revenue or trust. A vetted conversion-funnel specialist will set up Tally + Stripe + webhook + fulfillment correctly in 3-4 hours. From $14-16/hr.
See specialist rates
Tally Pro does not take a transaction fee. You pay only Stripe's standard 2.9% + 30¢ per charge. Tally Free does not support payments at all.
Yes, but Tally has no inventory or shipping logic. Use it for simple physical-product checkouts under 10 SKUs. Above that, switch to Shopify or a real e-commerce platform.
Refunds happen in Stripe Dashboard, not Tally. Open the charge in Stripe → Refund button. Tally tracks the original submission but does not have a refund flow.
Yes. In the Payment block, choose subscription mode + frequency (monthly/yearly). Stripe creates the subscription automatically. Customer portal for cancellation is configured in Stripe Dashboard → Billing → Customer Portal.
Card (default), Apple Pay, Google Pay, and Stripe Link. BACS, SEPA, and other regional methods depend on your Stripe account configuration.
Tally
Tally's block-based editor is forgiving — which is why most teams build forms that look fine and convert at 18%. This walks through the build path that lands forms at 35-45% conversion.
Tally
Logic jumps are what turn a static form into a smart one. They are also where most Tally forms quietly break. This walks through the branching patterns that actually hold up at scale.
Tally
Tally's embed code is dead simple. Picking the wrong embed type is where most teams lose 20% of conversions. This walks through inline vs. popup vs. slider vs. full-page — and when each one wins.
Tally
DIY forms are great — until your conversion rate caps at 18% and you cannot tell why. Here is the honest framework: when the cost of self-managing exceeds the cost of hiring, and how to tell which side you are on.