App-to-Web Checkout
Audience: mobile app developers collecting payments outside the Apple / Google billing systems.
Prerequisites: a backend able to receive webhooks and to authenticate your users.
Principle
Inflow collects the money. You decide who gets access to what.
We deliberately expose no queryable "entitlement" API that your application could call. Your backend remains the source of truth for your users' access rights, fed by our webhooks. This keeps you from depending on our availability in your app's critical path, and saves you from shipping a public key inside your binary.
Your app ──①──▶ Your backend ──②──▶ Inflow API (creates the session)
▲ ▲
│ │ ④ webhook payment.authorized
│ ⑤ deep link │
│ ┌─────┴─────────┐
└─────────────┤ Web checkout │◀──③── the user pays
└───────────────┘
The golden rule: the deep link brings the user back, it proves nothing. Access is granted by your backend when it receives the webhook, never on the strength of a URL parameter.
Two flows, two integrations
| App → Web → App | Web → App | |
|---|---|---|
| Starting point | A paywall inside your app | An ad, a landing page |
| Is the user identified? | Yes, they are signed in | No, they don't know you yet |
| Join key | metadatas.appUserId | The email entered at checkout |
| Return | Deep link back to the app | Download + sign-in by email |
returnMode | APP_RETURN | APP_INSTALL |
This section covers the first one, step by step. The second is covered in Web-to-App Acquisition.
The five steps
| Step | What you do | Guide |
|---|---|---|
| 1 | Create the checkout session from your backend | Creating the Checkout Session |
| 2 | Open checkoutUrl in the system browser | Opening the Checkout |
| 3 | Receive the webhook and grant access | Granting Access with Webhooks |
| 4 | Bring the user back into the app | Returning to the App |
| 5 | Refresh the access right, reconcile if needed | Refreshing Entitlements |
Then validate the whole chain in the sandbox — see Testing Your Mobile Integration — and check the Store Compliance rules before you submit your app.
What this builds on
- Checkout V2 — the session-oriented checkout these steps use. Read it first if you have never created a session.
- Webhooks — the delivery, retry, and signature model your backend must implement.
- Metadata — how the
metadatasobject travels from the session to the payment, the subscription, and the webhook payloads.
Updated 1 day ago