GramGrow
StripeCustomer payments

Set up Stripe customer payments

This guide explains how a workspace connects a customer's Stripe account for purchase verification and payment evidence. It is not GramGrow subscription billing.

Last updated: June 25, 2026

Important

Stripe Customer Payments connects your customer's or project's Stripe account. GramGrow's own plan checkout stays separate. Stripe Connect is the guided onboarding path; the secret/restricted key fields are the API-key fallback for workspaces without Connect onboarding.

What Stripe does in GramGrow

GramGrow uses the saved Stripe credentials to verify payment evidence in Purchase Checker. An operator can check whether a customer email has a successful Stripe payment and whether that payment supports a membership or access decision.

Good for

Test purchases, purchase checks, support cases, and manual revenue verification.

Not the same as

GramGrow plan billing or a finished Stripe webhook ingest. Stripe Connect is its own onboarding path, not the same UI as the API-key fallback.

Stripe Connect vs. API-key fallback

There are three separate Stripe contexts: GramGrow billing pays for the GramGrow workspace; Customer Payments verifies payments in the customer's or project's Stripe account; Stripe Connect is the guided way to connect a customer Stripe account without manual secret handling.

When Stripe Connect is unavailable for the workspace or not completed yet, GramGrow uses the API-key fallback: a secret or restricted key is saved in the workspace and used only for Purchase Checker, re-check, and read-only payment evidence.

Steps in Stripe

  1. Open the correct Stripe account. Use sandbox or test mode for setup tests.
  2. Go to Developers -> API keys. Do not use the publishable key as the secret.
  3. For a quick test, use a secret key that starts with sk_test_... or preferably a restricted key that starts with rk_test_....
  4. If you use a restricted key, grant at least read access for Customers and PaymentIntents so GramGrow can look up payments.
  5. For Stripe Connect: open Connect -> Onboarding options -> OAuth and enable OAuth for Standard accounts. Add the exact same redirect URI that is configured as STRIPE_CONNECT_REDIRECT_URL on the API server.
  6. Make sure the Connect client ID, secret key, and redirect URI use the same Stripe mode. Test or sandbox client IDs do not work with live keys, and live client IDs do not work with test keys.
  7. Set STRIPE_CONNECT_OAUTH_SCOPE to read_write unless Stripe has explicitly enabled read_only for your Connect integration. GramGrow still uses the connection only for payment verification.

Standard OAuth disabled

If Stripe shows a JSON message with "Standard OAuth is disabled" after clicking "Connect Stripe", the GramGrow button reached Stripe correctly. Enable the Standard OAuth flow in Stripe Connect OAuth settings or use the API-key fallback in Payment Settings until then.

Use test mode first

Do not use live keys for setup tests. Test keys usually start with pk_test_, sk_test_, or rk_test_. Live keys start with pk_live_, sk_live_, or rk_live_.

Fields in GramGrow

GramGrow fieldWhat to enter
Publishable key (optional)pk_test_...
Secret or restricted keysk_test_... / rk_test_...

Verify the connection

Save the Stripe credentials in Settings -> Payments, then click Re-check. A successful re-check means GramGrow can reach Stripe with the saved secret or restricted key.

Expected setup result
Stripe card: Connected
Last checked: current timestamp
Last successful check: current timestamp

Purchase Checker

After a successful re-check, use Purchase Checker to verify a customer email. GramGrow looks up the Stripe customer and successful PaymentIntents. For a meaningful test, the same Stripe test account needs a test customer with a successful test payment.

Stripe webhooks

The current Stripe path in GramGrow is an API-based purchase check. Only create a Stripe webhook after GramGrow shows a Stripe webhook endpoint and a field for the Stripe signing secret in your workspace.

Troubleshooting

Re-check stays red

Check that the secret or restricted key belongs to the same Stripe mode as your test data.

Publishable key was pasted as the secret

Publishable keys start with pk_ and cannot authenticate Stripe API lookups. Use sk_ or rk_.

Purchase Checker finds no purchase

Create a customer with the same email and a successful test payment in the same Stripe test account.

GramGrow