{"schemaVersion":"1.0","info":{"title":"ePay Native SDK","status":"private-preview","description":"Customer-facing SDK contract for Android and iOS with the standard platform hosts. Types use Kotlin names; platform usage is shown in the integration guides."},"sections":{"core":{"title":"SDK and lifecycle","schemas":["Epay","SdkState","PaymentHostConfig","EpayException","EpayErrors","AndroidPaymentHost","IosPaymentHost","EpayErrorDetails"]},"payments":{"title":"Payments and outcomes","schemas":["Payment","TransactionOptions","PaymentAttemptHandlers","PaymentAttempt","PaymentAttemptMetadata","PaymentAttemptState"]},"fields":{"title":"Card fields","schemas":["HostedFields","HostedFieldsConfig","HostedFieldsStatus","HostedFieldsValidity","PaymentButtonState","HostedField","HostedFieldFocusData","HostedFieldsLanguageData","HostedFieldsTestCardData","FieldsAppearance","FieldsVariables","FieldsConfiguration","FieldsName","FieldsPan","FieldsFont","FieldsLoader","AndroidHostedFields","IosHostedFields"]},"session":{"title":"Session services","schemas":["SessionData","SessionInfo","SessionPointOfSale","SessionSubscription","SessionSubscriptionInterval","SessionCustomerInfo","SessionCustomerAddress","SessionDate","SessionTimestamp","SupportedPaymentMethod","StoredPaymentMethod","StoredPaymentMethodData","StoredPaymentMethodFeeData","StoredPaymentMethodFee","ClientMessageData","ClientMessage","AgeVerification","AgeVerificationResult","AgeVerificationStatus"]},"wallets":{"title":"Wallets","schemas":["GooglePayData","ApplePayData","ApplePayPaymentData","WalletAvailability"]},"events":{"title":"Events and decisions","schemas":["SdkEvents","TransactionAccepted","TransactionDeclined","FeeUpdated","PaymentCancel","ClientRedirect","SdkError","Surcharge","SurchargeDecision"]}},"schemas":{"SessionData":{"title":"SessionData","fields":[{"name":"session","type":"SessionInfo","schema":"SessionInfo","description":"Payment details and restrictions set when your server created the session."},{"name":"pointOfSale","type":"SessionPointOfSale","schema":"SessionPointOfSale","description":"Point-of-sale settings associated with this session."},{"name":"countryCode","type":"String","description":"Merchant account country as an ISO 3166-1 alpha-2 code, for example `DK`."},{"name":"supportedSchemes","type":"List<String>","nullable":true,"description":"Card schemes supported for this session, for example `VISA` and `MASTERCARD`. Null when no list is supplied."},{"name":"canStorePaymentMethod","type":"Boolean","description":"Whether the session has a customer ID and can store a payment method for that customer. Use this to decide whether to offer a save-payment-method option."},{"name":"subscription","type":"SessionSubscription","nullable":true,"schema":"SessionSubscription","description":"Subscription configuration associated with the session, or null when there is no subscription."}],"description":"Payment session and checkout configuration loaded during SDK initialization. This is a snapshot; use payment attempts to observe payment progress."},"SessionInfo":{"title":"SessionInfo","fields":[{"name":"id","type":"String","description":"Unique ID of the payment session."},{"name":"pointOfSaleId","type":"String","description":"ID of the point of sale associated with the session."},{"name":"timeout","type":"Int","description":"Session lifetime in minutes, as configured when the session was created."},{"name":"instantCapture","type":"String","description":"Instant-capture mode configured for the session: `OFF`, `VOID`, or `NO_VOID`."},{"name":"reference","type":"String","nullable":true,"description":"Your transaction reference, typically an order ID. Null when none was supplied."},{"name":"hasSubscription","type":"Boolean","description":"Whether the session is associated with a subscription."},{"name":"amount","type":"Long","description":"Transaction amount in minor units, for example `1095` for 10.95 DKK."},{"name":"currency","type":"String","description":"Three-letter ISO 4217 currency code, for example `DKK`."},{"name":"textOnStatement","type":"String","nullable":true,"description":"Text requested for the cardholder’s bank statement. Null when no custom text was supplied."},{"name":"descriptor","type":"String","nullable":true,"description":"Merchant descriptor supplied for this session. Overrides the point-of-sale descriptor unless an acquirer agreement supplies an override."},{"name":"state","type":"String","description":"Session state at initialization, such as `PENDING`, `PROCESSING`, `COMPLETED`, or `EXPIRED`. This property does not track subsequent payment progress."},{"name":"dynamicAmount","type":"Boolean","description":"Whether the app may override the session amount through `TransactionOptions.amount`."},{"name":"minimumAge","type":"Int","description":"Minimum required customer age in years. Zero means no age requirement was configured."},{"name":"ageVerified","type":"Boolean","description":"Whether the customer had been verified as meeting the minimum age when this snapshot was loaded."},{"name":"createdAt","type":"SessionTimestamp","description":"Time the payment session was created. Uses `kotlin.time.Instant` on Android and Foundation `Date` in Swift."},{"name":"expiresAt","type":"SessionTimestamp","description":"Time after which the session can no longer be used. Create a new session to continue checkout after expiry."},{"name":"customerInfo","type":"SessionCustomerInfo","nullable":true,"schema":"SessionCustomerInfo","description":"Customer contact and address details supplied for the session, or null when none were supplied."},{"name":"allowedPaymentMethods","type":"List<String>","nullable":true,"description":"Payment-method restrictions supplied for the session. Null means no session-specific list was supplied; use `getSupportedPaymentMethodTypes()` for available methods."}],"description":"Details of the payment session created by your server. Amounts use the session currency."},"SessionPointOfSale":{"title":"SessionPointOfSale","fields":[{"name":"descriptor","type":"String","description":"Default merchant descriptor for the point of sale."},{"name":"domains","type":"List<String>","nullable":true,"description":"Domains configured for the point of sale, or null when none are supplied."}],"description":"Point-of-sale settings used by the payment session."},"SessionSubscription":{"title":"SessionSubscription","fields":[{"name":"type","type":"String","description":"Agreement type: `SCHEDULED` for payments at a fixed interval or `UNSCHEDULED` for payments as needed."},{"name":"interval","type":"SessionSubscriptionInterval","nullable":true,"schema":"SessionSubscriptionInterval","description":"Billing interval for a scheduled subscription. Null when no interval was supplied."},{"name":"expiryDate","type":"SessionDate","nullable":true,"schema":"SessionDate","description":"Agreement expiry date supplied for authentication. ePay does not reject later payments solely because this date has passed."},{"name":"amount","type":"Long","nullable":true,"description":"Recurring amount in minor units. When null, the transaction amount is used."}],"description":"Recurring-payment agreement configured for this session."},"SessionSubscriptionInterval":{"title":"SessionSubscriptionInterval","fields":[{"name":"period","type":"String","description":"Billing unit: `DAY`, `WEEK`, `MONTH`, or `YEAR`."},{"name":"frequency","type":"Int","description":"Number of billing units between payments, from 1 to 31. For example, `3` with `MONTH` means every three months."}],"description":"Frequency of scheduled subscription payments."},"SessionCustomerInfo":{"title":"SessionCustomerInfo","fields":[{"name":"firstName","type":"String","nullable":true,"description":"Customer’s given name."},{"name":"lastName","type":"String","nullable":true,"description":"Customer’s family name."},{"name":"email","type":"String","nullable":true,"description":"Customer’s email address."},{"name":"phoneNumber","type":"String","nullable":true,"description":"Customer’s phone number in E.164 format with a space after the country calling code, for example `+45 12345678`."},{"name":"shippingAddress","type":"SessionCustomerAddress","nullable":true,"schema":"SessionCustomerAddress","description":"Address to which purchased goods will be delivered."},{"name":"billingAddress","type":"SessionCustomerAddress","nullable":true,"schema":"SessionCustomerAddress","description":"Customer’s personal or business billing address."}],"description":"Customer details supplied by your server for authentication and payment-provider requirements."},"SessionCustomerAddress":{"title":"SessionCustomerAddress","fields":[{"name":"countryCode","type":"String","nullable":true,"description":"Two-letter ISO 3166-1 alpha-2 country code, for example `DK`."},{"name":"postalCode","type":"String","nullable":true,"description":"Postal or ZIP code."},{"name":"city","type":"String","nullable":true,"description":"City or locality."},{"name":"line1","type":"String","nullable":true,"description":"First address line, usually the street name and building number."},{"name":"line2","type":"String","nullable":true,"description":"Additional address details, such as an apartment or suite."},{"name":"line3","type":"String","nullable":true,"description":"Further address details when two lines are insufficient."}],"description":"Postal address supplied for billing or shipping. Unspecified address fields are null."},"FieldsAppearance":{"title":"FieldsAppearance","fields":[{"name":"language","type":"String","nullable":true,"optional":true,"description":"Language code for field labels and messages, for example `da` or `en`."},{"name":"theme","type":"String","nullable":true,"optional":true,"default":"\"mobile\"","description":"Base appearance theme. Defaults to `mobile`, which is designed for app checkout."},{"name":"variables","type":"FieldsVariables","nullable":true,"optional":true,"schema":"FieldsVariables","description":"Individual colors, spacing, and typography settings that override the theme."},{"name":"fields","type":"FieldsConfiguration","nullable":true,"optional":true,"schema":"FieldsConfiguration","description":"Visibility and initial behavior of the cardholder-name and card-number fields."},{"name":"fontSelection","type":"FieldsFont","nullable":true,"optional":true,"schema":"FieldsFont","description":"Font source and family selection. Supply `source`, `family`, `category`, and `stack` together."},{"name":"loader","type":"FieldsLoader","nullable":true,"optional":true,"schema":"FieldsLoader","description":"Appearance of the loading placeholder shown while fields initialize."}],"description":"Language, theme, and appearance of the card fields. Unspecified styling values use the selected theme."},"FieldsVariables":{"title":"FieldsVariables","fields":[{"name":"colorText","type":"String","nullable":true,"optional":true,"description":"Default text color for labels and input content."},{"name":"borderRadius","type":"String","nullable":true,"optional":true,"description":"Default corner radius for inputs and the field container."},{"name":"borderColor","type":"String","nullable":true,"optional":true,"description":"Default border color for inputs and the field container."},{"name":"fontFamily","type":"String","nullable":true,"optional":true,"description":"Font family used for labels, entered values, and placeholders."},{"name":"gridColumnSpacing","type":"String","nullable":true,"optional":true,"description":"Horizontal space between fields, for example `12px`."},{"name":"gridRowSpacing","type":"String","nullable":true,"optional":true,"description":"Vertical space between fields, for example `16px`."},{"name":"gridTemplateColumns","type":"String","nullable":true,"optional":true,"description":"Column sizes for the field grid, for example `1fr 1fr` for two equal columns."},{"name":"iconDisplay","type":"String","nullable":true,"optional":true,"description":"Display behavior for field icons, for example `block` or `none`."},{"name":"cardBrandDisplay","type":"String","nullable":true,"optional":true,"description":"Display behavior for card-brand icons, for example `block` or `none`."},{"name":"supportedSchemesDisplay","type":"String","nullable":true,"optional":true,"description":"Display behavior for supported card-scheme icons, for example `flex` or `none`."},{"name":"labelColor","type":"String","nullable":true,"optional":true,"description":"Text color of field labels."},{"name":"labelFontSize","type":"String","nullable":true,"optional":true,"description":"Font size of field labels, for example `14px`."},{"name":"labelFontWeight","type":"String","nullable":true,"optional":true,"description":"Font weight of field labels, for example `400` or `600`."},{"name":"labelMarginBottom","type":"String","nullable":true,"optional":true,"description":"Space between a label and its input."},{"name":"inputColor","type":"String","nullable":true,"optional":true,"description":"Text color of entered values."},{"name":"inputBorderRadius","type":"String","nullable":true,"optional":true,"description":"Corner radius of input fields."},{"name":"inputBorderColor","type":"String","nullable":true,"optional":true,"description":"Border color of input fields."},{"name":"inputFontSize","type":"String","nullable":true,"optional":true,"description":"Font size of entered values."},{"name":"inputPadding","type":"String","nullable":true,"optional":true,"description":"Space inside each input border, for example `12px`."},{"name":"inputPlaceholderColor","type":"String","nullable":true,"optional":true,"description":"Text color of input placeholders."},{"name":"inputBackgroundColor","type":"String","nullable":true,"optional":true,"description":"Background color of input fields."},{"name":"inputBoxShadow","type":"String","nullable":true,"optional":true,"description":"Shadow around input fields, or `none` to remove it."},{"name":"inputFocusBorderColor","type":"String","nullable":true,"optional":true,"description":"Input border color while the field has focus."},{"name":"inputFocusBoxShadow","type":"String","nullable":true,"optional":true,"description":"Input shadow while the field has focus."},{"name":"windowPadding","type":"String","nullable":true,"optional":true,"description":"Space around the fields inside their container."},{"name":"windowBackgroundColor","type":"String","nullable":true,"optional":true,"description":"Background color of the field container."},{"name":"windowBorderStyle","type":"String","nullable":true,"optional":true,"description":"Border style of the field container, for example `solid` or `none`."},{"name":"windowBorderRadius","type":"String","nullable":true,"optional":true,"description":"Corner radius of the field container."},{"name":"windowBorderColor","type":"String","nullable":true,"optional":true,"description":"Border color of the field container."},{"name":"colorDanger","type":"String","nullable":true,"optional":true,"description":"Color used for validation errors and other field problems."},{"name":"colorPrimary","type":"String","nullable":true,"optional":true,"description":"Primary accent color of the card fields."}],"description":"Card-field style overrides expressed as CSS value strings, such as `#222222`, `16px`, or `0`. Omit a value to keep the theme setting."},"FieldsConfiguration":{"title":"FieldsConfiguration","fields":[{"name":"name","type":"FieldsName","nullable":true,"optional":true,"schema":"FieldsName","description":"Cardholder-name field settings."},{"name":"pan","type":"FieldsPan","nullable":true,"optional":true,"schema":"FieldsPan","description":"Card-number field settings."}],"description":"Options for individual card fields."},"FieldsName":{"title":"FieldsName","fields":[{"name":"enabled","type":"Boolean","nullable":true,"optional":true,"description":"Show the cardholder-name field when true. It is hidden by default."},{"name":"value","type":"String","nullable":true,"optional":true,"description":"Initial cardholder name to prefill when the name field is enabled."}],"description":"Visibility and initial value of the optional cardholder-name field."},"FieldsPan":{"title":"FieldsPan","fields":[{"name":"focus","type":"Boolean","nullable":true,"optional":true,"description":"Focus the card-number field when it mounts. Defaults to true."},{"name":"showSupportedSchemes","type":"Boolean","nullable":true,"optional":true,"description":"Show the supported card-scheme icons. Defaults to true."},{"name":"showBrandSelector","type":"Boolean","nullable":true,"optional":true,"description":"Show the brand selector for cards supporting multiple brands. Defaults to true."}],"description":"Card-number field behavior and card-brand controls."},"FieldsFont":{"title":"FieldsFont","fields":[{"name":"source","type":"String","nullable":true,"optional":true,"description":"Font source: `system` for an available system font or `google` for a Google Font."},{"name":"family","type":"String","nullable":true,"optional":true,"description":"Name of the selected font family, for example `Roboto`."},{"name":"category","type":"String","nullable":true,"optional":true,"description":"Generic font category, for example `sans-serif`."},{"name":"stack","type":"String","nullable":true,"optional":true,"description":"Ordered font-family list including fallbacks, for example `Roboto, sans-serif`."}],"description":"Font selection for the card fields. Provide all four values together."},"FieldsLoader":{"title":"FieldsLoader","fields":[{"name":"height","type":"String","nullable":true,"optional":true,"description":"Placeholder height as a CSS length, for example `150px`."},{"name":"backgroundColor","type":"String","nullable":true,"optional":true,"description":"Placeholder background color, for example `transparent`."},{"name":"borderStyle","type":"String","nullable":true,"optional":true,"description":"Placeholder border style, for example `solid` or `none`."}],"description":"Style of the placeholder displayed while card fields load."},"HostedFieldsConfig":{"title":"HostedFieldsConfig","fields":[{"name":"appearance","type":"FieldsAppearance","optional":true,"schema":"FieldsAppearance","description":"Language and visual configuration for the fields. Uses the mobile theme by default."},{"name":"initialHeight","type":"Double","optional":true,"default":"190.0","description":"Space reserved before the fields report their height, in Android density-independent pixels or iOS points. Must be finite and greater than zero."},{"name":"onReadinessChanged","type":"Callback<SdkState>","optional":true,"nullable":true,"description":"Called when the fields change between loading, ready, and failed states."},{"name":"onUpdate","type":"Callback<HostedFieldsStatus>","optional":true,"nullable":true,"schema":"HostedFieldsStatus","description":"Receives the current combined field status and subsequent updates. Use its payment-button recommendation to update your checkout button."},{"name":"onSubmit","type":"Callback","optional":true,"nullable":true,"description":"Called when the customer submits the ready fields, for example using the keyboard. Start a card payment from this callback when the payment button is active."}],"description":"Appearance, initial layout, and callbacks supplied when mounting card fields."},"SessionDate":{"title":"SessionDate","fields":[{"name":"year","type":"Int","description":"Four-digit calendar year, for example `2030`."},{"name":"month","type":"Int","description":"Month of the year, from 1 to 12."},{"name":"day","type":"Int","description":"Day of the month, from 1 to 31 as permitted by the month."}],"description":"Calendar date without a time or time zone."},"TransactionOptions":{"title":"TransactionOptions","fields":[{"name":"amount","description":"Optional amount in minor units. Set only when the session has `dynamicAmount: true`; otherwise leave unset so the session determines the amount. Nonnegative, at most `9007199254740991`.","type":"Long","optional":true,"nullable":true},{"name":"note","description":"Optional transaction note supplied with the payment.","type":"String","optional":true,"nullable":true},{"name":"store","description":"Customer’s consent to store the payment method for future use. Set true only after consent; the session must support storing payment methods.","type":"Boolean","optional":true,"nullable":true},{"name":"setStorageConsent(store)","returns":"TransactionOptions","parameters":[{"name":"store","type":"Boolean","description":"Whether the customer has consented to saving the payment method."}],"description":"Set the storage-consent option and return this same options object. Useful when setting a Kotlin nullable Boolean from Swift."}],"description":"Options applied when starting a payment. Each attempt takes a snapshot, so later changes affect future attempts only."},"PaymentAttemptState":{"title":"PaymentAttemptState","fields":[{"name":"Processing","description":"The payment is in progress or waiting for customer interaction. Show progress and prevent another payment.","type":"value"},{"name":"Accepted","description":"The transaction was accepted. Show confirmation and use server notifications for fulfilment.","type":"value"},{"name":"Declined","description":"The payment was declined. Offer another attempt only when `canRetry` is true.","type":"value"},{"name":"Cancelled","description":"The flow was cancelled; check `canRetry` before offering another attempt.","type":"value"},{"name":"Failed","description":"The attempt could not complete because of an error. Show the error and retry only when `canRetry` and SDK readiness permit it.","type":"value"},{"name":"OutcomeUnknown","description":"The SDK cannot establish the outcome of a submitted payment. Show “Awaiting payment confirmation” and resolve status through your backend before offering another payment.","type":"value"}],"kind":"enum","description":"Current outcome of a payment attempt. Use these states to display progress and decide whether to offer another attempt."},"PaymentAttempt":{"title":"PaymentAttempt","fields":[{"name":"id","description":"Local correlation ID, distinct from the server transaction ID.","type":"String"},{"name":"state","type":"PaymentAttemptState","description":"Current payment progress or outcome. Read `canRetry` before offering another attempt.","schema":"PaymentAttemptState"},{"name":"transactionId","description":"Server transaction ID when available; may be absent.","type":"String","nullable":true},{"name":"error","description":"Structured error details when available.","type":"SdkError","nullable":true,"schema":"SdkError"},{"name":"canRetry","description":"Whether this attempt permits another payment. The SDK must also be ready with no active interaction. False after acceptance, exhausted attempts, or an unknown outcome.","type":"Boolean"},{"name":"maxAttemptsReached","description":"The session's decline limit has been reached.","type":"Boolean"},{"name":"isRedirecting","description":"A payment redirect is being presented.","type":"Boolean"},{"name":"pendingSurcharge","description":"Current surcharge confirmation, if any. Respond through `events.confirmSurcharge`.","type":"Surcharge","nullable":true,"schema":"Surcharge"},{"name":"metadata","description":"Additional information about the authorization history of this attempt.","type":"PaymentAttemptMetadata","schema":"PaymentAttemptMetadata"},{"name":"onUpdate","type":"Callback<PaymentAttempt>","description":"Receives the current attempt immediately, then subsequent updates on the UI thread.","nullable":true}],"description":"Observable result of starting a payment. Observe `onUpdate` for progress and outcomes; use server notifications to confirm fulfilment."},"SdkEvents":{"title":"SdkEvents","fields":[{"name":"transactionAccepted","description":"Called when a transaction is accepted. Use server notifications to confirm the order before fulfilment.","type":"Callback<TransactionAccepted>","nullable":true,"optional":true,"schema":"TransactionAccepted"},{"name":"transactionDeclined","description":"Called when an authorization is declined. A payment attempt may continue through another authorization, so observe its state for the final outcome.","type":"Callback<TransactionDeclined>","nullable":true,"optional":true,"schema":"TransactionDeclined"},{"name":"feeUpdated","description":"Called when the displayed payment fee changes. A zero fee clears a previously displayed fee.","type":"Callback<FeeUpdated>","nullable":true,"optional":true,"schema":"FeeUpdated"},{"name":"confirmSurcharge","description":"Called before continuing with a surcharge. Show the amount and call `confirm()` or `cancel()` on the supplied decision. If no handler is set, the surcharge is accepted.","type":"Callback<Surcharge, SurchargeDecision>","nullable":true,"optional":true,"schema":"Surcharge"},{"name":"paymentCancel","description":"Notifies the app that a payment flow was cancelled. Observe the payment attempt for its resulting state.","type":"Callback<PaymentCancel>","nullable":true,"optional":true,"schema":"PaymentCancel"},{"name":"clientRedirect","description":"Notifies the app when the SDK opens an authentication or payment-provider flow. The SDK manages presentation and returns.","type":"Callback<ClientRedirect>","nullable":true,"optional":true,"schema":"ClientRedirect"},{"name":"error","description":"Receives a structured SDK error notification. Query failures are also reported through the corresponding thrown exception.","type":"Callback<SdkError>","nullable":true,"optional":true,"schema":"SdkError"}],"description":"Optional checkout event callbacks delivered on the UI thread. Use payment-attempt updates for the complete payment lifecycle."},"PaymentButtonState":{"title":"PaymentButtonState","fields":[{"name":"Hidden / Swift .hidden","description":"Hide the pay button (or deliberately show it disabled).","type":"value"},{"name":"Disabled / Swift .disabled","description":"Show it disabled while inputs are invalid, payment is processing, or another payment cannot start.","type":"value"},{"name":"Active / Swift .active","description":"Enable the payment action. The fields are ready and valid, and the SDK can start a payment.","type":"value"}],"kind":"enum","description":"Recommended visibility and enabled state of your card-payment button. The recommendation accounts for field readiness and whether another payment can start."},"PaymentHostConfig":{"title":"PaymentHostConfig","fields":[{"name":"appReturnUrl","description":"Optional HTTPS or custom-scheme URL for payment processing returns. No query, fragment, credentials, or port.","type":"String","optional":true,"nullable":true},{"name":"appUniversalLink","description":"Optional registered HTTPS Universal Link / Android App Link. Required for iOS PayPal approval. Same URL restrictions apply.","type":"String","optional":true,"nullable":true},{"name":"systemBarColor","description":"Background color used for system bars during payment presentation. Must be an opaque `#RRGGBB` string; defaults to `#FFFFFF`. Invalid formats throw immediately.","type":"String","optional":true,"default":"\"#FFFFFF\""}],"description":"App-return routing and presentation settings. Configure these before creating the payment host."},"ApplePayPaymentData":{"title":"ApplePayPaymentData","fields":[{"name":"merchantIdentifier","type":"String","description":"Apple merchant identifier matching the app’s Apple Pay entitlement, for example `merchant.com.example.shop`."}],"description":"Apple Pay merchant configuration for starting a payment."},"StoredPaymentMethodData":{"title":"StoredPaymentMethodData","fields":[{"name":"paymentMethodId","type":"String","description":"ID of the stored payment method returned by `getStoredPaymentMethods()`."}],"description":"Identifies a stored payment method belonging to the session’s customer."},"StoredPaymentMethodFeeData":{"title":"StoredPaymentMethodFeeData","fields":[{"name":"paymentMethodId","type":"String","description":"ID of the stored payment method whose fee should be calculated."},{"name":"amount","type":"Long","description":"Base amount in minor units of the session currency. Uses the session amount when omitted or null.","optional":true,"nullable":true}],"description":"Stored payment method and base amount for a fee calculation."},"HostedFieldFocusData":{"title":"HostedFieldFocusData","fields":[{"name":"field","type":"HostedField","description":"Field to focus. Defaults to `HostedField.Pan`; the name field must be enabled before focusing `HostedField.Name`.","optional":true,"default":"Pan","schema":"HostedField"}],"description":"Identifies the card field that should receive input focus."},"HostedFieldsLanguageData":{"title":"HostedFieldsLanguageData","fields":[{"name":"language","type":"String","description":"Language code for field labels and messages, for example `da` or `en`."}],"description":"Language selection for already-mounted card fields."},"HostedFieldsTestCardData":{"title":"HostedFieldsTestCardData","fields":[{"name":"pan","type":"String","description":"Test card number as a string of digits."},{"name":"expiry","type":"String","description":"Test card expiry in `MMYY` format, for example `1230` for December 2030."},{"name":"cvc","type":"String","description":"Test card security code as a string."},{"name":"name","type":"String","description":"Optional cardholder name for the enabled name field.","optional":true,"nullable":true},{"name":"brand","type":"String","description":"Optional card brand to select for the test card.","optional":true,"nullable":true}],"description":"Test card values to insert into the fields in TEST or PREVIEW mode. Never supply real card details."},"StoredPaymentMethod":{"title":"StoredPaymentMethod","fields":[{"name":"id","type":"String","description":"Unique ID used to pay with, delete, or calculate a fee for this stored method.","nullable":false},{"name":"displayText","type":"String","description":"Shopper-friendly identification, such as a masked card number.","nullable":false},{"name":"type","type":"String","description":"Payment-method type, for example `CARD`.","nullable":false},{"name":"subType","type":"String","description":"More specific payment-method type, such as the card scheme. Null when not supplied.","nullable":true},{"name":"customerId","type":"String","description":"Your customer ID associated with the stored payment method.","nullable":true},{"name":"expiry","type":"String","description":"Expiry date in `YYYY-MM-DD` format. For a card, this is the last day of its expiration month.","nullable":true},{"name":"createdAt","type":"String","description":"Timestamp when the payment method was stored.","nullable":false},{"name":"accountUpdatesEnabled","type":"Boolean","description":"Whether the payment method is enrolled in account updates to keep stored card details current when a replacement is issued.","nullable":false},{"name":"fee","type":"Long","description":"Calculated fee for the session amount, in minor units of the session currency.","nullable":false}],"description":"Saved payment method available to the session’s customer."},"StoredPaymentMethodFee":{"title":"StoredPaymentMethodFee","fields":[{"name":"fee","type":"Long","description":"Fee in minor units of the session currency for the requested base amount. Zero means no fee."}],"description":"Result of calculating a stored payment method’s fee."},"SdkError":{"title":"SdkError","fields":[{"name":"errorCode","type":"String","description":"Machine-readable error code for identifying the failure."},{"name":"message","type":"String","description":"Description of the failure for diagnostics. Use `getClientMessage()` when displaying a localized message to the customer."}],"description":"Error details supplied through SDK events or a payment attempt."},"HostedFieldsStatus":{"title":"HostedFieldsStatus","fields":[{"name":"state","type":"SdkState","schema":"SdkState","description":"Readiness of the mounted card fields."},{"name":"paymentButtonState","type":"PaymentButtonState","schema":"PaymentButtonState","description":"Recommended visibility and enabled state of the payment button. `Active` means ready to pay; processing a payment makes the button disabled."},{"name":"isValid","type":"Boolean","description":"Whether the entered card details pass field validation. This does not guarantee that the payment will be authorized."}],"description":"Combined snapshot of field readiness, validity, and recommended payment-button state."},"SupportedPaymentMethod":{"title":"SupportedPaymentMethod","fields":[{"name":"type","type":"String","description":"Payment-method identifier used to choose the corresponding payment method, for example `CARD` or `APPLE_PAY`."},{"name":"name","type":"String","description":"Display name of the payment method."},{"name":"url","type":"String","description":"URL of the payment-method image for your checkout UI."}],"description":"Payment method enabled for the current session. Device wallet availability requires a separate availability check."},"ClientMessageData":{"title":"ClientMessageData","fields":[{"name":"ePayCode","type":"String","optional":true,"nullable":true,"description":"ePay result or error code to translate. When omitted, uses the latest code retained by the SDK."},{"name":"lang","type":"String","optional":true,"nullable":true,"description":"Language code, for example `da` or `en`. When omitted, uses the language retained from field configuration or a previous language selection."}],"description":"Optional code and language overrides when requesting a shopper-facing message."},"ClientMessage":{"title":"ClientMessage","fields":[{"name":"text","type":"String","description":"Shopper-facing message. May be empty when no message is available and may contain newlines and `**bold**` markers."}],"description":"Localized message associated with an ePay result or error code."},"AgeVerification":{"title":"AgeVerification","fields":[{"name":"minimumAge","type":"Int","description":"Required age in years. Zero means the session has no configured age requirement."},{"name":"status","type":"AgeVerificationStatus","description":"Latest known verification status for this session.","schema":"AgeVerificationStatus"},{"name":"start()","returns":"AgeVerificationResult","parameters":[],"throws":"EpayException","async":true,"description":"Start age verification and wait for its result, even if a previous check was verified. The SDK must be ready and no payment or other verification flow may be active."}],"description":"Age-verification flow for the initialized session. Reinitializing the SDK invalidates this object."},"AgeVerificationResult":{"title":"AgeVerificationResult","fields":[{"name":"status","type":"AgeVerificationStatus","description":"`Verified` when the customer meets the required age; otherwise `NotVerified`.","schema":"AgeVerificationStatus"}],"description":"Outcome returned when an age-verification flow finishes."},"Surcharge":{"title":"Surcharge","fields":[{"name":"paymentMethodType","type":"String","description":"Payment-method type to which the surcharge applies."},{"name":"paymentMethodSubType","type":"String","nullable":true,"description":"More specific payment-method type, such as the card scheme, when available."},{"name":"originalAmount","type":"Long","description":"Payment amount before applying the surcharge."},{"name":"updatedAmount","type":"Long","description":"Total payment amount including the surcharge."},{"name":"fee","type":"Long","description":"Surcharge added to the original amount."},{"name":"minimumFee","type":"Long","description":"Minimum fee configured for the surcharge."},{"name":"flatFee","type":"Long","description":"Fixed fee component of the surcharge."},{"name":"percentage","type":"Double","description":"Percentage fee rate, for example `2.5` for 2.5%."}],"description":"Fee and revised payment amount presented for customer confirmation. All amounts are in minor units of the session currency."},"PaymentAttemptMetadata":{"title":"PaymentAttemptMetadata","fields":[{"name":"hadDeclinedAuthorization","type":"Boolean","description":"A wallet authorization was definitively declined during this attempt."}],"description":"Additional authorization history for the payment attempt."},"TransactionAccepted":{"title":"TransactionAccepted","fields":[{"name":"transactionId","type":"String","nullable":true,"description":"Server transaction ID, or null when the event does not provide one."}],"description":"Notification that a transaction was accepted."},"TransactionDeclined":{"title":"TransactionDeclined","fields":[{"name":"transactionId","type":"String","nullable":true,"description":"Server transaction ID, or null when the event does not provide one."},{"name":"maxAttemptsReached","type":"Boolean","description":"Whether the session has exhausted its permitted payment attempts and cannot be retried."}],"description":"Notification that an authorization was declined."},"FeeUpdated":{"title":"FeeUpdated","fields":[{"name":"fee","type":"Long","description":"Current fee in minor units of the session currency. Zero clears a previously displayed fee."}],"description":"Notification that the fee shown to the customer has changed."},"PaymentCancel":{"title":"PaymentCancel","fields":[{"name":"paymentMethodType","type":"String","description":"Type of payment method whose flow was cancelled."}],"description":"Notification that a payment flow was cancelled."},"ClientRedirect":{"title":"ClientRedirect","fields":[{"name":"url","type":"String","description":"Destination URL opened for the flow."},{"name":"reason","type":"String","description":"Reason for opening the flow, such as `SCA`, `PAYMENT_METHOD`, or `AGE_VERIFICATION`."}],"description":"Information about an authentication or payment-provider flow presented by the SDK."},"Payment":{"title":"Payment","fields":[{"name":"options","type":"TransactionOptions","schema":"TransactionOptions","description":"Amount, note, and storage-consent settings applied to new attempts."},{"name":"handlers","type":"PaymentAttemptHandlers","schema":"PaymentAttemptHandlers","description":"Callbacks attached to each new attempt started through this payment object."},{"name":"createCardTransaction()","description":"Start a payment with the entered card details. The fields must be ready and valid, and their payment-button state must be active.","returns":"PaymentAttempt","parameters":[]},{"name":"createVippsMobilePayTransaction()","description":"Start a Vipps MobilePay payment. Configure the app return URL on iOS so the customer can return to checkout.","returns":"PaymentAttempt","parameters":[]},{"name":"createTwintTransaction()","description":"Start a TWINT payment using the current transaction options. The SDK presents the provider flow and reports progress through the returned attempt.","returns":"PaymentAttempt","parameters":[]},{"name":"createWeroTransaction()","description":"Start a Wero payment using the current transaction options. The SDK presents the provider flow and reports progress through the returned attempt.","returns":"PaymentAttempt","parameters":[]},{"name":"createIdealTransaction()","description":"Start a iDEAL payment using the current transaction options. The SDK presents the provider flow and reports progress through the returned attempt.","returns":"PaymentAttempt","parameters":[]},{"name":"createSwishTransaction()","description":"Start a Swish payment using the current transaction options. The SDK presents the provider flow and reports progress through the returned attempt.","returns":"PaymentAttempt","parameters":[]},{"name":"createAnydayTransaction()","description":"Start a Anyday payment using the current transaction options. The SDK presents the provider flow and reports progress through the returned attempt.","returns":"PaymentAttempt","parameters":[]},{"name":"createViabillTransaction()","description":"Start a ViaBill payment using the current transaction options. The SDK presents the provider flow and reports progress through the returned attempt.","returns":"PaymentAttempt","parameters":[]},{"name":"createKlarnaTransaction()","description":"Start a Klarna payment using the current transaction options. The SDK presents the provider flow and reports progress through the returned attempt.","returns":"PaymentAttempt","parameters":[]},{"name":"createPayPalTransaction()","description":"Start a PayPal payment using the platform payment host. Complete the [PayPal platform setup](/native-sdk/wallets-and-app-returns#paypal) before offering this method.","returns":"PaymentAttempt","parameters":[]},{"name":"createGooglePayTransaction()","description":"Start a Google Pay payment on Android. Check availability for the current session and device before offering the button.","returns":"PaymentAttempt","parameters":[]},{"name":"createApplePayTransaction(data)","description":"Start an Apple Pay payment on iOS. Check availability first and use a merchant identifier matching the app’s entitlement.","returns":"PaymentAttempt","parameters":[{"name":"data","type":"ApplePayPaymentData","description":"Apple merchant identifier for this payment.","schema":"ApplePayPaymentData"}]},{"name":"createStoredPaymentMethodTransaction(data)","description":"Start a payment with a saved method belonging to the session’s customer.","returns":"PaymentAttempt","parameters":[{"name":"data","type":"StoredPaymentMethodData","description":"Stored payment method to use for this payment.","schema":"StoredPaymentMethodData"}]}],"description":"Reusable payment configuration obtained from `sdk.payment()`. Each create method starts an attempt using the current options and returns a `PaymentAttempt` to observe."},"Epay":{"title":"Epay","fields":[{"name":"initialize(sessionId, sessionKey)","description":"Initialize with the supplied payment session and wait until ready. Replaces any previous session and invalidates its fields and age-verification object. Throws on failure or initialization timeout (30 seconds).","parameters":[{"name":"sessionId","type":"String","description":"ID returned when your server creates the payment session."},{"name":"sessionKey","type":"String","description":"Session key returned with that same payment session."}],"returns":"Unit / Void","throws":"EpayException","async":true},{"name":"init(sessionId, sessionKey) / Swift startInitialization(sessionId:sessionKey:)","description":"Start initialization without awaiting readiness; observe `onStateChanged`. Prefer `initialize` for sequential setup.","parameters":[{"name":"sessionId","type":"String","description":"ID returned when your server creates the payment session."},{"name":"sessionKey","type":"String","description":"Session key returned with that same payment session."}],"returns":"Unit / Void"},{"name":"state","description":"Last reported `SdkState`, initially `null` / `nil`.","type":"SdkState","nullable":true,"schema":"SdkState"},{"name":"onStateChanged","description":"Optional callback for `Loading`, `Ready`, and `Failed`. Set before initialization.","type":"Callback<SdkState>","nullable":true},{"name":"events","description":"Payment events and interactive decisions. Register before starting payments.","type":"SdkEvents","schema":"SdkEvents"},{"name":"payment()","description":"Create reusable payment options and handlers.","parameters":[],"returns":"Payment"},{"name":"paymentAttempt","description":"Latest admitted payment attempt; rejected concurrent starts do not replace it.","type":"PaymentAttempt","schema":"PaymentAttempt","nullable":true},{"name":"dispose()","description":"Cancel pending SDK work and release screen resources and callbacks. This does not cancel a submitted payment. Safe to repeat; create a new instance and host for another checkout.","parameters":[],"returns":"Unit / Void"},{"name":"sessionData()","returns":"SessionData","parameters":[],"throws":"EpayException","description":"Return the session snapshot loaded during initialization. Requires the SDK to be ready."},{"name":"getSupportedPaymentMethodTypes()","returns":"List<SupportedPaymentMethod>","parameters":[],"throws":"EpayException","async":true,"description":"List payment methods available for the initialized session. Check Apple Pay or Google Pay device availability separately before displaying those wallet buttons."},{"name":"getStoredPaymentMethods()","description":"List payment methods saved for the session’s customer. Returns an empty list when none are available.","returns":"List<StoredPaymentMethod>","parameters":[],"throws":"EpayException","async":true},{"name":"deleteStoredPaymentMethod(data)","description":"Delete a saved payment method belonging to the session’s customer. Completes when deletion succeeds.","returns":"Unit / Void","parameters":[{"name":"data","type":"StoredPaymentMethodData","description":"Stored payment method to delete.","schema":"StoredPaymentMethodData"}],"throws":"EpayException","async":true},{"name":"calculateStoredPaymentMethodFee(data)","description":"Calculate the fee for a saved payment method and base amount. This query does not change the payment amount or emit a fee-update event.","returns":"StoredPaymentMethodFee","parameters":[{"name":"data","type":"StoredPaymentMethodFeeData","description":"Stored payment method and optional base amount for the fee calculation.","schema":"StoredPaymentMethodFeeData"}],"throws":"EpayException","async":true},{"name":"getClientMessage(data)","returns":"ClientMessage","parameters":[{"name":"data","type":"ClientMessageData","optional":true,"schema":"ClientMessageData","description":"Optional result code and language to use instead of the SDK’s retained values."}],"throws":"EpayException","async":true,"description":"Get a localized shopper-facing message for an ePay code. Omit the input to use the latest code and language retained by the SDK."},{"name":"ageVerification()","returns":"AgeVerification","parameters":[],"throws":"EpayException","description":"Get the age-verification flow for the initialized session. Requires the SDK to be ready."},{"name":"Epay(host)","returns":"Epay","parameters":[{"name":"host","type":"AndroidPaymentHost / IosPaymentHost","description":"Platform host responsible for presenting payment and authentication flows from the checkout screen."}],"description":"Create an SDK instance for the owning checkout screen."},{"name":"mountFields(host, config)","returns":"HostedFields","parameters":[{"name":"host","type":"AndroidHostedFields / IosHostedFields","description":"Platform card-field view added to your checkout layout."},{"name":"config","type":"HostedFieldsConfig","schema":"HostedFieldsConfig","description":"Appearance, initial height, and callbacks for the card fields."}],"description":"Mount card fields in the supplied platform view after SDK initialization. Observe field status before enabling payment."},{"name":"handleReturnUrl(url)","returns":"Boolean","parameters":[{"name":"url","type":"String","description":"Complete incoming URL received by the app’s URL or app-link handler."}],"description":"Pass an incoming app-return URL to the SDK. Returns true when consumed, or false for unrelated, stale, or duplicate returns. A consumed URL does not establish payment success."},{"name":"checkGooglePayAvailability(data)","returns":"WalletAvailability","parameters":[{"name":"data","type":"GooglePayData","schema":"GooglePayData","description":"Transaction options to use when checking Google Pay availability."}],"description":"Check whether Google Pay can be offered for this session, device, and transaction options on Android.","throws":"EpayException","async":true},{"name":"checkApplePayAvailability(data)","returns":"WalletAvailability","parameters":[{"name":"data","type":"ApplePayData","schema":"ApplePayData","description":"Apple merchant identifier and transaction options to use for the availability check."}],"description":"Check whether Apple Pay can be offered for this session, device, and merchant identifier on iOS.","throws":"EpayException","async":true}],"description":"Entry point for app checkout. Create an instance for the checkout screen, initialize it with a payment session, and dispose it when the screen is released."},"HostedFields":{"title":"HostedFields","fields":[{"name":"state","type":"SdkState","schema":"SdkState","description":"Current field readiness, independent of the SDK’s session readiness."},{"name":"isValid","type":"Boolean","description":"Whether the entered card details pass field validation. Use `status.paymentButtonState` to decide when payment is available."},{"name":"status","type":"HostedFieldsStatus","schema":"HostedFieldsStatus","description":"Latest combined readiness, validity, and payment-button recommendation."},{"name":"onReadinessChanged","type":"Callback<SdkState>","nullable":true,"description":"Called on the UI thread when field readiness changes."},{"name":"onValidityChanged","type":"Callback<HostedFieldsValidity>","nullable":true,"schema":"HostedFieldsValidity","description":"Called on the UI thread when the validity of entered card details changes."},{"name":"onUpdate","type":"Callback<HostedFieldsStatus>","nullable":true,"schema":"HostedFieldsStatus","description":"Receives the current status immediately when assigned, then subsequent status updates on the UI thread."},{"name":"onSubmit","type":"Callback","nullable":true,"description":"Called when the customer submits the ready fields, for example using the keyboard. Start payment when the payment-button state is active."},{"name":"clear()","description":"Clear the entered card details without unmounting the fields.","returns":"Unit / Void","parameters":[],"throws":"EpayException","async":true},{"name":"focus(data)","description":"Move input focus to the selected card field. The cardholder-name field must be enabled before it can receive focus.","returns":"Unit / Void","parameters":[{"name":"data","type":"HostedFieldFocusData","description":"Card field that should receive focus.","schema":"HostedFieldFocusData"}],"throws":"EpayException","async":true},{"name":"setLanguage(data)","description":"Change the language of mounted fields. After success, the SDK also uses this language for shopper-facing messages.","returns":"Unit / Void","parameters":[{"name":"data","type":"HostedFieldsLanguageData","description":"Language to apply to field labels and messages.","schema":"HostedFieldsLanguageData"}],"throws":"EpayException","async":true},{"name":"insertTestCard(data)","description":"Fill the fields with test card values. Only applies in TEST or PREVIEW mode; ignored in other modes.","returns":"Unit / Void","parameters":[{"name":"data","type":"HostedFieldsTestCardData","description":"Test card values to insert into the mounted fields.","schema":"HostedFieldsTestCardData"}],"throws":"EpayException","async":true},{"name":"dispose()","description":"Release the component and callbacks. Safe to repeat; remount with a new platform view.","returns":"Unit / Void","parameters":[]}],"description":"Mounted card-entry component returned by `mountFields()`. Control methods require the fields to be ready."},"PaymentAttemptHandlers":{"title":"PaymentAttemptHandlers","fields":[{"name":"onUpdate","type":"Callback<PaymentAttempt>","nullable":true,"optional":true,"description":"Observe updates for each new attempt on the UI thread."}],"description":"Callbacks copied to each attempt created by a payment object."},"HostedFieldsValidity":{"title":"HostedFieldsValidity","fields":[{"name":"isValid","type":"Boolean","description":"True when the card details pass field validation. This does not establish that the card can be charged."}],"description":"Validity update for the entered card details."},"GooglePayData":{"title":"GooglePayData","fields":[{"name":"options","type":"TransactionOptions","optional":true,"schema":"TransactionOptions","description":"Transaction options for the payment you intend to offer. Omit to use the session’s default payment options."}],"description":"Options for checking Google Pay availability on Android."},"ApplePayData":{"title":"ApplePayData","fields":[{"name":"merchantIdentifier","type":"String","description":"Apple merchant identifier matching the app’s Apple Pay entitlement."},{"name":"options","type":"TransactionOptions","optional":true,"schema":"TransactionOptions","description":"Transaction options for the payment you intend to offer. Omit to use the session’s default payment options."}],"description":"Merchant configuration and options for checking Apple Pay availability on iOS."},"WalletAvailability":{"title":"WalletAvailability","fields":[{"name":"isAvailable","type":"Boolean","description":"Whether this wallet is available for the current session and device."}],"description":"Result of checking whether a device wallet can be offered for the current session."},"SdkState":{"title":"SdkState","fields":[{"name":"Loading","type":"value","description":"Initialization is in progress; operations requiring readiness are unavailable."},{"name":"Ready","type":"value","description":"Initialization completed successfully and the object is ready for use."},{"name":"Failed","type":"value","description":"Initialization failed or the object was disposed. It cannot perform operations requiring readiness."}],"kind":"enum","description":"Readiness shared by the SDK and mounted card fields. Observe each object separately."},"HostedField":{"title":"HostedField","fields":[{"name":"Pan","type":"value","description":"Card-number field."},{"name":"Expiry","type":"value","description":"Card expiration month and year field."},{"name":"Cvc","type":"value","description":"Card security-code field."},{"name":"Name","type":"value","description":"Cardholder-name field, available when enabled in the field configuration."}],"kind":"enum","description":"Card field that can be selected for input focus."},"AgeVerificationStatus":{"title":"AgeVerificationStatus","fields":[{"name":"NotRequested","type":"value","description":"No minimum age was configured for the session and verification has not been requested."},{"name":"NotVerified","type":"value","description":"The customer has not been verified as meeting the required age."},{"name":"Verified","type":"value","description":"The customer has been verified as meeting the required age."}],"kind":"enum","description":"Known age-verification status for the session."},"SessionTimestamp":{"title":"SessionTimestamp","type":"Instant / Date","description":"Type alias: kotlin.time.Instant on Android; Foundation Date in Swift.","fields":[]},"SurchargeDecision":{"title":"SurchargeDecision","fields":[{"name":"confirm()","returns":"Unit / Void","parameters":[],"description":"Accept the surcharge on the UI thread."},{"name":"cancel()","returns":"Unit / Void","parameters":[],"description":"Request cancellation on the UI thread. Wait for the SDK outcome. Only the first decision applies."}],"description":"Response to a surcharge-confirmation callback. Call either method on the UI thread; only the first decision applies."},"EpayException":{"title":"EpayException","fields":[{"name":"errorCode","type":"String","description":"Machine-readable error code for identifying the failure."},{"name":"message","type":"String","description":"Description of the failure for diagnostics. Use `getClientMessage()` when displaying a localized message to the customer."}],"description":"Exception thrown when an SDK operation cannot complete. In Swift, use `EpayErrors` to extract SDK details from the caught error."},"EpayErrors":{"title":"EpayErrors","fields":[{"name":"details(error)","returns":"EpayErrorDetails?","parameters":[{"name":"error","type":"NSError","description":"Caught error converted to `NSError`. Returns nil when it does not contain SDK error details."}],"description":"Swift: EpayErrors.shared.details(error:). Returns nil for errors without SDK details."}],"description":"Swift helper for extracting structured SDK details from a caught error."},"AndroidPaymentHost":{"title":"AndroidPaymentHost","fields":[{"name":"AndroidPaymentHost(activity, config)","parameters":[{"name":"activity","type":"Activity","description":"Activity from which payment and authentication screens are presented."},{"name":"config","type":"PaymentHostConfig","optional":true,"schema":"PaymentHostConfig","description":"Optional app-return and presentation settings. Omit to use the platform defaults."}],"returns":"AndroidPaymentHost","description":"Create a payment host owned by the checkout activity."}],"description":"Android presentation host for payment, wallet, and authentication flows."},"IosPaymentHost":{"title":"IosPaymentHost","fields":[{"name":"IosPaymentHost(viewController:config:)","parameters":[{"name":"viewController","type":"UIViewController","description":"View controller from which payment and authentication screens are presented."},{"name":"config","type":"PaymentHostConfig","optional":true,"schema":"PaymentHostConfig","description":"Optional app-return and presentation settings. Configure the URLs required by the payment methods you offer."}],"returns":"IosPaymentHost","description":"Create a payment host using the standard Swift initializer from `EpayPayPal`."}],"description":"iOS presentation host for payment, wallet, and authentication flows."},"AndroidHostedFields":{"title":"AndroidHostedFields","fields":[{"name":"AndroidHostedFields(context)","parameters":[{"name":"context","type":"Context","description":"Android UI context used to create the field view, normally the checkout activity."}],"returns":"AndroidHostedFields","description":"Create the field view and add it to your checkout layout before calling `mountFields()`."}],"description":"Android view that contains the card-entry fields."},"IosHostedFields":{"title":"IosHostedFields","fields":[{"name":"IosHostedFields()","parameters":[],"returns":"IosHostedFields","description":"Create a field container. Add its `view` to your layout before calling `mountFields()`."},{"name":"view","type":"UIView","description":"Add to your layout and constrain its width and position; the SDK manages height."}],"description":"iOS card-entry container exposing a view for your checkout layout."},"EpayErrorDetails":{"title":"EpayErrorDetails","fields":[{"name":"errorCode","type":"String","description":"Machine-readable error code for identifying the failure."},{"name":"message","type":"String","description":"Description of the failure for diagnostics. Use `getClientMessage()` when displaying a localized message to the customer."}],"description":"Structured SDK error details extracted from a Swift error."}},"views":{"PaymentMethods":{"title":"Payment methods","members":[{"schema":"Payment","member":"createCardTransaction()"},{"schema":"Payment","member":"createVippsMobilePayTransaction()"},{"schema":"Payment","member":"createTwintTransaction()"},{"schema":"Payment","member":"createWeroTransaction()"},{"schema":"Payment","member":"createIdealTransaction()"},{"schema":"Payment","member":"createSwishTransaction()"},{"schema":"Payment","member":"createAnydayTransaction()"},{"schema":"Payment","member":"createViabillTransaction()"},{"schema":"Payment","member":"createKlarnaTransaction()"},{"schema":"Payment","member":"createPayPalTransaction()"},{"schema":"Payment","member":"createGooglePayTransaction()"},{"schema":"Payment","member":"createApplePayTransaction(data)"},{"schema":"Payment","member":"createStoredPaymentMethodTransaction(data)"}]},"Lifecycle":{"title":"Epay","members":[{"schema":"Epay","member":"initialize(sessionId, sessionKey)"},{"schema":"Epay","member":"init(sessionId, sessionKey) / Swift startInitialization(sessionId:sessionKey:)"},{"schema":"Epay","member":"state"},{"schema":"Epay","member":"onStateChanged"},{"schema":"Epay","member":"events"},{"schema":"Epay","member":"payment()"},{"schema":"Epay","member":"paymentAttempt"},{"schema":"Epay","member":"dispose()"}]},"SessionQueries":{"title":"Session data","members":[{"schema":"Epay","member":"sessionData()"}]},"SupportedMethods":{"title":"Available payment methods","members":[{"schema":"Epay","member":"getSupportedPaymentMethodTypes()"}]},"StoredMethodOperations":{"title":"Stored payment method operations","members":[{"schema":"Epay","member":"getStoredPaymentMethods()"},{"schema":"Epay","member":"deleteStoredPaymentMethod(data)"},{"schema":"Epay","member":"calculateStoredPaymentMethodFee(data)"},{"schema":"Payment","member":"createStoredPaymentMethodTransaction(data)"}]},"ClientMessages":{"title":"Shopper-facing messages","members":[{"schema":"Epay","member":"getClientMessage(data)"}]},"AgeVerificationMethods":{"title":"Age verification","members":[{"schema":"Epay","member":"ageVerification()"}]},"FieldControls":{"title":"HostedFields controls","members":[{"schema":"HostedFields","member":"clear()"},{"schema":"HostedFields","member":"focus(data)"},{"schema":"HostedFields","member":"setLanguage(data)"},{"schema":"HostedFields","member":"insertTestCard(data)"},{"schema":"HostedFields","member":"dispose()"}]}}}