{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Going live — SDK","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"going-live--sdk","__idx":0},"children":["Going live — SDK"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Certification test cases for every integration path, including the SDK, are on the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/in-person-payments/tap-to-pay/going-live/certification"},"children":["Certification"]}," page. This page covers the SDK-specific steps to move from certification to production."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"prepare-for-production","__idx":1},"children":["Prepare for production"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once you have passed certification you can prepare your app for the live environment. The steps differ by platform."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"android","__idx":2},"children":["Android"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Export a public certificate from your production keystore and provide it to Tyro along with your production ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["applicationId"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Run the following to generate your public cert:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["keytool -export -alias key0 -keystore yourkeystore.jks -rfc -file publiccert.pem"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Make sure the alias is the same as the one you used to generate the keystore."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["applicationId: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["com.your.pos.application"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["public certificate:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"txt","header":{"controls":{"copy":{}}},"source":"-----BEGIN CERTIFICATE-----\nMIIDOjCCAiICAQEwDQYJKoZIhvcNAQELBQAwYzEUMBIGA1UEAwwLRXhhbXBsZSBB\ncHAxEDAOBgNVBAsMB0Nvbm5lY3QxDTALBgNVBAoMBFR5cm8xDzANBgNVBAcMBlN5\nZG5leTEMMAoGA1UECAwDTlNXMQswCQYDVQQGEwJBVTAeFw0yNDAyMjgwNTMwMjBa\nFw00OTAyMjEwNTMwMjBaMGMxFDASBgNVBAMMC0V4YW1wbGUgQXBwMRAwDgYDVQQL\nDAdDb25uZWN0MQ0wCwYDVQQKDARUeXJvMQ8wDQYDVQQHDAZTeWRuZXkxDDAKBgNV\nBAgMA05TVzELMAkGA1UEBhMCQVUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\nAoIBAQClQzFzRk7sG8lR0GYbuoawzYX4QrO+gJU3My1k7chk1e+el9ZOX6ODKo62\nIfGnGSSnYVmOVR/GGtoxnBzk0r3Aw7CvWgrF2VtI1mHlY0fZJf9MWfMKz12UZVFq\nGJVwB5PYW8T/XuYNVomdf22n88eL9RqCHCN/PsVt6VKvJ2jTrz/lzR6eNSJMKWRM\nVXuHVaiT1LWw5dTjEsKJVALxPNvJS7pwo9af40ZVMIpoFjonZ126ewj+8Y6wcCmE\nS8G58wwTQHjNR5Cvxcx2R3v/XRfCPDom1iXkD/rN0sVHITz9BPeIV99Bjse7YX1m\nUanXBsVyowXDqc48AWP22n0nVyZ9AgMBAAEwDQYJKoZIhvcNAQELBQADggEBAA5f\nQdhTSH+j5Nft66/MXYqOWOBysv/keXksFgIOOXc7unKAVtnHxxAXtdf/wLCt1Q31\nwdnm374wUukCM9B5ZKjvSeXChM9ZpPZEQu575Zh5ZJAPTrTQw2xj9IxBnmPJ6/4d\nD6TvVbA1ixDCEjUv1nJCImnEimFfGehAzzwHjIevWd3owV3t09G7gtHCJgVQTPT5\nb32l/nFLVCr5Ra5oxBfkcjPK2v9AHCdfR7muKVi8chjqCBNZ6cxfe7J28UyNz/ZS\nBcPL/4VTvyp3Pi+XWU7u6PQAIOhj/9GJge7Qqa5rX8pY0HUU1+3s3flG1FJi2pZ4\nTz3JSZEaa1Uze86AJF4=\n-----END CERTIFICATE-----\n","lang":"txt"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After you've been whitelisted, build a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["prdRelease"]}," or equivalent variant of your App. Make sure you are using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TyroEnvProd"]}," when invoking ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TapToPaySdk.createInstance()"]}," for your build variant."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On your server, use your Tyro production credentials and Merchant ID (provided during webhook authorisation call)."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You're now ready to start taking real payments!"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"ios","__idx":3},"children":["iOS"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Obtain the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["config_prod.env"]}," file from Tyro. Add this to the root level of your App."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Make sure you are initialising ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TyroTapToPay"]}," with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".prod"]}," environment."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["On your server, use your Tyro production credentials and Merchant ID (provided during webhook authorisation call)."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You're now ready to start taking real payments!"]}]},"headings":[{"value":"Going live — SDK","id":"going-live--sdk","depth":1},{"value":"Prepare for production","id":"prepare-for-production","depth":2},{"value":"Android","id":"android","depth":3},{"value":"iOS","id":"ios","depth":3}],"frontmatter":{"title":"Going live — SDK","seo":{"title":"Going live — SDK"}},"lastModified":"2026-09-16T02:48:18.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/in-person-payments/tap-to-pay/going-live/sdk","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}