{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-guides/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["sub-heading","admonition","required"]},"type":"markdown"},"seo":{"title":"Compliance","description":"Transform your commerce with PXP's unified platform—seamless payments, real-time insights, and global growth in one powerful integration.","lang":"en-UK","siteUrl":"https://developer.pxp.io","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"compliance","__idx":0},"children":["Compliance"]},{"$$mdtype":"Tag","name":"SubHeading","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Learn about Paze implementation requirements and suggested best practices for Android applications."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview","__idx":1},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Paze component follows Paze's digital wallet guidelines for mobile implementation. This page outlines key requirements for compliance with Paze branding, security, and data handling standards on Android."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For complete Paze compliance requirements, refer to your Paze merchant agreement and Paze's digital wallet SDK documentation provided during onboarding."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"technical-requirements","__idx":2},"children":["Technical requirements"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"platform-and-app-configuration","__idx":3},"children":["Platform and app configuration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your app must meet these platform requirements:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Android API 24+:"]}," Set your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["minSdk"]}," to 24 or later."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Jetpack Compose:"]}," The Paze button renders as a Compose component via ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["component.Content(modifier)"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Custom Tab checkout:"]}," Paze checkout opens in a Chrome Custom Tab. Ensure a Custom Tabs-compatible browser is available on target devices."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Checkout redirect:"]}," The SDK merges ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PazeSdkRedirectActivity"]}," for ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pxpcheckout://callback"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pxpcheckout://paze"]},", so you don't need your own intent filter for these default schemes. Create ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PxpCheckout"]}," with an Activity ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Context"]},", implement ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onNewIntent"]},", and call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deliverPazeCheckoutResult"]},". See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/checkout/components/android/paze/implementation#step-2-handle-checkout-redirects"},"children":["Implementation"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["HTTPS only:"]}," API calls to PXP and Paze use HTTPS. Don't disable network security configuration for production builds."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"session-and-credentials","__idx":4},"children":["Session and credentials"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Session and credential handling must follow these rules:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Backend session creation:"]}," Create sessions on your backend with HMAC authentication. Never embed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["hmacKey"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["encryptionKey"]},", API tokens, or Paze credentials in your app binary."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Environment matching:"]}," Use UAT credentials with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Environment.TEST"]}," and production credentials with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Environment.LIVE"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"currency-and-region","__idx":5},"children":["Currency and region"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Paze transactions are subject to these currency and region constraints:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["USD only:"]}," Paze currently supports USD transactions exclusively. The SDK validates currency at presentment and throws ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1213"]}," for other currencies."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["E-commerce entry type:"]}," Set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transactionData.entryType"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["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."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Shopper identity:"]}," When provided, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["emailAddress"]}," must be a valid RFC 5322-style email and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["phoneNumber"]}," must be in US E.164 format without the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["+"]}," prefix (11 digits starting with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1"]},", for example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["15551234567"]},"). Both fields are optional but validated when set."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Card networks:"]}," Visa, Mastercard, and Discover are supported."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"paze-account","__idx":6},"children":["Paze account"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your Unity Portal Paze account must include:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Client ID:"]}," Valid Paze client ID configured in the Unity Portal and present in the session response. Missing values throw ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1202"]}," at presentment."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Profile ID:"]}," Optional profile ID if provided by Paze."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Merchant category code:"]}," Required in the session for payment completion (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["merchantCategoryCode"]},"). Missing values throw ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1202A"]}," when the SDK builds the complete request."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"button-branding-requirements","__idx":7},"children":["Button branding requirements"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The component renders official Paze button artwork. Use only the supported ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PazeButtonStyleConfig"]}," values:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"width":"25%","data-label":"Requirement"},"children":["Requirement "]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Equal prominence"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze button presented with equal prominence to other payment methods."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Required","attributes":{},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Approved colours"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Only use supported values: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AUTO"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PAZE_BLUE"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WHITE"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WHITE_WITH_OUTLINE"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MIDNIGHT_BLACK"]},"."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Required","attributes":{},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Approved shapes"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Only use supported values: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DEFAULT"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RECTANGLE"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PILL"]},"."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Required","attributes":{},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Approved labels"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Only use supported values: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CHECKOUT_WITH"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CHECKOUT"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PAZE_CHECKOUT"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DONATE_WITH"]},"."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Required","attributes":{},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Native button artwork"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Don't replace the SDK button with a custom-styled alternative or overlay that alters Paze branding."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Required","attributes":{},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Responsive layout"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Button scales appropriately within its Compose container using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Modifier.fillMaxWidth()"]}," or equivalent layout constraints."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Required","attributes":{},"children":[]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Don't apply ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Modifier.background"]},", tint modifiers, or other Compose styling that changes Paze button colours, logos, or label artwork. Configure appearance through ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PazeButtonStyleConfig"]}," only. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/checkout/components/android/paze/configuration#styling"},"children":["Configuration"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"security-and-data-handling","__idx":8},"children":["Security and data handling"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"security-requirements","__idx":9},"children":["Security requirements"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Follow these security requirements:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Never store raw card numbers, cryptograms, or network tokens in app storage (SharedPreferences, files, or logs)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Validate all decrypted token data on your secure server before fulfilling orders."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Implement proper error handling and logging without exposing sensitive payment data."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use HMAC authentication for all backend API calls."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Deliver checkout redirects only through ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deliverPazeCheckoutResult"]},". Don't parse Paze callback URLs manually in production unless using a custom scheme integration."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"data-handling-requirements","__idx":10},"children":["Data handling requirements"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Handle shopper and payment data as follows:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Only collect identity data required for checkout (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["emailAddress"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["phoneNumber"]}," on the component). When set, these fields are validated and forwarded to the Paze create-session request."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Comply with applicable privacy regulations (CCPA, state privacy laws, Google Play data safety requirements, and so on)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Handle ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["securedPayload"]}," and decrypted token data only on your backend when using manual decryption."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify transaction results on your backend before order fulfilment."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Don't log full ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["securedPayload"]}," values or network tokens in production."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"backend-verification","__idx":11},"children":["Backend verification"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Always verify payment results on your backend. App callbacks can be manipulated and shouldn't be the sole basis for order fulfilment."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After a successful payment, verify the transaction on your backend:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Retrieve the transaction status from the PXP API using the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["systemTransactionId"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confirm the amount and currency match your order."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Only then fulfil the order or grant access to digital goods."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/checkout/components/android/paze/implementation#step-8-backend-verification-critical"},"children":["Implementation"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"redirect-security","__idx":12},"children":["Redirect security"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Paze checkout uses Chrome Custom Tabs and redirects to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pxpcheckout://callback"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pxpcheckout://paze"]},". Ensure that:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your host Activity implements ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onNewIntent"]}," and calls ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["deliverPazeCheckoutResult"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You create ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PxpCheckout"]}," with an Activity ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Context"]}," so the SDK can register the host for redirect forwarding."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You don't log or expose callback URLs containing checkout response data in production."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For custom callback schemes, register intent filters only for schemes unique to your application."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"fraud-controls","__idx":13},"children":["Fraud controls"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"address-verification-avs","__idx":14},"children":["Address verification (AVS)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["performAVS = true"]},", the SDK automatically adds billing address data from the decrypted payload to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["addressVerification"]}," field of the transaction request when available. Set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["billingPreference"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ALL"]}," so the Paze wallet returns a billing address."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Keep these AVS rules in mind:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["AVS is applied only when ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["performAVS"]}," is explicitly ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["AVS results should inform rather than replace your broader fraud strategy."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you handle decryption on your backend (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPreDecryption"]}," returns ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},"), add ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["addressVerification"]}," to your server-side transaction request using billing data from the decrypt response."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"kount-risk-screening","__idx":15},"children":["Kount risk screening"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When integrating Kount risk screening:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Pass device and session data through ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPreAuthorisation"]}," using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PazePreAuthorisationResult.TransactionInitData(...)"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["kountDisabled = true"]}," on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PxpSdkConfig"]}," only if your fraud strategy doesn't require Kount device fingerprinting."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Review Kount screening results before fulfilling high-value orders."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"best-practices","__idx":16},"children":["Best practices"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"implementation","__idx":17},"children":["Implementation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We recommend the following implementation practices:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PazeButtonStyleConfig"]}," with approved colour, shape, and label values."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Present the Paze button with equal prominence to other payment methods."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Provide ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["emailAddress"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["phoneNumber"]}," when you have verified shopper identity. Both are optional but validated when provided and forwarded to create-session when set."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Implement ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onGetShopper"]}," on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PxpSdkConfig"]}," with a stable shopper ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," for authorisation."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Implement comprehensive error handling with clear, user-friendly messages."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test thoroughly in UAT on physical devices with Chrome installed before switching to live credentials."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"security","__idx":18},"children":["Security"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Apply these security practices:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Never log or store raw card numbers, cryptograms, or network tokens."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Fetch session data from your backend at runtime; don't hardcode credentials."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Validate decrypted token data and verify transaction results on your backend before order fulfilment."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"monitoring","__idx":19},"children":["Monitoring"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Monitor your Paze integration with these checks:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Track payment success and failure rates using ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/checkout/components/android/paze/analytics"},"children":["analytics events"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Monitor Custom Tab availability with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPresentmentResolved"]}," and button presentment with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PazeButtonRendered"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Test checkout flows after Android OS and SDK updates, including redirect handling after app reinstall."]}]}]},"headings":[{"value":"Compliance","id":"compliance","depth":1},{"value":"Overview","id":"overview","depth":2},{"value":"Technical requirements","id":"technical-requirements","depth":2},{"value":"Platform and app configuration","id":"platform-and-app-configuration","depth":3},{"value":"Session and credentials","id":"session-and-credentials","depth":3},{"value":"Currency and region","id":"currency-and-region","depth":3},{"value":"Paze account","id":"paze-account","depth":3},{"value":"Button branding requirements","id":"button-branding-requirements","depth":2},{"value":"Security and data handling","id":"security-and-data-handling","depth":2},{"value":"Security requirements","id":"security-requirements","depth":3},{"value":"Data handling requirements","id":"data-handling-requirements","depth":3},{"value":"Backend verification","id":"backend-verification","depth":3},{"value":"Redirect security","id":"redirect-security","depth":3},{"value":"Fraud controls","id":"fraud-controls","depth":2},{"value":"Address verification (AVS)","id":"address-verification-avs","depth":3},{"value":"Kount risk screening","id":"kount-risk-screening","depth":3},{"value":"Best practices","id":"best-practices","depth":2},{"value":"Implementation","id":"implementation","depth":3},{"value":"Security","id":"security","depth":3},{"value":"Monitoring","id":"monitoring","depth":3}],"frontmatter":{"seo":{"title":"Compliance"}},"lastModified":"2026-07-01T15:11:56.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/guides/checkout/components/android/paze/compliance","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}