{"templateId":"markdown","versions":[{"version":"v1","label":"v1","link":"/products/checkout/android/v1/cvc-only","default":false,"active":false,"folderId":"0dba1fab"},{"version":"v2","label":"v2","link":"/products/checkout/android/v2/cvc-only","default":false,"active":false,"folderId":"0dba1fab"},{"version":"v3","label":"v3","link":"/products/checkout/android/v3/cvc-only","default":false,"active":true,"folderId":"0dba1fab"},{"version":"v4","label":"v4","link":"/products/checkout/android/v4/cvc-only","default":false,"active":false,"folderId":"0dba1fab"},{"version":"v5","label":"v5 (Latest)","link":"/products/checkout/android/cvc-only","default":true,"active":false,"folderId":"0dba1fab"}],"sharedDataIds":{"sidebar":"sidebar-products/checkout/android/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["partial","admonition","code-snippet","tabs","tab"]},"custom_product":"Checkout","type":"markdown"},"seo":{"title":"Create a session for CVC only","description":"Worldpay for Developers - docs, code examples, resources and tools. Everything you need to build your omnichannel payment solution.","siteUrl":"https://docs.worldpay.com/access","image":"/access/assets/worldpay-logo-light.21b7daf79984773a9fcd7d4fbcb07ae5289dfffd6023c4c3dca720c7058e53dc.33f780a6.svg","keywords":"documentation, api, openapi, sdks, developer, payments, json, payouts, 3ds","jsonLd":{"@context":"https://schema.org","@type":"Organization","url":"https://docs.worldpay.com/access","name":"Worldpay"},"meta":[{"name":"google-site-verification","content":"zjziIKaP3ImsqsfhYnEBnq1R85UabiSwl7HTXuwtZuo"},{"name":"doc_product","content":"Access"},{"name":"doc_category","content":"Documentation"}],"llmstxt":{"hide":false,"sections":[{"title":"Payments API","description":"Payment orchestration API combining fraud assessment, 3ds authentication, SCA exemptions, Worldpay Token creation and a card or wallet based payment.","includeFiles":["products/payments/@20240601/**/*"],"excludeFiles":[]},{"title":"Payment Queries API","description":"Querying your payments data, based on a variety of parameters.","includeFiles":["products/payment-queries/@v1/**/*"],"excludeFiles":[]},{"title":"Card BIN Data API","description":"Provides detailed information about a card.","includeFiles":["products/card-bin/@v1/**/*"],"excludeFiles":[]},{"title":"3DS Authentication API","description":"Request 3DS authentication to protect against fraud, be SCA compliant and to shift liability using this standalone API.","includeFiles":["products/3ds/@v3/**/*"],"excludeFiles":[]},{"title":"FraudSight API","description":"Request a risk assessment and receive a response with an outcome (e.g. lowRisk) using this standalone API.","includeFiles":["products/fraudsight/@v1/**/*"],"excludeFiles":[]},{"title":"Checkout SDK","description":"Integrate using our clientside SDKs for both web and native devices. Benefit from SAQ-A/PCI-SSF compliance.","includeFiles":["products/checkout/web/@v2/**/*","products/checkout/ios/@v4/**/*","products/checkout/android/@v4/**/*","products/checkout/react-native/@v3/**/*","products/checkout/flutter/@v1/**/*"],"excludeFiles":[]},{"title":"Tokens API","description":"Minimizes the exposure of sensitive card details and increases the security of your customer's card details.","includeFiles":["products/tokens/@v3/**/*"],"excludeFiles":[]},{"title":"Card Payments API","description":"Request a card payment using this standalone API, requires separate requests for 3DS, Fraud assessment etc.","includeFiles":["products/card-payments/@v7/**/*"],"excludeFiles":[]},{"title":"Card Verifications API","description":"Verify your customer's card to maximize your authentication rates.","includeFiles":["products/card-verifications/@v6/**/*"],"excludeFiles":[]},{"title":"Account Payouts API","description":"Send funds to your customer's bank accounts and search for payouts using parameters.","includeFiles":["products/account-payouts/@20250101/**/*"],"excludeFiles":[]},{"title":"APMs","description":"Pay using eWallets, bank transfers, direct debits, local card schemes, Postpay and eInvoice/ Buy Now Pay Later.","includeFiles":["products/apms/@20240701/**/*"],"excludeFiles":[]},{"title":"Balance API","description":"Request your account details for a single account or all accounts under an entity.","includeFiles":["products/balance/@20250101/**/*"],"excludeFiles":[]},{"title":"Card Payouts API","description":"Send funds to your customer's cards.","includeFiles":["products/card-payouts/@v4/**/*"],"excludeFiles":[]},{"title":"Events (Webhooks)","description":"Receive status updates from Access Worldpay by setting up a webhook.","includeFiles":["products/events/@v1/**/*"],"excludeFiles":[]},{"title":"FX API","description":"Manage Foreign Exchange (FX) on your payments.","includeFiles":["products/fx/@v1/**/*"],"excludeFiles":[]},{"title":"Hosted Payment Pages (HPP) API","description":"Our low-code option to take payments securely at the lowest PCI compliance level - SAQ A.","includeFiles":["products/hosted-payment-pages/@v1/**/*"],"excludeFiles":[]},{"title":"Money Transfers API","description":"Money Transfer OCTs (Original Credit Transaction) allow funds to be pushed to an eligible card in 30 minutes or less.","includeFiles":["products/money-transfers/@v1/**/*"],"excludeFiles":[]},{"title":"Parties API","description":"Create parties, manage your payout instruments and beneficial owners and carry out identity verification checks.","includeFiles":["products/parties/@20250101/**/*"],"excludeFiles":[]},{"title":"SCA Exemptions API","description":"Maximize a frictionless checkout experience by using issuer data insights to apply exemptions.","includeFiles":["products/sca-exemptions/@v1/**/*"],"excludeFiles":[]},{"title":"Split Payments API","description":"Divide funds from a single payment amongst yourself and your parties/sellers.","includeFiles":["products/split-payments/@20250625/**/*"],"excludeFiles":[]},{"title":"Statements API","description":"Retrieve your account statement and see individual entries for all credits and debits.","includeFiles":["products/statements/@20250101/**/*"],"excludeFiles":[]},{"title":"Transfers API","description":"Transfer funds from source account to target account.","includeFiles":["products/transfers/@20250101/**/*"],"excludeFiles":[]},{"title":"Verified Tokens API","description":"Verified Tokens ensures that your customer's payment details are valid and CIT compliant when creating a token.","includeFiles":["products/verified-tokens/@v3/**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Last updated"]},": 30 October 2025 | ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/checkout/android/changelog/"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Change log"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"create-a-session-for-cvc-only","__idx":0},"children":["Create a session for CVC only"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Full sample integration"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can see an example of the session generation ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/Worldpay/access-checkout-android/tree/master/demo-app/src/main/java/com/worldpay/access/checkout/sample"},"children":["here"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"set-your-views","__idx":1},"children":["Set your views"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When you create your checkout form, you must add the views that your customers use to enter their card details and set unique identifiers for each of them."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["As part of our SDK, we provide a UI Component dedicated to capturing your customer's card details to minimize your exposure to PCI Data."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You must use this component if you want to qualify for the lowest level of PCI compliance (SAQ-A)."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"./code/views/view-cvc-only.xml","language":"xml","header":{"controls":{"copy":{}}},"lang":"xml","source":"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n              android:layout_width=\"match_parent\"\n              android:layout_height=\"match_parent\" >\n\n    <!-- layout style attributes omitted -->\n    <AccessCheckoutEditText android:id=\"@+id/cvc\" />\n\n    <!-- layout style attributes omitted -->\n    <Button android:id=\"@+id/submit_button\" />\n\n</LinearLayout>\n"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"reference-your-views","__idx":2},"children":["Reference your views"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You must now reference your view configurations. Use the same unique view identifiers ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#set-your-views"},"children":["as above"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Here's an example of how you would reference your view configurations."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"Kotlin","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"./code/reference-views/reference-views-cvc-only.kt","language":"kotlin","header":{"controls":{"copy":{}}},"lang":"kotlin","source":"package com.worldpay.access.checkout.sample.code\n\n// android library imports omitted\n\nclass MainActivity : AppCompatActivity() {\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n\n        val cvcAccessCheckoutView: AccessCheckoutEditText = findViewById<AccessCheckoutEditText>(R.id.card_flow_text_cvc)\n        val submit = findViewById<Button>(R.id.submit_button)\n    }\n\n}\n"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"Java","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"./code/reference-views/reference-views-cvc-only.java","language":"java","header":{"controls":{"copy":{}}},"lang":"java","source":"package com.worldpay.access.checkout.sample.code\n\n// android library imports omitted\n\npublic class MainActivity extends AppCompatActivity {\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n\n        AccessCheckoutEditText cvcAccessCheckoutView = findViewById<AccessCheckoutEditText>(R.id.card_flow_text_cvc);\n        Button submit = findViewById<Button>(R.id.submit_button);\n    }\n\n}\n"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"validate-cvc-details","__idx":3},"children":["Validate CVC details"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can optionally validate your customer's CVC. You can find instructions ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/checkout/android/v3/card-and-cvc"},"children":["here"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"create-a-cvc-session","__idx":4},"children":["Create a CVC session"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"implementing-callbacks","__idx":5},"children":["Implementing callbacks"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The SDK retrieves the customers card details from the UI Components. The SDK then creates the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["session"]}," and invokes a callback to the"," ","implementation class of the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SessionResponseListener"]}," interface."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You must create a class that implements our ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SessionResponseListener"]}," interface."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your implementation receives notifications once the session request is complete."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You get the session as a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Map<SessionType, String>"]}," or the exception as a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AccessCheckoutException"]}," in the case of an error."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Here is an example implementation of the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SessionResponseListener"]}," interface."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"Kotlin","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"./code/session-response-listener/session-response-listener.kt","language":"kotlin","header":{"controls":{"copy":{}}},"lang":"kotlin","source":"package com.worldpay.access.checkout.sample.code\n\nimport com.worldpay.access.checkout.client.api.exception.AccessCheckoutException\nimport com.worldpay.access.checkout.client.session.listener.SessionResponseListener\nimport com.worldpay.access.checkout.client.session.model.SessionType\n\nclass MySessionResponseListener: SessionResponseListener {\n\n    override fun onSuccess(sessionResponseMap: Map<SessionType, String>) {\n        //TODO: handle the session response here\n    }\n\n    override fun onError(error: AccessCheckoutException) {\n        //TODO: handle the exception here\n    }\n\n}\n"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"Java","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"./code/session-response-listener/session-response-listener.java","language":"java","header":{"controls":{"copy":{}}},"lang":"java","source":"package com.worldpay.access.checkout.sample.code\n\nimport com.worldpay.access.checkout.client.api.exception.AccessCheckoutException;\nimport com.worldpay.access.checkout.client.session.listener.SessionResponseListener;\nimport com.worldpay.access.checkout.client.session.model.SessionType;\n\npublic class MySessionResponseListener implements SessionResponseListener {\n\n    @Override\n    public void onSuccess(Map<SessionType, String> sessionResponseMap) {\n        //TODO: handle the session response here\n    }\n\n    @Override\n    public void onError(AccessCheckoutException error) {\n        //TODO: handle the exception here\n    }\n\n}\n"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"initialize-the-accesscheckoutclient","__idx":6},"children":["Initialize the AccessCheckoutClient"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You must now initialize the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AccessCheckoutClient"]}," using the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AccessCheckoutClientBuilder"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To do this, you must provide your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["baseUrl"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["checkoutId"]}," and other parameters. See the table below for more information."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Here's an example of how you would initialize the SDK with the mandatory parameters and configurations."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"Kotlin","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"./code/init-aco-client/create-aco-client.kt","language":"kotlin","header":{"controls":{"copy":{}}},"lang":"kotlin","source":"package com.worldpay.access.checkout.sample.code\n\n// android library imports omitted\n\nimport com.worldpay.access.checkout.client.session.AccessCheckoutClientBuilder\nimport com.worldpay.access.checkout.client.session.AccessCheckoutClient\nimport com.worldpay.access.checkout.client.session.model.SessionType\n\nclass MainActivity : AppCompatActivity() {\n\n    private val baseUrl = \"TARGET_BASE_URL\"\n    private val checkoutId = \"YOUR_CHECKOUT_ID\"\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n\n        // reference views code ommited\n\n        val sessionResponseListener = MySessionResponseListener()\n\n        val accessCheckoutClient = AccessCheckoutClientBuilder()\n                .baseUrl(baseUrl)\n                .checkoutId(checkoutId)\n                .context(this)\n                .sessionResponseListener(sessionResponseListener)\n                .lifecycleOwner(this)\n                .build()\n    }\n\n}\n"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"Java","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"./code/init-aco-client/create-aco-client.java","language":"java","header":{"controls":{"copy":{}}},"lang":"java","source":"package com.worldpay.access.checkout.sample.code\n\n// android library imports omitted\n\nimport com.worldpay.access.checkout.client.session.AccessCheckoutClientBuilder;\nimport com.worldpay.access.checkout.client.session.AccessCheckoutClient;\nimport com.worldpay.access.checkout.client.session.listener.SessionResponseListener;\nimport com.worldpay.access.checkout.client.session.model.SessionType;\n\npublic class MainActivity extends AppCompatActivity {\n\n    private String baseUrl = \"TARGET_BASE_URL\";\n    private String checkoutId = \"YOUR_CHECKOUT_ID\";\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n\n        // reference views code ommited\n\n        SessionResponseListener sessionResponseListener = new MySessionResponseListener();\n\n        final AccessCheckoutClient accessCheckoutClient = new AccessCheckoutClientBuilder()\n                .baseUrl(baseUrl)\n                .checkoutId(checkoutId)\n                .context(this)\n                .sessionResponseListener(sessionResponseListener)\n                .lifecycleOwner(this)\n                .build();\n    }\n\n}\n"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Important"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When using the SDK with ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["AndroidX Lifecycle 2.3.0"]}," and above, the call to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["build()"]}," must be done on the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["main UI thread"]},". This is due to changes to the LifecycleRegistry class used by the SDK which now enforces this constraint."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"mandatory-parameters","__idx":7},"children":["Mandatory parameters"]},{"$$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":"Parameter"},"children":["Parameter"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["baseUrl"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For testing use: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://try.access.worldpay.com/"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["For live use: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://access.worldpay.com/"]}]}]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["checkoutId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your unique checkout ID."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sessionResponseListener"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The callback listener that returns your customer's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["session"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["context"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.android.com/reference/android/content/Context"},"children":["Android Context"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["lifecycle"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developer.android.com/reference/android/arch/lifecycle/LifecycleOwner"},"children":["Android LifecycleOwner"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"generate-cvc-session","__idx":8},"children":["Generate CVC session"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You must pass references to the UI Components as well as the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SessionType.CVC"]}," enum to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["generateSessions"]}," method on the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AccessCheckoutClient"]}," instance."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Here's an example of what you should do when your customer clicks the submit button."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"Kotlin","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"./code/generate-session/cvc/cvc.kt","language":"java","header":{"controls":{"copy":{}}},"lang":"java","source":"package com.worldpay.access.checkout.sample.code\n\n// android library imports omitted\n\nimport com.worldpay.access.checkout.client.session.model.CardDetails\nimport com.worldpay.access.checkout.client.session.model.SessionType\n\nclass MainActivity : AppCompatActivity() {\n\n    // fields ommitted\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n\n        val cvcAccessCheckoutView: AccessCheckoutEditText = findViewById<AccessCheckoutEditText>(R.id.card_flow_text_cvc)\n        val submit = findViewById<Button>(R.id.submit_button)\n\n        // AccessCheckoutClient creation code ommitted\n\n        submit.setOnClickListener {\n            val cardDetails = CardDetails.Builder()\n                .cvc(cvcAccessCheckoutView)\n                .build()\n\n            accessCheckoutClient.generateSessions(cardDetails, listOf(SessionType.CVC))\n        }\n    }\n\n}\n"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"Java","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"./code/generate-session/cvc/cvc.java","language":"java","header":{"controls":{"copy":{}}},"lang":"java","source":"package com.worldpay.access.checkout.sample.code\n\n// android library imports omitted\n\nimport com.worldpay.access.checkout.client.session.AccessCheckoutClient;\nimport com.worldpay.access.checkout.client.session.model.CardDetails;\nimport com.worldpay.access.checkout.client.session.model.SessionType;\n\npublic class MainActivity extends AppCompatActivity {\n\n    // fields omitted\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n\n        AccessCheckoutEditText cvcAccessCheckoutView = findViewById<AccessCheckoutEditText>(R.id.card_flow_text_cvc);\n        Button submit = findViewById<Button>(R.id.submit_button);\n\n        // AccessCheckoutClient creation code omitted\n\n        submit.setOnClickListener(view -> {\n            CardDetails cardDetails = new CardDetails.Builder()\n                    .cvc(cvcAccessCheckoutView)\n                    .build();\n\n            accessCheckoutClient.generateSessions(cardDetails, Collections.singletonList(SessionType.CVC));\n        });\n    }\n\n}\n"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"full-code-sample","__idx":9},"children":["Full code sample"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Here's the full code sample of the steps above."]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"Kotlin","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"./code/generate-session/cvc/cvc-full.kt","language":"java","header":{"controls":{"copy":{}}},"lang":"java","source":"package com.worldpay.access.checkout.sample.code\n\nimport android.os.Bundle\nimport androidx.appcompat.app.AppCompatActivity\nimport android.widget.Button\nimport com.worldpay.access.checkout.sample.code.R\n\nimport com.worldpay.access.checkout.client.session.AccessCheckoutClient\nimport com.worldpay.access.checkout.client.session.model.CardDetails\nimport com.worldpay.access.checkout.client.session.model.SessionType\nimport com.worldpay.access.checkout.ui.AccessCheckoutEditText\n\nclass MainActivity : AppCompatActivity() {\n\n    private val baseUrl = \"TARGET_BASE_URL\"\n    private val checkoutId = \"YOUR_CHECKOUT_ID\"\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n\n        val cvcAccessCheckoutView: AccessCheckoutEditText = findViewById<AccessCheckoutEditText>(R.id.card_flow_text_cvc)\n        val submit = findViewById<Button>(R.id.submit_button)\n\n        val sessionResponseListener = MySessionResponseListener()\n\n        val accessCheckoutClient = AccessCheckoutClientBuilder()\n                .baseUrl(baseUrl)\n                .checkoutId(checkoutId)\n                .context(this)\n                .sessionResponseListener(sessionResponseListener)\n                .lifecycleOwner(this)\n                .build()\n\n        submit.setOnClickListener {\n            val cardDetails = CardDetails.Builder()\n                .cvc(cvcAccessCheckoutView)\n                .build()\n\n            accessCheckoutClient.generateSessions(cardDetails, listOf(SessionType.CVC))\n        }\n    }\n\n}\n"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"Java","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"file":"./code/generate-session/cvc/cvc-full.java","language":"java","header":{"controls":{"copy":{}}},"lang":"java","source":"package com.worldpay.access.checkout.sample.code\n\nimport android.os.Bundle;\nimport androidx.appcompat.app.AppCompatActivity;\nimport android.widget.Button;\nimport com.worldpay.access.checkout.sample.code.R;\n\nimport com.worldpay.access.checkout.client.session.AccessCheckoutClient;\nimport com.worldpay.access.checkout.client.session.model.CardDetails;\nimport com.worldpay.access.checkout.client.session.model.SessionType;\nimport com.worldpay.access.checkout.ui.AccessCheckoutEditText\n\npublic class MainActivity extends AppCompatActivity {\n\n    private String baseUrl = \"TARGET_BASE_URL\";\n    private String checkoutId = \"YOUR_CHECKOUT_ID\";\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n\n        AccessCheckoutEditText cvcAccessCheckoutView = findViewById<AccessCheckoutEditText>(R.id.card_flow_text_cvc);\n        Button submit = findViewById<Button>(R.id.submit_button);\n\n        SessionResponseListener sessionResponseListener = new MySessionResponseListener();\n\n        final AccessCheckoutClient accessCheckoutClient = new AccessCheckoutClientBuilder()\n                .baseUrl(baseUrl)\n                .checkoutId(checkoutId)\n                .context(this)\n                .sessionResponseListener(sessionResponseListener)\n                .lifecycleOwner(this)\n                .build();\n\n        submit.setOnClickListener(view -> {\n            CardDetails cardDetails = new CardDetails.Builder()\n                    .cvc(cvcAccessCheckoutView)\n                    .build();\n\n            accessCheckoutClient.generateSessions(cardDetails, Collections.singletonList(SessionType.CVC));\n        });\n    }\n\n}\n"},"children":[]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Caution"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Do ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["not"]}," validate the structure or length of the session resources. We follow HATEOS standard to allow us the flexibility to extend our APIs with non-breaking changes."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Important"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The CVC ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["session"]}," has a lifespan of ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["15 minutes"]}," and you can use it ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["only once"]},". If you do not take a payment within that time, you must create a new CVC ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["session"]}," value."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Next steps"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Using the Payments API"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Apply the session in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/payments/use-a-stored-card"},"children":["payment request"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Using the Card Payments API"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Apply the session in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/card-payments/authorize-a-payment"},"children":["payment request"]}]}]}]},"headings":[{"value":"Create a session for CVC only","id":"create-a-session-for-cvc-only","depth":1},{"value":"Set your views","id":"set-your-views","depth":2},{"value":"Reference your views","id":"reference-your-views","depth":2},{"value":"Validate CVC details","id":"validate-cvc-details","depth":2},{"value":"Create a CVC session","id":"create-a-cvc-session","depth":2},{"value":"Implementing callbacks","id":"implementing-callbacks","depth":3},{"value":"Initialize the AccessCheckoutClient","id":"initialize-the-accesscheckoutclient","depth":3},{"value":"Mandatory parameters","id":"mandatory-parameters","depth":3},{"value":"Generate CVC session","id":"generate-cvc-session","depth":3},{"value":"Full code sample","id":"full-code-sample","depth":3}],"frontmatter":{"seo":{"title":"Create a session for CVC only"}},"lastModified":"2025-11-26T14:54:42.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/checkout/android/v3/cvc-only","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}