The SDK is designed to work with iOS 10 and up. If you would like to install the SDK manually instead of using CocoaPods, see the instructions here.

Via CocoaPods

Put this in your Podfile and then run pod install:

source ''
source ''

target :"<your-app-target>" do
    pod 'payworks', '2.46.0'

Additional Steps

For Bluetooth devices like Miura readers , to connect as an external accessory and be able to receive messages while the app is in the background, add additional entries to your Info.plist

  • Key: Supported external accessory protocols (UISupportedExternalAccessoryProtocols), Value: com.miura.shuttle (for Miura readers)
  • Key: Required background modes (UIBackgroundModes), Value: App communicates with an accessory (external-accessory)

  • Then, import the framework in your header file:
    #import <mpos_core/mpos_extended.h>
  • And that's it - you are good to go to implement your first transaction workflow!

The SDK is designed to work with Android 5 and up. If you would like to install the SDK manually instead of using our gradle repository, see the instructions here.

Via Gradle

  • Add our repository to your project's build.gradle:
allprojects {
    repositories {
        maven {
            url ""
  • For version 2.45.0 and above you will need to make sure the app support Java 8 features by setting the compatibility levels:


    compileOptions {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
  • Add the following exclusion rules to your module's build.gradle (inside the android section):
packagingOptions {
    exclude 'META-INF/*'
    exclude 'LICENSE.txt'
    exclude 'asm-license.txt'
  • Add the libraries to the dependencies section of your module's build.gradle:
dependencies {
    implementation ''

    // Add these three dependencies if you want to use a Miura card reader
    implementation ''
    implementation ''
    implementation ''


If you wish to use ProGuard with your application make sure to add the necessary rules to your ProGuard configuration.

  • Make sure to update your AndroidManifest.xml to enable a larger heap size by setting android:largeHeap="true". This is required to accommodate for situations where an update of the terminals is required and bigger chunks of data are requested and transferred.