PayTabsSDK 6.0.21

PayTabsSDK 6.0.21

Maintained by Mohamed Adly.

PayTabsSDK 6.0.21

  • By
  • PayTabs

CocoaPods Carthage compatible License Platform

PayTabs SDK

PayTabs SDk makes the intergation with PayTabs payment gateway very easy by providing ready made payment screen that handles the card entry and billing & shipping info and complete the missing details.


  • The SDk offers a ready-made card payment screen.
  • Card Scanner for quick & easy entry of card details (iOS 13.0+).
  • Handle the missing required billing and shipping details.
  • Logo, colors, and fonts become easy to be customized.
  • Apple Pay supported.
  • The SDK size became very light because we removed all the third-party dependencies.
  • Supporting dark mode.


  • iOS 10.0+
  • Xcode 10.0+
  • Create a PayTabs merchant account relative to your country.



CocoaPods is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate PayTabs SDK into your Xcode project using CocoaPods, specify it in your Podfile:

pod 'PayTabsSDK', '~> 6.0.6-beta'


Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. To integrate PayTabs SDK into your Xcode project using Carthage, specify it in your Cartfile:

github "paytabscom/paytabs-ios-library-sample" ~> 6.0.6-beta


Follow the below steps:

  1. Download the framework.
  2. Navigate to General section of your Target.
  3. Drag PaymentSDK.framework file to Frameworks, Libraries, and Embedded Content section.


Before starting the integrations with PayTabs SDK you should check the Prerequisites below:

  • To give Card Scanner the access permission to the camera, you should add the following key & value to your app info.plist file.
<string>Write here your message to the user</string>


Import the PaymentSDK in your code

import PaymentSDK

Pay with Card

  1. Configure the billing & shipping info, the shipping info is optional
let billingDetails = PaymentSDKBillingDetails(name: "John Smith",
                                     	   email: "[email protected]",
                                     	   phone: "+2011111111",
                                     	   addressLine: "address",
                                     	   city: "Dubai",
                                           state: "Dubai",
                                           countryCode: "ae", // ISO alpha 2
                                           zip: "12345")
let shippingDetails = PaymentSDKShippingDetails(name: "John Smith",
                                     	   email: "[email protected]",
                                     	   phone: "+2011111111",
                                     	   addressLine: "address",
                                     	   city: "Dubai",
                                           state: "Dubai",
                                           countryCode: "ae", // ISO alpha 2
                                           zip: "12345")
  1. Create object of PaymentSDKConfiguration and fill it with your credentials and payment details.
let configuration = PaymentSDKConfiguration(profileID: "*your profile id*",
                                    serverKey: "*server key*",
                                    clientKey: "*client key*",
                                    cartID: "12345",
                                    currency: "AED",
                                    amount: 5.0,
                                    cartDescription: "Flowers",
                                    merchantCountryCode: "ae", // ISO alpha 2
                                    showBillingInfo: false,
                                    screenTitle: "Pay with Card",
                                    billingDetails: billingDetails)
  1. You are now ready to start payment and handle PaymentSDKDelegate
PaymentSDK.startCardPayment(on: self, 
							 configuration: configuration,
							 delegate: self)

Pay with Apple Pay

  1. Follow the guide Steps to configure Apple Pay to learn how to configure ApplePay with PayTabs.

  2. Do the steps 1 and 2 from Pay with Card although you can ignore Billing & Shipping details and Apple Pay will handle it, also you must pass the merchant name and merchant identifier.

let configuration = PaymentSDKConfiguration(profileID: "*your profile id*",
                                    serverKey: "*server key*",
                                    clientKey: "*client key*",
                                    cartID: "12345",
                                    currency: "AED",
                                    amount: 5.0,
                                    merchantName: "Flowers Store",
                                    cartDescription: "Flowers",
                                    merchantCountryCode: "ae", // ISO alpha 2
                                    merchantIdentifier: "",
                                    paymentNetworks: nil,
                                    forceShippingInfo: false,
                                    billingDetails: billingDetails)
  1. To force ApplePay validation on all user's billing info, pass forceApplePayValidation parameter in the configuration with true.

  2. Call startApplePayPayment to start payment

PaymentSDK.startApplePayPayment(on: self, 
							 configuration: configuration,
							 delegate: self)


Here you will receive the transaction details and errors.

extension ViewController: PaymentSDKDelegate {
    func paymentSDK(didFinishTransaction transactionDetails: PaymentSDKTransactionDetails?, error: Error?) {
        if let transactionDetails = transactionDetails {
            print("Response Code: " + (transactionDetails.paymentResult?.responseCode ?? ""))
            print("Result: " + (transactionDetails.paymentResult?.responseMessage ?? ""))
            print("Token: " + (transactionDetails.token ?? ""))
            print("Transaction Reference: " + (transactionDetails.transactionReference ?? ""))
            print("Transaction Time: " + (transactionDetails.paymentResult?.transactionTime ?? "" ))
        } else if let error = error {
            // Handle errors


To enable tokenisation, please follow the below instructions.

  1. Request token
configuration.tokeniseType = .userOptinoal // read more about the tokeniseType in the enums section 
configuration.tokenFormat = .hex32 // read more about the tokenFormat in the enums section  

After passing those parameters, you will receive token and transaction reference in the delegate, save them for future usage.

  1. Pass the token & transaction reference
configuration.token = token
configuration.transactionReference = transactionreference


Use the following guide to cusomize the colors, font, and logo by configuring the theme and pass it to the payment configuration.

UI guide


You can use the strings file below to copy the key and add it to your app localizable file and overwrite the value to yours.


Those enums will help you in customizing your configuration.

  • Tokenise types

The default type is none

public enum TokeniseType: Int, Codable {
    case none // tokenise is off
    case merchantMandatory // tokenise is forced
    case userMandatory // tokenise is forced as per user approval
    case userOptinoal // tokenise if optional as per user approval
  • Token formats

The default format is hex32

public enum TokenFormat: String {
    case none = "1"
    case hex32 = "2"
    case alphaNum20 = "3"
    case digit22 = "4"
    case digit16 = "5"
    case alphaNum32 = "6"

Demo application

Check our complete example.




Support | Terms of Use | Privacy Policy