Skip to main content
A payment provider records purchases and subscriptions. Hyzl checks that provider before each scheduled text or call. A payment connection gives Hyzl the answer. It does not give Hyzl control of charges or refunds. Open Payment connections Hyzl does not charge, refund, or change purchases through this connection.

Choose a provider

Choose the provider that knows who paid: One connected provider completes this setup step. If a payment check fails, recovery waits and does not contact the person.

Check the web and your iPhone app

A person who left your paywall can pay on your website or in your iPhone app. Connect Stripe first, then connect RevenueCat. Hyzl then checks Stripe and RevenueCat before every text and call. Anyone whose payment either one finds is never contacted. Hyzl can miss a payment in two cases: some one-time purchases in your iPhone app, explained in Connect RevenueCat, and some web payments by people without a Stripe customer, explained below. Send one userId for each person: the same value that your iPhone app passes to Purchases.logIn(). Use that value on your Stripe Checkout too. See Match each person to a payment. Someone who signed up in your iPhone app may have no Stripe customer. Hyzl contacts that person only when RevenueCat answers that they have not paid and Stripe finds no payment. Without a stripeCustomerId in the paywall event, Hyzl finds a web payment in only three ways:
  • A Stripe Checkout that carries the userId and started no earlier than a day before the paywall event.
  • A Stripe subscription with the userId in its metadata.userId, or on a Stripe customer with the userId in its metadata.userId. Stripe can take about a minute to make a new one findable.
  • A Stripe subscription on a Stripe customer whose email is the paywall event’s email, written the same way or in all lowercase letters.
So a one-time web payment is found only through the first way. Hyzl misses any other web payment by that person and can contact them. That includes an older Checkout that carried the userId only on the Checkout, and a Stripe customer whose email is written differently, even only in capital letters. For subscriptions, send stripeCustomerId whenever you know it, and set subscription_data.metadata.userId on your Checkout so that the subscription carries the userId. A person without a userId cannot be found in RevenueCat, so Hyzl never contacts that person. After you connect RevenueCat, an event with only a stripeCustomerId stops recovery for that person. When someone writes back or calls and asks for your link, Hyzl checks Stripe and RevenueCat first. Hyzl texts the link only when both answer and neither finds a payment. That check runs only on an app that checks Stripe and RevenueCat, and only for people Hyzl has not already found paid. Someone Hyzl already found paid gets the link if they ask for it, without a new check, as before. On an app that checks one provider, Hyzl texts the link when asked, without a new check, as before. If RevenueCat cannot answer for a person, Hyzl does not contact that person and checks again later. This holds when RevenueCat refuses the connection too. After eight failed checks in a row, about 25 hours after the first, recovery ends for that person. A Stripe refusal ends recovery sooner, about five minutes after the first failed check. Reconnect as soon as a card shows Connection broken. See Read the connection status. A purchase in your iPhone app is never counted as recovered revenue. An App Store transaction has no mark that ties it to Hyzl.

Connect RevenueCat

  1. Select Connect RevenueCat.
  2. Sign in to RevenueCat.
  3. Choose only the RevenueCat project for this app.
  4. Select Use this project.
  5. Wait for RevenueCat connected.
If Stripe is already connected, Hyzl asks Add RevenueCat? first. Select Continue to RevenueCat. If your RevenueCat account has more than one project, choose the one for this app and select Add this project. Hyzl asks Add RevenueCat? again. Select Add this project to confirm. With one project, Hyzl adds it for you. Stripe stays connected, and the RevenueCat card says that the project is checked alongside Stripe. You do not paste a RevenueCat key into Hyzl. The userId in each paywall event must exactly match the value from Purchases.logIn(). A different value can make a paid person appear unpaid. RevenueCat does not let Hyzl read one-time purchases yet. A one-time purchase in your iPhone app counts as paid only while it unlocks an active entitlement. A consumable, or a product without an entitlement, does not count. Subscriptions count whether they are active or expired. After connection, the card shows the project name and Connected to RevenueCat. Select Change project to use another project. Select Connect a different account to use another RevenueCat account. The new account replaces the current account after a successful connection. If Stripe is connected too, Stripe stays connected. If RevenueCat has one project, Hyzl selects it in the project list. If no project appears, review the RevenueCat account.

