{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-guides/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["sub-heading","admonition"]},"type":"markdown"},"seo":{"title":"Data validation","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":"data-validation","__idx":0},"children":["Data validation"]},{"$$mdtype":"Tag","name":"SubHeading","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Learn about built-in validation and implement additional scenarios for Paze on iOS."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview","__idx":1},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Paze component validates configuration, identity data, and transaction parameters before and during the payment flow. Validation runs at multiple stages:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Component creation:"]}," Paze must be included in session ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["allowedFundingTypes"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK0118"]}," if missing)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Presentment:"]}," Session ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clientId"]},", currency, client presentation settings, and optional identity fields."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Checkout:"]}," Amount, billing preferences, shipping countries, cobrand configuration, and identity re-validation."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Complete:"]}," Transaction type, amount, currency, billing preference, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["merchantCategoryCode"]}," when the SDK builds the Paze complete request."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Merchant callbacks:"]}," Optional approval gates after checkout, before decryption, and before authorisation."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If validation fails, the SDK surfaces a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BaseSdkException"]}," with a structured error code in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK12XX"]}," range (or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK0118"]}," at component creation). Authorisation submission failures are surfaced through ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSubmitError"]}," instead of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onError"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"built-in-validation","__idx":2},"children":["Built-in validation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["By default, the Paze component validates that:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["allowedFundingTypes.wallets.paze.clientId"]}," is present in the session."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["merchantCategoryCode"]}," is present in the session when the SDK builds the complete request (on iOS)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The transaction currency is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["USD"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clientName"]}," is 50 characters or fewer."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["siteName"]}," (brand name) is 50 characters or fewer."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentDescription"]}," (statement descriptor) is 25 characters or fewer."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Email addresses are valid RFC 5322 format and 128 characters or fewer when provided (at presentment and again at checkout)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Phone numbers match ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1"]}," followed by 10 digits when provided (at presentment and again at checkout)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The transaction amount is greater than 0 at checkout."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["billingPreference"]}," is one of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".all"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".zipCountry"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".none"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["acceptedShippingCountries"]}," use valid ISO 3166-1 alpha-2 codes (exactly two uppercase letters)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Each cobrand entry has a non-empty ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cobrandName"]},"."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transactionData.entryType"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".ecom"]}," when initialising the SDK. Paze expects an e-commerce entry type on the authorisation request, but the button component doesn't validate ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["entryType"]}," at presentment."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The iOS component uses static presentment, so it doesn't call Paze's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["canCheckout()"]},". Optional ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["emailAddress"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["phoneNumber"]}," are validated when provided, but not required for the button to appear."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"checkout-identity","__idx":3},"children":["Checkout identity"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Component identity (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["emailAddress"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["phoneNumber"]},") is passed to Paze during session creation when provided. Each field is validated independently when set. Identity is separate from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onGetShopper"]},", which supplies shopper data for Unity authorisation after decryption."]},{"$$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":{"align":"left","data-label":"Configuration"},"children":["Configuration"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Sent to Paze"},"children":["Sent to Paze"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Email only"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["emailAddress"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Phone only"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["phoneNumber"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Email and phone"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["emailAddress"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["phoneNumber"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Paze component returns structured error codes for validation failures:"]},{"$$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":{"data-label":"Error code"},"children":["Error code"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Common causes"},"children":["Common causes"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK0118"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze is missing in allowed funding types."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["session.allowedFundingTypes.wallets.paze.clientId"]}," is missing or empty at ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["create(.pazeButton)"]}," time."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1202"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Missing ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["session.allowedFundingTypes.wallets.paze.clientId"]},"."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clientId"]}," not in session data at presentment."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1202A"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Missing ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["session.allowedFundingTypes.wallets.paze.merchantCategoryCode"]},"."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["MCC not included in session for iOS payment completion."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1203"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clientName"]}," exceeds 50 characters."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CheckoutConfig.clientName"]}," is too long."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1204"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["siteName"]}," exceeds 50 characters."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CheckoutConfig.siteName"]}," is too long."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1205"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentDescription"]}," exceeds 25 characters."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Statement descriptor on component config is too long."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1209"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Email address exceeds 128 characters."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["emailAddress"]}," value is too long."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1210"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Email address format is invalid."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["emailAddress"]}," isn't a valid RFC 5322 address."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1211"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Phone number exceeds 15 characters."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["phoneNumber"]}," value is too long."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1212"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Phone number format is invalid."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["phoneNumber"]}," isn't a US E.164 number without ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["+"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1213"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Currency not supported."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Transaction currency isn't ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["USD"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1206"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Failed to initialize Paze SDK."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Generic presentment failure."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1200"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Failed to load Paze SDK."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Session creation failed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1214"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze checkout failed."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Generic checkout failure."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1215"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze checkout did not return ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["checkoutResponse"]}," for a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["COMPLETE"]}," result."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Missing checkout response."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1216"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze complete did not return ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["completeResponse"]},"."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Missing complete response code."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1219"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["completeResponse"]}," did not contain ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["securedPayload"]},"."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Secured payload missing after complete."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1231"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid shipping country codes."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["acceptedShippingCountries"]}," contains non-ISO alpha-2 codes."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1232"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Cobrand name is required."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A cobrand entry is missing ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cobrandName"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1235"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze transaction failed."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Authorisation request failed. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSubmitError"]}," typically receives a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FailedSubmitResult"]}," with gateway or provider error codes (for example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DECLINED"]},"), not ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1235"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For the complete list of Paze error codes, including complete-step validation and decode failures, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#full-paze-error-reference"},"children":["Full Paze error reference"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"validation-example","__idx":4},"children":["Validation example"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"swift","header":{"controls":{"copy":{}}},"source":"config.onError = { error in\n    switch error.errorCode {\n    case \"SDK0118\":\n        showError(\"Paze isn't enabled for this session.\")\n    case \"SDK1210\":\n        showError(\"Please enter a valid email address.\")\n    case \"SDK1212\":\n        showError(\"Please enter a valid US phone number (e.g. 15551234567).\")\n    case \"SDK1213\":\n        showError(\"Paze is only available for USD transactions.\")\n    case \"SDK1202\":\n        showError(\"Paze client ID is missing from the session.\")\n    case \"SDK1202A\":\n        showError(\"Paze merchant category code is missing from the session.\")\n    case \"SDK1214\", \"SDK1200\":\n        showError(\"Paze checkout failed. Please try again.\")\n    default:\n        showError(error.errorMessage)\n    }\n}\n","lang":"swift"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"merchant-validation-gates","__idx":5},"children":["Merchant validation gates"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Callbacks that use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["await"]}," must be marked ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["async"]}," on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PazeButtonComponentConfig"]},":"]},{"$$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":{"align":"left","data-label":"Callback"},"children":["Callback"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"SDK signature"},"children":["SDK signature"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPazeButtonClicked"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["(() async -> Void)?"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onCheckoutComplete"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["((PazeCheckoutResult) async -> Bool)?"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onCheckoutIncomplete"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["((PazeCheckoutResult) async -> Void)?"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onComplete"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["((PazeCompleteResult) async -> Void)?"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPreDecryption"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["(() async -> Bool)?"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPreAuthorisation"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["(() async -> PazePreAuthorisationResult)?"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSubmitError"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["((BaseSubmitResult) async -> Void)?"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onError"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["((BaseSdkException) -> Void)?"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"pre-checkout-validation","__idx":6},"children":["Pre-checkout validation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The iOS component doesn't provide ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onCustomValidation"]},". Validate cart state, terms acceptance, and inventory in your UI before enabling the Paze button, or run non-blocking checks in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPazeButtonClicked"]}," before the Paze web session opens."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To hard-block checkout after the shopper returns from Paze, return ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]}," from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onCheckoutComplete"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"post-checkout-merchant-validation","__idx":7},"children":["Post-checkout merchant validation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onCheckoutComplete"]}," to inspect checkout data and approve or reject before the SDK calls complete. Return ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]}," to treat the checkout as incomplete."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"swift","header":{"controls":{"copy":{}}},"source":"config.onCheckoutComplete = { result async in\n    guard let decoded = result.checkoutDecodedResponse else { return false }\n\n    let isValid = await validateCheckoutOnBackend(\n        sessionId: decoded.sessionId,\n        cardLastFour: decoded.maskedCard?.panLastFour,\n        cardBrand: decoded.maskedCard?.paymentCardBrand\n    )\n\n    return isValid\n}\n\nconfig.onCheckoutIncomplete = { result async in\n    showMessage(\"Payment was not completed. Please try again.\")\n}\n","lang":"swift"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"pre-decryption-validation","__idx":8},"children":["Pre-decryption validation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onComplete"]}," fires first with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["securedPayload"]}," in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["completeDecodedResponse"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPreDecryption"]}," runs next — return ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]}," to skip SDK decryption and handle the payload on your backend."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPreDecryption"]}," to control whether the SDK decrypts the secured payload. When omitted, the SDK defaults to decrypting."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"swift","header":{"controls":{"copy":{}}},"source":"config.onPreDecryption = { async in false }\n\nconfig.onComplete = { result async in\n    guard let securedPayload = result.completeDecodedResponse?.securedPayload else { return }\n    await sendToBackendForDecryption(securedPayload: securedPayload)\n}\n","lang":"swift"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"pre-authorisation-validation","__idx":9},"children":["Pre-authorisation validation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onPreAuthorisation"]}," to provide risk screening data or abort the transaction before submission. When you return ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".transactionInitData(...)"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["riskScreeningData"]},", the SDK validates the Kount payload before submitting the transaction. Invalid risk screening data throws a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ValidationException"]}," surfaced through ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSubmitError"]},"."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"swift","header":{"controls":{"copy":{}}},"source":"config.onPreAuthorisation = { async in\n    if fraudCheckFailed() {\n        return .cancel\n    }\n\n    return .transactionInitData(PazeTransactionInitData(\n        riskScreeningData: RiskScreeningData(\n            performRiskScreening: true,\n            userIp: await getUserIpAddress()\n        )\n    ))\n}\n","lang":"swift"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"identity-validation-rules","__idx":10},"children":["Identity validation rules"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"email-address","__idx":11},"children":["Email address"]},{"$$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":{"align":"left","data-label":"Rule"},"children":["Rule"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Requirement"},"children":["Requirement"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Format"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Valid RFC 5322 email address"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Maximum length"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["128 characters"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Timing"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Optional. Validated at presentment and again at checkout when provided"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"phone-number","__idx":12},"children":["Phone number"]},{"$$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":{"align":"left","data-label":"Rule"},"children":["Rule"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Requirement"},"children":["Requirement"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Format"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["US number without ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["+"]}," prefix: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1"]}," followed by exactly 10 digits (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["^1\\d{10}$"]},")"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Valid length"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Exactly 11 characters (e.g. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["15551234567"]},")"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Maximum length"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["15 characters — values longer than 15 throw ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1211"]}," before format validation"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Timing"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Optional. Validated at presentment and again at checkout when provided"]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Phone numbers must not include the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["+"]}," prefix or formatting characters. Use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["15551234567"]},", not ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["+1 (555) 123-4567"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"full-paze-error-reference","__idx":13},"children":["Full Paze error reference"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The table in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#built-in-validation"},"children":["Built-in validation"]}," lists the errors you are most likely to encounter during integration. This section lists every Paze-related error code defined in the iOS SDK (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK0118"]}," at component creation, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1200"]},"–",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1235"]}," during the payment flow)."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The tables below list every Paze-related error code defined in the iOS SDK. For the standalone Paze button component, some codes are defined but not emitted — decode and provider failures often surface as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1214"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PazeProviderException"]}," instead. Authorisation failures are typically surfaced through ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSubmitError"]}," as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FailedSubmitResult"]},", not ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onError"]},"."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1207"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1208"]}," apply to dynamic presentment flows. The iOS button component uses static presentment and doesn't call Paze ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["canCheckout()"]},", so these codes aren't emitted."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"component-creation","__idx":14},"children":["Component creation"]},{"$$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":{"data-label":"Error code"},"children":["Error code"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"SDK message"},"children":["SDK message"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"When it surfaces"},"children":["When it surfaces"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK0118"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze is missing in allow funding types."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["create(.pazeButton)"]}," when ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["session.allowedFundingTypes.wallets.paze.clientId"]}," is missing or empty."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"presentment","__idx":15},"children":["Presentment"]},{"$$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":{"data-label":"Error code"},"children":["Error code"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"SDK message"},"children":["SDK message"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"When it surfaces"},"children":["When it surfaces"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1202"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Missing session.allowedFundingTypes.wallets.paze.clientId."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Presentment validation when ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clientId"]}," is absent from session data."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1203"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["client.name must be 50 characters or fewer."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CheckoutConfig.clientName"]}," exceeds 50 characters."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1204"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["client.brandName must be 50 characters or fewer."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CheckoutConfig.siteName"]}," exceeds 50 characters."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1205"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["client.statementDescriptor must be 25 characters or fewer."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentDescription"]}," exceeds 25 characters."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1206"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Failed to initialize Paze SDK."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Generic presentment failure after an unexpected error."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1207"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze canCheckout did not return an eligibility result."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Dynamic presentment only. Not used by the iOS button component's static presentment path."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1208"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze dynamic presentment requires both emailAddress and phoneNumber to be provided."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Dynamic presentment only. Not used by the iOS button component's static presentment path."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1209"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["emailAddress must be 128 characters or fewer."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["emailAddress"]}," exceeds maximum length."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1210"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["emailAddress must be a valid RFC 5322 email address."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["emailAddress"]}," format is invalid."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1211"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["phoneNumber must be 15 characters or fewer."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["phoneNumber"]}," exceeds maximum length."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1212"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["phoneNumber must be a US E.164 number without '+', for example 15551234567."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["phoneNumber"]}," format is invalid."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1213"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze only supports USD currency. Received: '{currency}'."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transactionData.currency"]}," is not ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["USD"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"checkout","__idx":16},"children":["Checkout"]},{"$$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":{"data-label":"Error code"},"children":["Error code"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"SDK message"},"children":["SDK message"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"When it surfaces"},"children":["When it surfaces"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1200"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Failed to load Paze SDK."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PXP ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["create-session"]}," call failed or returned an error before the web checkout opens."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1214"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze checkout failed."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Generic checkout failure (web session, callback parsing, or provider error). Decode failures (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1217"]},") and provider errors often surface here or as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PazeProviderException"]}," rather than as separate ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onError"]}," codes."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1215"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze checkout did not return checkoutResponse for a COMPLETE result."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Checkout returned ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["COMPLETE"]}," but the response JWT is missing."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1217"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unable to decode Paze checkoutResponse."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Defined in the SDK but not emitted by the button component — decode failures surface as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1214"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1220"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze wallet account exists but is not accessible."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Defined in the SDK but not emitted by the button component in production."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1229"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["transactionValue.transactionAmount must be greater than 0."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Transaction amount is zero or negative at checkout validation."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1226"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["billingPreference must be one of: {validBillingPreferences}."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["billingPreference"]}," at checkout."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1231"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["acceptedShippingCountries contains invalid country codes: {invalidCountryCodes}."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["acceptedShippingCountries"]}," contains non-ISO alpha-2 codes."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1232"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["cobrand.cobrandName is required for each cobrand entry."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A cobrand entry has an empty ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cobrandName"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"complete","__idx":17},"children":["Complete"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The SDK always sends ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transactionType: \"PURCHASE\""]}," when calling the Paze complete API, regardless of the card intent (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".authorisation"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".purchase"]},") configured on ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CheckoutConfig"]},". Card intent applies to the Unity authorisation request after decryption, not to the Paze complete step. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/checkout/components/ios/paze/how-it-works#transaction-intents"},"children":["Transaction intents"]},"."]},{"$$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":{"data-label":"Error code"},"children":["Error code"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"SDK message"},"children":["SDK message"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"When it surfaces"},"children":["When it surfaces"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1202A"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Missing session.allowedFundingTypes.wallets.paze.merchantCategoryCode."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["merchantCategoryCode"]}," is missing from session data when building the complete request."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1216"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze complete did not return completeResponse."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Complete response code is missing after checkout."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1218"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unable to decode Paze completeResponse."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Defined in the SDK but not emitted by the button component — decode failures surface as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1214"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1219"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze completeResponse did not contain securedPayload."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Complete succeeded but no ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["securedPayload"]}," was returned."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1221"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze complete() was called before checkout() finished successfully."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Defined in the SDK but not emitted by the button component in production."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1222"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["sessionId must be 255 characters or fewer."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Session ID exceeds maximum length on the complete request."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1223"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["transactionType must be PURCHASE for Paze complete()."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Internal validation if complete request ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transactionType"]}," is not ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PURCHASE"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1224"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["transactionOptions is required when transactionType is PURCHASE."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Complete request is missing ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transactionOptions"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1225"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["transactionValue is required when transactionType is PURCHASE."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Complete request is missing ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transactionValue"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1227"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["transactionOptions.billingPreference must be one of: {validBillingPreferences}."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid billing preference on the complete request."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1228"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["transactionOptions.payloadTypeIndicator must be PAYMENT."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Complete request payload type is not ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PAYMENT"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1230"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["transactionValue.transactionCurrencyCode must be a 3-letter ISO currency code."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid currency code on the complete request."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"decryption-and-authorisation","__idx":18},"children":["Decryption and authorisation"]},{"$$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":{"data-label":"Error code"},"children":["Error code"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"SDK message"},"children":["SDK message"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"When it surfaces"},"children":["When it surfaces"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1233"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["{error}"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Defined in the SDK but not emitted by the button component — decryption failures surface as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1214"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1219"]},". Also tracked as the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PazeDecryptionFailed"]}," analytics event when decryption fails internally."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1234"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["{error}"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Defined in the SDK but not emitted by the button component — provider errors surface as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1214"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PazeProviderException"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1235"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Paze payment transaction failed. {error}"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unity transaction submission failed. Typically surfaced through ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onSubmitError"]}," as a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FailedSubmitResult"]}," with gateway or provider codes, not through ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["onError"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1201"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unknown Paze SDK error."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Defined in the SDK but not emitted by the button component — unclassified errors normalize to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1206"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SDK1214"]},"."]}]}]}]}]}]},"headings":[{"value":"Data validation","id":"data-validation","depth":1},{"value":"Overview","id":"overview","depth":2},{"value":"Built-in validation","id":"built-in-validation","depth":2},{"value":"Checkout identity","id":"checkout-identity","depth":3},{"value":"Validation example","id":"validation-example","depth":3},{"value":"Merchant validation gates","id":"merchant-validation-gates","depth":2},{"value":"Pre-checkout validation","id":"pre-checkout-validation","depth":3},{"value":"Post-checkout merchant validation","id":"post-checkout-merchant-validation","depth":3},{"value":"Pre-decryption validation","id":"pre-decryption-validation","depth":3},{"value":"Pre-authorisation validation","id":"pre-authorisation-validation","depth":3},{"value":"Identity validation rules","id":"identity-validation-rules","depth":2},{"value":"Email address","id":"email-address","depth":3},{"value":"Phone number","id":"phone-number","depth":3},{"value":"Full Paze error reference","id":"full-paze-error-reference","depth":2},{"value":"Component creation","id":"component-creation","depth":3},{"value":"Presentment","id":"presentment","depth":3},{"value":"Checkout","id":"checkout","depth":3},{"value":"Complete","id":"complete","depth":3},{"value":"Decryption and authorisation","id":"decryption-and-authorisation","depth":3}],"frontmatter":{"seo":{"title":"Data validation"}},"lastModified":"2026-06-30T09:48:00.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/guides/checkout/components/ios/paze/data-validation","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}