Setting Up Payments
Add subscription-based monetization to your a0 app with our integrated payment system.a0 supports subscription plans that work seamlessly across iOS (App Store) and Web/Android (Stripe). Play Store support, One-time purchases and consumables are coming soon.
Overview
The payment system consists of three main components:- Features - Entitlements users get (e.g., PRO, AD_FREE, UNLIMITED_STORAGE)
- Subscription Plans - Pricing tiers that include one or more features
- Offerings - Bundles of plans presented to users (REQUIRED for paywalls)
Step-by-Step Setup
1. Navigate to Payments
1
Open Project Settings
In your a0 dashboard, go to your project and click on your App Name to access the settings.
2
Access Payments Tab
Click on the Payments tab to access the payment configuration.
2. Create Features
Features represent the entitlements or capabilities users get when they subscribe.1
Add Your First Feature
Click Add Feature and create features like:
PRO
- Access to premium contentAD_FREE
- Remove all advertisementsUNLIMITED_STORAGE
- No storage limitsPRIORITY_SUPPORT
- 24/7 support access
2
Name Features Clearly
Use descriptive names that make it easy to understand what each feature provides.
Features can be reused across multiple subscription plans, so think of them as building blocks.
3. Create Subscription Plans
1
Add New Plan
Click Create Plan to set up your first subscription tier.
2
Configure Plan Details
Each plan requires:
- Plan Name: e.g., “Pro Plan”, “Premium Subscription”
- At least 1 Feature: Select from your created features
- At least 1 Pricing Tier: Choose from weekly, monthly, or annual
3
Set Pricing
Enter prices for each tier you want to offer:
- Weekly: Best for short-term trials
- Monthly: Most popular option
- Annual: Offer discounts for long-term commitment
4. Sync to Payment Providers
Critical: Your payments will NOT work until you sync your plans to the appropriate payment provider. This is the most common setup mistake.
1
Click Sync Plan
Under your created plan, click the Sync Plan button.
2
Choose Provider
Select your payment provider:
- Stripe: For Web and Android (APK)
- Apple App Store: For iOS (IPA)
3
Configure Sync Settings
For Stripe:
- Toggle “Use Stripe sandbox environment” for testing
- Must link your Stripe account first
- Sync to sandbox for testing, production for live apps
- Ensure your app is linked with valid Team ID
- Syncs to both sandbox and production automatically
- Invalid Team ID will cause sync to fail
4
Start Sync
Click Start Sync to create the products in your payment provider.
Once synced successfully, you’ll see a confirmation and your products will be created in Stripe/App Store Connect.
5. Create Offerings
Important: Offerings are REQUIRED for your paywall to display products. Without offerings, your paywall will be empty.
1
Create New Offering
Click Create Offering to bundle plans for your paywall.
2
Configure Offering
- Name: e.g., “Standard”, “Launch Special”, “Black Friday”
- Description: Explain what’s included
- Select Plans: Choose which subscription plans to include
3
Set as Current
Mark which offering should be presented to users by default. This will be available as
offerings.current
in your code.Testing Your Setup
Stripe Test Cards:- Success:
4242 4242 4242 4242
- Decline:
4000 0000 0000 0002
- Use App Store Connect sandbox tester accounts
- Subscriptions auto-renew rapidly for testing
Implementation
Ready to integrate payments into your app? See the Payment Implementation guide for code examples and best practices.Troubleshooting
Paywall shows no products
Paywall shows no products
Most common issue: No offerings created or no current offering setSolution:
- Create at least one offering
- Include your subscription plans in the offering
- Set one offering as “current”
- Ensure plans are synced to payment providers
Payments not working in testing
Payments not working in testing
Most common issue: Forgot to sync or synced to wrong environmentSolution:
- For Stripe testing: Ensure “Use Stripe sandbox environment” is checked
- Always sync after making changes to plans
- Missing subscription metadata in App Store Connect
Stripe sync failing
Stripe sync failing
Common causes:
- Project not linked to Stripe account
- Using production keys in sandbox mode
- Invalid API keys
Apple sync failing
Apple sync failing
Common causes:
- Invalid Team ID in project settings
- App not properly configured in App Store Connect
- Missing agreements in App Store Connect
- Verify Team ID and ensure app is set up in App Store Connect
- Go to App Store Connect → Your App → Subscriptions
- Fill out all required metadata fields (description, screenshots, etc.)
Plan changes not reflecting
Plan changes not reflecting
Remember: You must sync every time you:
- Change pricing
- Add/remove features
- Modify plan details