Web, frameworks & mobile
Choose the checkout that fits your app.
Your server talks to the PerionPayments API. Client platforms differ in how safely they can show checkout, keep order state, and come back after the payer approves with their provider.
| Surface | Use it for | Client receives |
|---|---|---|
| Hosted checkout | Browser redirects, native and hybrid apps, and frameworks that do not need an inline payment region. | The checkout URL only. |
| Embedded checkout | HTTPS browser pages that can reserve a 320–480 px PerionPayments-owned region and survive top-level provider navigation. | A short-lived checkout-session client_secret passed only to PerionPayments.js. |
| Payment link | WhatsApp, SMS, QR, email, social commerce, and remote assisted sales. | The share URL or continuation code. |
React, Next.js, Vue, Angular, and Svelte
Create the checkout on your server. Load the pinned SDK in a client-only component after hydration, keep it mounted during requires_action and processing, call destroy() when it finally unmounts, and read the order from your server after completion.
iOS, Android, React Native, Flutter, and Capacitor
Create a hosted checkout without embed_origin, open its returned HTTPS URL in the operating system browser or secure browser session, and use a verified HTTPS Universal Link or App Link as the merchant return. Re-read order status through your server when the app resumes.
Messaging, QR, and social commerce
Share only the payment link URL. Keep track of the order on your server, expect the link to be opened more than once, and fulfill once after a verified event or a server-side read.
Native packages and embedded WebViews are not supported yet.
PerionPayments does not publish iOS, Android, React Native, Flutter, Capacitor, Vue, Angular, or Svelte packages yet. Use hosted checkout in the system browser until we publish a package for your platform, and never put checkout secrets or server credentials in a WebView bridge.
Coming back to your app does not prove payment.
Universal Links, App Links, browser returns, iframe events, and deep links only bring the payer back. Your server still checks the status, amount, currency, environment, and order before fulfilling it once.