Docs

Payments

Connect Stripe

Buyers pay your own Stripe account. We create each checkout on it and listen for Stripe's events. We never hold the money and never see a card number.

Connect your account

  1. Open Payments. In Payments, under Stripe, choose Connect on the Test side, then say whether you have a Stripe account.
  2. Finish Stripe's onboarding. Stripe's own pages open. They set up a connected account for your apps, and can copy your verified details from a Stripe account you already have.
  3. Check it's connected. Back on Payments, the Test side shows Connected, with the account's name and ID.
  4. Connect live at go-live. Do the same on the Live side when you're ready to take real money.
  • One connection serves all your apps.
  • Test and live connect separately.
  • Connecting or disconnecting asks you to confirm it's you again if you signed in more than 10 minutes ago.
  • Disconnecting live stops new Stripe checkouts until you reconnect. Watches that paid stay unlocked.

Or use your own key

Choose Use my own key and paste a restricted key with read and write on Checkout Sessions, and read on charges and refunds. We test it with a read-only call before saving it, store it encrypted, and show only its last 4 characters from then on. A secret key is refused: a restricted key can do only what we need.

Your Stripe account

  • It's yours. You get the full Stripe dashboard. Charges are made on your account, so you're the seller.
  • Payouts are Stripe's. Payouts, and Instant Payouts where Stripe makes your account eligible, are in your Stripe dashboard.
  • Fees are Stripe's. Stripe's own fees are yours and come out in Stripe. We take no cut of a sale.
  • Apple Pay and Google Pay show on Stripe's hosted checkout with no setup.
  • Local ways to pay show where they fit the price's currency: Alipay and WeChat Pay, and in euros or złoty iDEAL, Bancontact, EPS, Przelewy24 and BLIK. Turn on the ones you want in Stripe, under Settings, then Payment methods. One that's off is left out. They all pay at once, so the watch unlocks at once.
  • Set a clear statement descriptor, such as your app's name, so buyers recognise the charge on their statement.

What we listen for

Connected this way, you don't add a webhook: Stripe sends your account's events to us.

Stripe eventWhat it meansWhat the watch does
checkout.session.completedPaidUnlocks within about a second if its buy screen is open; otherwise when it next asks.
charge.refundedRefundedLocks at its next check; at once if its buy screen is open.
charge.dispute.createdA dispute openedLocks while the dispute is open.
charge.dispute.closedThe dispute endedWon: unlocks again, unless refunded. Lost: stays locked.
radar.early_fraud_warning.createdA fraud warningStays unlocked. We tell you, so you can refund before a dispute fee.
invoice.paidA renewal paidStays unlocked.
invoice.payment_failedA renewal declinedLocks. The buyer is asked to update their card.
invoice.payment_action_requiredThe bank wants the buyer to confirmShows a QR code to Stripe's invoice page.
Subscription canceled, unpaid or pausedCanceled, or the retries ran outLocks.

We check every event against the checkout we made: the watch and app in its metadata, the amount, the currency, and test or live.

If Stripe can't reach us

Payments shows Needs attention, with the fix. Payments still go through meanwhile, but refunds and disputes can't lock watches until Stripe reaches us again.

Refunds and disputes

  • Refund in your Stripe dashboard. A sale in Sales links straight to it.
  • Refunding a subscription charge doesn't stop the subscription. Cancel it in Stripe too.
  • Respond to disputes in Stripe. The watch stays locked while a dispute is open.

The watch's side of each case is on Refunds, disputes and renewals.

Testing with Stripe

  • Pay with 4242 4242 4242 4242, any future date and any CVC.
  • Make a test dispute with 4000 0000 0000 0259.
  • Refund from Stripe's test dashboard.

Never run refunds, declines or disputes on your live account to test. Use test mode.

Esc