Connect Stripe

  1. Select Connect Stripe.
  2. Sign in to Stripe.
  3. Authorize the connection.
  4. Return to Hyzl.
  5. Wait for Stripe connected.
Stripe offers a read-and-write connection. Hyzl only reads payment and subscription data. Hyzl never charges, refunds, or changes anything. Connect a live Stripe account. A Stripe test account cannot complete this setup step. After connection, the card shows Connected to Stripe. Select Connect a different account to replace the current Stripe account. If RevenueCat is connected too, RevenueCat stays connected.

Switch providers

On an app that uses RevenueCat, select Connect Stripe to replace RevenueCat with Stripe. Hyzl asks for confirmation before the switch. The dialog names both providers. Select Keep RevenueCat to cancel. A successful switch changes future payment checks. The existing provider remains active until the new connection succeeds. After a switch from RevenueCat, Hyzl checks Stripe alone, and it can contact people who paid in your iPhone app. If people pay in both places, select Connect RevenueCat right after the switch to check both again. On an app that uses Stripe, RevenueCat is added and never replaces Stripe. Select Not now to cancel.

Read the connection status

The status follows the newest payment check from the past 24 hours. Hyzl records every failed check. It records a passing check at most once each time it runs, about every minute, and not when the newest record is already a pass from the past hour. So a failed check can stay newest while later checks in the same run pass. A passing check in a later run clears it. Reconnecting a provider also clears Connection broken. Checks from before the reconnect stop counting, so Home shows No payment check yet until the next check runs. If both providers failed, reconnect both. Reconnecting Stripe does not clear a RevenueCat failure. Hyzl never contacts a person whose own payment check failed. People whose checks pass can still be contacted while a card shows Connection broken. When a person’s check fails, Hyzl waits and checks that person again:
  • Most failures, such as a timeout or an outage, are retried after 5 minutes, 15 minutes, 1 hour, and then every 6 hours. After eight failed checks in a row, about 25 hours after the first, recovery ends for that person.
  • On an app that checks Stripe and RevenueCat, every RevenueCat failure is retried this way. That includes a refused or revoked RevenueCat connection.
  • When Stripe refuses the connection (a 401 or 403 error), recovery ends for that person at the second failed check in a row, about five minutes after the first. This holds on an app that checks Stripe and RevenueCat too, so reconnect Stripe right away.
  • On an app that uses RevenueCat alone, a RevenueCat permission error (403) ends recovery the same way, about five minutes after the first failed check.
When a card says Access wasn’t saved., Hyzl has no saved access for the app’s own provider. On an app that checks Stripe and RevenueCat, that is the Stripe card. Stripe payment checks can still pass meanwhile, so people whose checks pass are still contacted. On an app that uses RevenueCat alone, each person whose step comes due leaves recovery at once, because Hyzl cannot ask RevenueCat. Reconnect the provider. When both are connected and a payment check fails, the card of each provider that failed shows Connection broken. The other card shows Connected with no payment check state. A connected card can also show one payment check state:
  • Last payment check passed. A payment check succeeded within the past 24 hours.
  • No check yet. The first recovery event will check payment. No recent check exists.
  • Your connection needs attention. Reconnect the provider before recovery continues.

After you return to Hyzl

Hyzl can show Checking your connection. after the provider sends you back. Select Refresh connection to load the saved result. If the connection succeeded, Hyzl shows Your payment connection is saved. During setup, select Get your number to continue.

Problems and retries

If Hyzl cannot open a provider, the card shows an error. Check your connection and sign-in, then try again. An expired connection link needs a fresh connection. A signed-out session needs a new sign-in. If RevenueCat shows Loading your RevenueCat projects, wait for the list. Use the retry control if RevenueCat does not answer. If the page cannot load your app data, it shows Couldn’t load this page. Select Try again. While a card shows Connection broken, Hyzl does not contact anyone whose payment check fails. A person whose checks keep failing leaves recovery, so reconnect as soon as you can.