> ## Documentation Index
> Fetch the complete documentation index at: https://docs.funeli.top/llms.txt
> Use this file to discover all available pages before exploring further.

# Hand paying users over to your app or web app

> After purchase, send Funeli buyers into your mobile app with RevenueCat or Adapty access granted, or to your web app with a verified handoff token.

After a visitor pays, Funeli can take them into your product with access already granted. There are two ways: **App handoff** for a mobile app with RevenueCat or Adapty, and **Web handoff** for a web app with your own backend.

## App handoff (RevenueCat or Adapty)

**1. Connect the app**

In the project settings, open **App** and connect RevenueCat or Adapty with its server credentials. Add the **App / universal link** that opens your app and, if you use AppsFlyer, the **AppsFlyer OneLink** for visitors who still need to install it.

**2. Map plans to access**

In the funnel's **Settings**, **App handoff** section, choose the provider and map each plan to the entitlement (RevenueCat) or access level (Adapty) and its duration.

**3. Redeem in the app**

After purchase, the buyer gets a link that opens your app with a one-time handoff token. Your app sends the token and its app user id to Funeli, and Funeli grants access through the provider based on the verified purchase.

RevenueCat receives a promotional entitlement. Adapty validates the real Paddle or Stripe subscription and binds it to the app user. A token is bound to one app user; another user cannot redeem it.

## Web handoff

For a web app, turn on the web redirect in the funnel's **Settings**, **Web handoff** section, or set one for the whole project so every funnel inherits it. After a verified purchase and the final success step, the buyer is sent to your URL with a temporary handoff token. Your backend exchanges the token with Funeli for the verified purchase, the answers you allowed and the visitor's UTM parameters and ad click ids.

> [!WARNING]
>
> A redirect alone does not prove payment. Always exchange the token on your backend, or verify payment from the provider's signed webhook, before granting access.

## Troubleshooting

> [accordion] The app does not open after purchase
>
> Check the **App / universal link** in the project's **App** settings and that your app handles it. For visitors without the app, add an AppsFlyer OneLink so the install carries the handoff token.

> [accordion] Redeeming the token fails
>
> A token can be redeemed by one app user only; the same user can redeem it again and gets the same result. Check that the plan is mapped to an entitlement or access level in the funnel's **App handoff** settings and that the provider credentials pass their checks.

> [accordion] Access in the app does not match the plan
>
> Access comes from the verified purchase and the plan mapping, never from parameters in the link. Fix the mapping for that plan and publish the funnel.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.