The Complete Flow
Let’s walk through what happens when a user subscribes to your service.1. User Arrives at Your Website
Your potential customer visits your pricing page and clicks “Subscribe.”2. You Create a Checkout Session
Your backend calls our API to create a checkout session:3. User Lands on Our Checkout Page
The user is redirected to our hosted checkout page atcheckout.eventop.xyz.

- Your company name and logo (from merchant profile)
- Plan details and pricing
- Customer’s email address
- Call-to-action to continue
4. We Detect User’s Status
Our checkout page automatically detects if the user:- Has Our App
- No App Installed
✅ Best case: User already has the Eventop mobile app
- We immediately deep link to the app
- User approves subscription with one tap
- Returns to your site in seconds
5. User Completes Subscription in App
1
App Opens with Deep Link
- Your company name
- Plan details
- Customer’s email
- Current wallet balance
2
Balance Check
The app automatically checks if the user has sufficient balance (typically 3 months of subscription fees as a buffer).
- ✅ Sufficient: Proceeds to Step 3
- ❌ Insufficient: Prompts user to add funds first
3
On-Chain Transaction
User taps “Confirm Subscription” and approves the blockchain transaction.This creates:
- A subscription PDA (Program Derived Address)
- Links their subscription wallet to your merchant wallet
- Registers the billing interval
4
Session Completion
The app calls our backend to complete the checkout session:
6. You Receive a Webhook
Immediately after subscription creation, we send a webhook to your endpoint:7. User Returns to Your Site
The user is redirected back to yoursuccessUrl:
- Display a confirmation message
- Show next steps
- Fetch subscription details from your database
- Provide access to premium features
Recurring Payments
After the initial subscription, payments happen automatically.How Automatic Payments Work
1
Payment Becomes Due
Based on the billing interval (e.g., 30 days), the payment becomes due.
2
Our System Executes Payment
Our automated payment scheduler:
- Detects due payments
- Executes the on-chain transaction
- Transfers funds from user’s subscription wallet to your wallet
3
You Receive Webhook
4
Your System Extends Access
What If Payment Fails?
If a user’s subscription wallet has insufficient balance:- We retry automatically (1 min, 5 min, 30 min intervals)
- You receive a webhook:
- You can notify the user to add funds
- After 3 failures, the subscription becomes inactive
Subscription Lifecycle

States
| State | Description | Your Action |
|---|---|---|
active | Subscription is active and payments are being processed | Provide access to services |
past_due | Payment failed, in retry period | Show warning banner, prompt to add funds |
cancelled | User cancelled subscription | Revoke access (optionally offer grace period) |
expired | Payments failed 3 times | Revoke access, offer reactivation |
Key Concepts
Session vs Subscription
- Checkout Session: Temporary (30 min TTL), used for the checkout process
- Subscription: Permanent on-chain record, represents the active subscription
Customer Identity
Every subscription links three identifiers:- Email: From your system, used for communication
- Customer ID: Your internal user ID (optional)
- Wallet Address: The user’s Solana wallet (on-chain identifier)
Metadata
You can attach custom metadata to checkout sessions:- Is included in all webhooks
- Helps you track conversions and sources
- Can store any JSON-serializable data
Testing the Flow
Test on Devnet first before going live on Mainnet.
- Create a test plan in the dashboard
- Use a devnet wallet as your merchant wallet
- Create a checkout session with a test email
- Download the Eventop app (in devnet mode)
- Complete the checkout flow
- Verify webhooks are received
- Check that the subscription appears in your dashboard