The starter template for AI startups. Auth, checkout and i18n included. Français
← All posts Revenue

Payments on day one: the checkout Alinement ships with

Alinement team Alinement team September 22, 2026
checkoutpayments

The fastest way to learn whether your AI product matters is to ask people to pay for it. That makes checkout a validation tool, not a final polish step, and it's why Alinement ships with a full one.

A checkout in three steps

The checkout keeps the whole form on one page and unlocks it step by step:

  1. Contact and email verification. The shopper enters their details and a 6-digit code goes to their inbox. The rest of the form stays locked until the code checks out, so you never take payment from an address you can't reach. Signed-in customers skip this step.
  2. Coupon. Codes apply before payment and the discount shows up in the totals straight away. Launch codes like LAUNCH20 are the cheapest marketing you'll run.
  3. Payment. Card, PayPal and Flutterwave inline checkout. Add your Flutterwave public key and the inline window opens with the order total and currency already filled in.

Plans go straight to checkout

Pricing buttons are plain links to /checkout/?plan=developer or ?plan=business. They work before any JavaScript loads, they're easy to share in emails, and the cart only ever holds one plan, because a customer buys one licence per order. Prices come from a single catalogue, src/_data/plans.json, which both the pricing page and the checkout read, so the two can't disagree.

Measured from the start

Each step sends a GA4 ecommerce event: view_item_list on pricing, then add_to_cart, begin_checkout and purchase. Items keep the same ID through the whole funnel, so GA4 can join them and show you where people drop off. In local development, events are also checked against GA4's Measurement Protocol validator, which catches malformed events before they pollute your reports.

Protected without friction

Every gated action, including sign-in, code verification and coupons, fetches a reCAPTCHA v3 token first. There are no puzzles for real customers, and bots get filtered out. When a token can't be fetched, the shopper sees a clear message instead of a button that silently does nothing.

Going live

The demo service accepts any code except 000000, which lets you show the error state. To go live:

  • Set DATA_MODE=live and API_BASE_URL so coupon checks reach your backend.
  • Add your FLUTTERWAVE_PUBLIC_KEY, RECAPTCHA_SITE_KEY and GA4_MEASUREMENT_ID.
  • Run bun run deploy:check. It refuses production builds that still use placeholder settings.

The checkout and payments guide walks through each setting. On the Business owner plan, we connect your payment provider for you.

Share this
Launch offer: 20% off either licence with code LAUNCH20 at checkout.