THE CASHSDK PLATFORM
Every piece of the purchase.
One thoughtful platform.
The paywall. The purchase. The renewal. The numbers.
Everything connects, so you can get back to building.
THE LIFECYCLE / END TO ENDExplore each stage ↓
Customer taps
Paywalls
Design & ship paywalls over the air
Explore PaywallsPaywall canvasEditing · liveUnlimited projectsAdvanced analyticsAnnual · $59.99SAVE 40%BlocksHero imageHeadlineFeature listPlan pickerSDKs
iOS, macOS, Android, Web & Chrome
Explore SDKsInstall CashSDKSwift.package(url: "github.com/CashSDK/cashsdk-ios")Kotlinimplementation("com.cashsdk:cashsdk-android")Webnpm i cashsdk-web cashsdk-reactNodenpm i cashsdk-nodeSame entitlement API on every platformReceipt validation
Server-side Apple & Google verification
Explore Receipt validationReceipt validation Apple GoogleSignature verifiedpassNot a replaypassFraud score 0.02passBound to app_user_idpassgrant entitlementpro → trueSubscriptions
Entitlements, trials, offers & renewals
Explore SubscriptionsSubscription lifecycle auto-modeledTrial7 daysActive$8.99/moGracebilling retryExpiredwin-backentitlementpro · activeiOSsyncedAndroidsyncedWebsyncedRevenue analytics
MRR, LTV, churn & cohort retention
Explore Revenue analyticsCohort retentionby signup monthM0M1M2M3M4M5Jan01008271645955Jan110079686156Jan2100847466Jan31008070Jan410083Experiments
optimize loopA/B test pricing, copy & layouts
Explore ExperimentsPricing experiment98% significantControl · $8.99/mo$1.42/viewB · $6.99 + trial$1.67/viewRevenue lift+18% · promote BWebhooks & API
Stream every event to your stack
Explore Webhooks & APIEvents livepurchase.completed$8.99subscription.renewed$59.99trial.started-subscription.canceled-payload.json{ "type": "purchase.completed", "id": "evt_9f2", "product": "pro_monthly", "amount": 899, "app_user_id": "u_812" }
Your revenue, settled
01
THE BUILDING BLOCKS
A complete stack.
However you put it together.
Start with the piece you need. The rest is ready when you are.
02
ONE CONSISTENT EXPERIENCE
A few lines.
A lot taken care of.
Your client handles the experience. CashSDK handles verification and purchase state. Your app gets one clear answer.
Explore the SDKsimport CashSDK
// Configure once. Build something great.
CashSDK.configure(publishableKey: "csk_pk_your_key")
// Start a purchase with your store product ID.
let result = try await CashSDK.shared.purchase(
"app.example.pro.yearly"
)
// Server-verified access, ready to use.
if CashSDK.shared.entitlements.isActive("pro") {
unlockPro()
}
Native iOS · StoreKit 2UTF-8
From the first tap.
To what comes next.
Your first integration is the beginning of something good.