Skip to content

Kustom Checkout in a React Native app

Add Kustom Checkout to a React Native app with react-native-kustom-inapp-sdk — render KustomCheckoutView, set the snippet and handle onEvent and onError.

This guide adds Kustom Checkout to a React Native app with the Kustom Mobile SDK. You render the KustomCheckoutView component, set the checkout snippet your server returns on it, and handle the events it dispatches. Kustom Checkout in a mobile app explains what’s common to every platform.

You need:

  • A server endpoint that returns a checkout snippet. Your backend, not the app, creates the order with your API credentials and returns its html_snippet. See Create and update an order. This guide calls the endpoint <YOUR-URL>.
  • A return URL. A custom URL scheme your app is registered for, such as myapp://. It brings the customer back after a payment method sends them to a third-party app. See the return URL.

Add react-native-kustom-inapp-sdk to your app. Its getting-started guide lists the available versions.

Import KustomCheckoutView and render it. returnUrl is its only required prop:

import { KustomCheckoutView } from 'react-native-kustom-inapp-sdk';
const Checkout = () => (
<KustomCheckoutView
style={{ flex: 1 }}
returnUrl={'myapp://'}
onEvent={(event) => {
if (event.action === 'complete') {
// Navigate to your confirmation screen
}
}}
onError={(error) => {
// If error.isFatal is set, the checkout can't continue
}}
/>
);

Fetch the html_snippet from <YOUR-URL> and pass it to the component’s setSnippet method. This is what renders the checkout.

onEvent receives a KustomProductEvent with an action and its params. The complete action means the customer has paid, and params.uri is the confirmation URL to load next.

onError receives a KustomMobileSDKError. If its isFatal is set, the checkout can’t continue, so send the customer somewhere else. Events and errors lists every action and error field.

PropTypeRequiredDescription
returnUrlstringYesThe URL third-party apps use to return the customer to your app. It must match the return URL your app is registered for.
styleViewStyleNoStyles the view.
onEvent(event: KustomProductEvent) => voidNoCalled when the component receives an event. The event has an action (string) and params ({ [key: string]: any }).
onError(error: KustomMobileSDKError) => voidNoCalled when an error occurs. The error has a name, a message, an isFatal flag and the sessionId it occurred in.
MethodDescription
setSnippet(snippet)Sets the checkout HTML snippet. Takes a string.
suspend()Suspends the checkout and shows a loading indicator.
resume()Resumes the checkout after suspend().

Point the app at a Playground order and run the flow end to end:

  1. The checkout renders in the view after setSnippet, rather than staying blank.
  2. Paying with Playground test data calls onEvent with a complete event carrying a uri.
  3. Your confirmation screen loads from that uri.
  4. Turning off the network mid-checkout calls onError, with isFatal telling you whether to recover or bail out.

A blank view almost always means the snippet never arrived. Check the response from <YOUR-URL> before suspecting the SDK.

Pausing the checkout while you update the order. Call suspend() before you change the order and resume() afterwards, so the customer never sees stale totals. While suspended, the view shows a loading indicator.

The customer is left in the bank app after BankID. BankID may not return the customer automatically after authentication. They might have to switch back to your app themselves.

This page is also available as Markdown — append .md to its URL — and is indexed in llms.txt.