Skip to content
Skip to content
Goodspeed

Connect Stripe to your Goodspeed app

Payment sheet integration for marketplace and commerce apps, with server-side intent creation plus native Stripe SDK on mobile. Goodspeed wires Stripe into every app that needs it at generation time, so you start with a working integration, not a blank config and a documentation tab.

WHAT GETS WIRED IN

Built into every Stripe build

Every app Goodspeed generates with Stripe includes these wired integrations from the first build. No manual setup required.

ItemDescriptionStrength
initStripe() with publishable key from gasConfig.backend.stripe called on app boot, guarded by marketplace feature flaginitStripe() with publishable key from gasConfig.backend.stripe called on app boot, guarded by marketplace feature flag01
presentPaymentSheet() wrapping both initPaymentSheet and presentPaymentSheet with full error surface for checkout UIpresentPaymentSheet() wrapping both initPaymentSheet and presentPaymentSheet with full error surface for checkout UI02
Client secret fetched from a Supabase Edge Function so the secret key stays server-side at all timesClient secret fetched from a Supabase Edge Function so the secret key stays server-side at all times03
Sentry breadcrumb and PostHog event recorded on every payment attempt and completionSentry breadcrumb and PostHog event recorded on every payment attempt and completion04
Webhook handler Edge Function processes Stripe subscription lifecycle events and writes updates to the users tableWebhook handler Edge Function processes Stripe subscription lifecycle events and writes updates to the users table05

Source: gas-template repository · payments/marketplace

REAL GENERATED CODE

A snippet from a Stripe integration the pipeline ships

This pattern comes directly from the gas-template codebase. The studio generates Stripe integration code like this for every app that includes it, not a placeholder you have to fill in yourself.

  1. Payment sheet

    // lib/stripe.ts
    export async function presentPaymentSheet(
      clientSecret: string,
    ): Promise<{ error?: string }> {
      const { error: initError } = await StripeModule.initPaymentSheet({
        paymentIntentClientSecret: clientSecret,
        merchantDisplayName: gasConfig.app.name,
      });
      if (initError) return { error: initError.message };
      const { error } = await StripeModule.presentPaymentSheet();
      return error ? { error: error.message } : {};
    }
GDaily Allergens

Today's log

Gluten
Tree nuts
Shellfish
Dairy
HomeScanLogProfile

START WITH STRIPE

Your Stripe integration, generated