Learn about PXP's Paze component for Android.
Paze is a US digital wallet that lets shoppers pay with cards stored in their Paze wallet. On Android, the Paze component renders a native Paze-branded button, opens the Paze web checkout in a Chrome Custom Tab, and orchestrates checkout completion, token decryption, and transaction submission through PXP.
With the Paze component, you can benefit from:
- Secure checkout: Payments use network tokens and cryptograms from the Paze wallet rather than raw card numbers.
- Reduced friction: Shoppers authenticate with Paze instead of entering card details manually.
- Merchant approval gates: Approve or reject checkout data, decryption, and authorisation at
onCheckoutComplete,onPreDecryption, andonPreAuthorisation. - Flexible decryption: Let the SDK decrypt tokens automatically, or handle decryption on your backend.
- Fraud controls: Integrate AVS and Kount risk screening through component configuration and callbacks.
- Brand customisation: Configure official Paze button colours, shapes, and labels to match your checkout.
Paze currently supports USD transactions only. The SDK validates currency during presentment and throws SDK1213 if another currency is used.
The Paze button uses static presentment: it appears after SDK validation. When you display the component in Compose (Content()), the SDK:
- Validates that
session.allowedFundingTypes.wallets.paze.clientIdis present, enforces length limits on optionalclientName,siteName(SDK config), andpaymentDescription(component config) when set. - Validates optional shopper identity (
emailAddress,phoneNumber) when provided. - Confirms the transaction currency is
USD. - Calls
onInit, shows the Paze button, and callsonPresentmentResolvedwith whether a Custom Tabs-compatible browser is available.
If validation fails, the button stays hidden and onPresentmentResolved(false) is called followed by onError.
Optional emailAddress and phoneNumber are forwarded to the Paze create-session request when provided. Each field is validated independently at presentment and again at checkout.
onPresentmentResolved reflects Custom Tab availability, not Paze wallet eligibility. When presentment succeeds, the button remains visible whether or not a Custom Tabs-compatible browser is available. Use the callback to show warnings or fallback payment methods before checkout.
Set transactionData.entryType to EntryType.Ecom when initialising the SDK. Paze expects an e-commerce entry type on the authorisation request. The standalone button doesn't validate entry type at presentment; use EntryType.Ecom for Paze checkout flows.
The Paze payment flow has five steps.
The component validates configuration and renders the native Paze button in your Compose UI via component.Content(modifier) when presentment succeeds.
When the shopper taps the button:
- The SDK validates checkout configuration (amount, identity, and optional
sessionIdlength). If validation fails,onErrorfires and checkout does not start. onPazeButtonClickedruns after validation succeeds and before create-session.- The SDK calls the PXP
create-sessionAPI and receives a Paze checkout URL. - A full-screen Custom Tab opens the Paze web checkout.
- The shopper completes or abandons checkout; Paze redirects to
pxpcheckout://callbackorpxpcheckout://paze. - The SDK's merged
PazeSdkRedirectActivityreceives the redirect and forwards it to your host Activity. - Your host Activity delivers the result to the component, typically via
onNewIntentanddeliverPazeCheckoutResult. The component also checks for pending results when the host Activity resumes.
If checkout returns COMPLETE, onCheckoutComplete is called with checkout details including masked card data. Return false to reject the checkout; the SDK treats it as incomplete and calls onCheckoutIncomplete.
If you approve checkout, the SDK calls the PXP Paze complete API (using merchantCategoryCode from the session) and receives a securedPayload. onComplete fires with the decoded response before decryption. By default, the SDK decrypts through the PXP decrypt-token API. Return false from onPreDecryption to handle decryption on your backend instead.
After decryption, the SDK builds a scheme-token card transaction and submits it to PXP (calling onGetShopper when configured). Use onPreAuthorisation to provide risk screening data or abort the flow. onPostAuthorisation receives a MerchantSubmitResult with merchantTransactionId and systemTransactionId — verify the full outcome on your backend. Hard submission failures route to onSubmitError.
Paze supports Visa, Mastercard, and Discover. Configure accepted networks with acceptedPaymentCardNetworks on PazeButtonComponentConfig. When omitted, empty, or when all three supported networks are explicitly selected, Paze receives no network filter and all supported networks are accepted. Subsets restrict eligible cards. The value is forwarded to the Paze create-session request when set.
The component renders native Paze button artwork. Configure appearance with PazeButtonStyleConfig on PazeButtonComponentConfig. When style is null, defaults are auto colour, default shape, and checkout-with label. See Configuration for the full reference.
| Colour | Description |
|---|---|
AUTO (default) | Adapts to system theme (Paze Blue in light mode, White in dark mode). |
PAZE_BLUE | Paze brand blue background with white label. |
WHITE | White background with Paze blue label. |
WHITE_WITH_OUTLINE | White background with outline border. |
MIDNIGHT_BLACK | Midnight black background with white label. |
| Shape | Description |
|---|---|
DEFAULT (default) | Rounded corners (4 dp radius). |
RECTANGLE | Square corners (0 dp radius). |
PILL | Fully rounded pill shape. |
| Label | Description |
|---|---|
CHECKOUT_WITH (default) | "Check out with Paze" label artwork. |
CHECKOUT | Paze logo only (no label text). |
PAZE_CHECKOUT | "logo checkout" compact label artwork. |
DONATE_WITH | "Donate with Paze" label artwork. |
Don't apply Modifier.background, tint modifiers, or other styling that overrides official Paze artwork.
- SDK-managed decryption (default): The SDK calls the PXP
decrypt-tokenendpoint afteronComplete. ImplementonPostDecryptionto inspect the decrypted token before authorisation. - Manual decryption: Return
falsefromonPreDecryptionto skip SDK decryption. UseonCompleteto receive thesecuredPayloadand decrypt from your backend. See Implementation.
Paze transactions are submitted as scheme-token card payments. Configure transactionData.entryType as EntryType.Ecom and set the card intent when you initialise the SDK:
| Intent | Description |
|---|---|
Authorisation | Authorise and hold funds for later capture. |
Purchase | Capture payment immediately. |
The SDK forwards any CardIntentType set on transactionData.intent.card. Authorisation and Purchase are the intents typically used for Paze checkout.
- AVS: Set
performAVS = trueonPazeButtonComponentConfigwhen a billing address is returned from decryption. AVS is applied only whenperformAVSis explicitlytrue. SetbillingPreferencetoALLso Paze collects billing data during checkout. - Kount: Return
PazePreAuthorisationResult.TransactionInitData(...)fromonPreAuthorisationwithriskScreeningData. SetkountDisabled = trueonPxpSdkConfigto disable Kount device fingerprinting.
- Implementation: Integrate the Paze button, handle redirects, and wire callbacks.
- Configuration: Explore component properties and styling.
- Events: Reference all Paze callbacks and payload types.