End-to-end quickstart
Set up Beacon with Stripe and validate the full flow in under 20 minutes.
tutorial • updated 2026-03-17
Before you start
| Requirement | Why it matters |
|---|---|
| Existing Stripe account | read-only OAuth and visible payment ingestion |
Beacon session authenticated as OWNER or ADMIN | authenticated API operations with real organization context |
| Public HTTPS webhook URL | secure event ingestion |
| Isolated test environment | safe validation before live |
End-to-end flow map
- Connect Stripe.
- Register and validate webhooks.
- Create subscription checkout.
- Confirm final state in dashboard.
- Validate fiscal and observability signals.
Step-by-step
11) Connect existing Stripe
Complete read-only OAuth and verify visible ingestion in the dashboard.22) Configure webhooks
Register the Beacon endpoints in Stripe, store the environment secrets, and validate signatures.33) Create checkout
Call the real checkout endpoint and redirect the user toredirectUrl.44) Confirm outcome
After the checkout return, confirm the subscription withsessionIdor the pending checkout state.55) Validate operations
Check final state across dashboard, webhook processing, and fiscal/operational signals.
API example
curl -X POST "https://test.beacon.pt/api/billing/subscription/checkout?org=acme&mode=test" \
-H "Authorization: Bearer <beacon_session_token>" \
-H "Content-Type: application/json" \
-d '{"plan":"plus","billingCycle":"monthly"}'
Final validation
- Checkout returns
checkoutSessionIdandredirectUrl. POST /api/billing/subscription/confirmreturnssubscriptionfor the correct organization.- Webhook processing stores
webhookEventIdwithout unexpected duplicates. - Dashboard state matches billing and operational timeline.
- No critical alerts in observability.
Quick troubleshooting
| Symptom | Likely diagnosis | Immediate action |
|---|---|---|
| checkout created but state unchanged | missing confirmation step | call POST /api/billing/subscription/confirm and verify events |
| webhook rejected | invalid signature | rotate/revalidate secret and clock drift |
409 conflict | pending checkout, active subscription, or domain blocker | inspect the current state before retrying |