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.
Important
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
- Open the correct Stripe account. Use sandbox or test mode for setup tests.
- Go to Developers -> API keys. Do not use the publishable key as the secret.
- For a quick test, use a secret key that starts with sk_test_... or preferably a restricted key that starts with rk_test_....
- If you use a restricted key, grant at least read access for Customers and PaymentIntents so GramGrow can look up payments.
- 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.
- 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.
- 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
Use test mode first
Fields in GramGrow
| GramGrow field | What to enter | Purpose |
|---|---|---|
| Publishable key (optional) | pk_test_... | Reference only. Re-check does not authenticate with it. |
| Secret or restricted key | sk_test_... / rk_test_... | Required for re-check and Purchase Checker API lookups. |
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 timestampPurchase 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
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.