Connect existing Stripe
Connect an existing Stripe account via read-only OAuth and understand real visibility limits.
howto • updated 2026-03-18
Before you start
- Beacon's Stripe app must be registered as an Extension.
STRIPE_EXTENSION_ENABLED=truein the environment.- The Stripe account already exists and must be authorized by an
OWNERorADMINin Beacon. - Use the correct runtime:
https://test.beacon.ptformode=testandhttps://app.beacon.ptformode=live.
Recommended flow
11) Start OAuth
In the Beacon Dashboard, openIntegrationsand callPOST /api/stripe/oauth/start?org=<slug>&mode=<mode>.22) Authorize an existing account
Stripe shows OAuth consent for the existing account. Beacon does not create new accounts.33) Validate callback
Stripe returns toGET /api/stripe/oauth/callback?code=...&state=.... Beacon validatesstate, exchanges thecodefor a token, and confirms the returned scope includesread_only.44) Confirm ingestion
The connection becomesACTIVEand Beacon starts ingesting only the payments and movements visible in that Stripe account.
What this model means
- Beacon does not control payments and does not create Stripe accounts.
- Beacon only ingests what is visible in the connected account.
- If the original charge stays in a third-party platform account, visibility can be partial.
- In those cases, the full fiscal
Saleonly appears when Beacon Connect or equivalent data arrives.
After connecting
- Confirm the dashboard shows the account as an existing Stripe account connected through OAuth.
- Verify ingestion of
charge.succeeded, refunds, disputes and, when applicable,transfer/payout. - Validate that destination-charge cases stay partial until sufficient enrichment arrives.
Common errors
| Signal | Likely cause | Action |
|---|---|---|
| OAuth blocked at start | STRIPE_EXTENSION_ENABLED=false | enable the flag and confirm the Stripe app is registered as an Extension |
| Callback fails with operational error | Stripe did not return read_only | fix the Extension setup in Stripe; Beacon does not treat read_write as a functional fallback |
Payment ingested without full Sale | partial visibility in the connected account | send Beacon Connect with fiscal buyer, seller and lines |
transfer / payout without visible charge | destination charge or platform-controlled flow | treat as partial and enrich through Beacon Connect |
Beacon Connect in the same flow
POST /api/platform-connect/verify-mappingPOST /api/platform-connect/paymentsPOST /api/platform-connect/refundsPOST /api/platform-connect/disputes
Each platform uses its own secret and an externalOrgRef -> organizationId mapping managed in Beacon's admin console.