> For the complete documentation index, see [llms.txt](https://docs.foloosi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.foloosi.com/mobile-sdk-integrations/ios-sdk/initiate-payment.md).

# Initiate Payment

This Section briefs about how to initiate a payment !

Foloosi's iOS SDK provides easy payment collections.

You can use it on the front-end to open payment page or use the actual flow to create Payment Token.

###

### Step - 1 - Add Dependency

```
pod 'Foloosi-iOS-SDK', '~> 1.5.1'
pod update
```

### Step - 2 - Import SDK

```
import FoloosiSdk
```

### Step - 3 - Initialize SDK

To initialize the SDK - Create InitData Object with the merchant key you retrieved from foloosi merchant panel. If you do not have a merchant key create a new one and customize the checkout page to your liking.

{% code lineNumbers="true" %}

```java
let initData = InitData()
initData.merchantKey = "merchantKey" //"Your Unique Merchant Key"
initData.customColor = "costomColor"  // It must be valid 6 digit hexadecimal color to make payment page loading color as app color. 
FoloosiPay.initSDK(initData: initData, withDelegate: self)
```

{% endcode %}

**Important Note**&#x20;

You can Follow any one of the methods below to initiate payment widget

### a. Make Payment with order object

#### &#x20;Create orderData Object with necessary inputs

You can create the order data or payment input with our OrderData Model class. Here you need to provide order id, title, description, currency code, order amount and customer details like name, email and mobile number.

{% code lineNumbers="true" %}

```swift
let orderData = OrderData()
orderData.orderTitle = "" // Any Title
orderData.currencyCode = ""  // 3 digit currency code like "AED"
orderData.orderAmount = 0  // in double format ##,###.##
orderData.orderId = ""  // unique order id. 
orderData.orderDescription = ""  // any description.
orderData.postalCode = "00000" 
orderData.state = "Dubai"
orderData.country = "UAE"
orderData.customerUniqueReference = ""  //Customer Unique Reference value should be email/mobile no/uniqueCustomer id from your DB 
let customer = Customer()
customer.customerEmail = "email@gmail.com"
customer.customerName = "name"
customer.customerCity = "City"
customer.customerAddress = "Address"
customer.customerPhoneNumber = "1234567890"
orderData.customer = customer
```

{% endcode %}

#### \*Important Note\*

orderData.customerUniqueReference = "Unique value"

// Unique value must be customer id/email/mobile number for saved card feature.&#x20;

Now make payment with order data you created above.

```
 FoloosiPay.makePayment(orderData);
```

### &#x20;b.Make Payment with reference token

#### Initialize api <a href="#initialize-api" id="initialize-api"></a>

## Get Reference Token

<mark style="color:green;">`POST`</mark> `https://api.foloosi.com/aggregatorapi/web/initialize-setup`

#### Headers

| Name                                          | Type   | Description                              |
| --------------------------------------------- | ------ | ---------------------------------------- |
| secret\_key<mark style="color:red;">\*</mark> | String | Your Merchant Key get from Foloosi Panel |

#### Request Body

| Name                                                  | Type              | Description                               |
| ----------------------------------------------------- | ----------------- | ----------------------------------------- |
| source<mark style="color:red;">\*</mark>              | String (ios\_sdk) | For apple pay "ios\_sdk" should be passed |
| transaction\_amount<mark style="color:red;">\*</mark> | Double            |                                           |
| currency<mark style="color:red;">\*</mark>            | String            |                                           |
| customer\_mobile<mark style="color:red;">\*</mark>    | String            |                                           |
| customer\_email<mark style="color:red;">\*</mark>     | String            |                                           |
| customer\_name<mark style="color:red;">\*</mark>      | String            |                                           |
| customer\_city                                        | String            |                                           |
| customer\_address                                     | String            |                                           |
| billing\_state                                        | String            |                                           |
| billing\_country                                      | String            |                                           |
| billing\_postal\_code                                 | String            |                                           |
| customer\_unique\_identifier                          | String            |                                           |
| description                                           | String            | Product or order information              |
| optional1                                             | String            | You can pass additional fields            |
| optional2                                             | String            | You can pass additional fields            |
| optional3                                             | String            | You can pass additional fields            |

{% tabs %}
{% tab title="200: OK success response" %}

```javascript
{
 "message": "Application setup successfully",
 "data": {
   "reference_token":
   "U0sjdGVzdF8kMnkkMTAkM21LRi0xZGliVDhldTV4NHlZSm9tZXZobnZxWTNEVnZmay1MdHNndTNFenNBTDU0clhWYkccVE4jRkxTQVBJNWM3Njk2ZDkwOWIzNxxSVCMkMnkkMTAkQXZ4ay9wdjlpTFlYLzRSZ2FjSkxpZWhHb2o0U0wvTFpZNXAyVjRGOVFycWNQZ2lHQ3VEZ08="
  }
 }
```

{% endtab %}

{% tab title="401: Unauthorized Invalid Api mode" %}

```javascript
{
    "message": "Invalid Integration settings! Kindly check both foloosi merchant application settings and your integration keys"
}
```

{% endtab %}

{% tab title="401: Unauthorized Invalid Header response" %}

```javascript
{
    "message": "Invalid secret key"
}
```

{% endtab %}

{% tab title="404: Not Found Invalid request type" %}

```javascript
{
    "message": "No routes found"
}
```

{% endtab %}
{% endtabs %}

Make the payment with the order  reference token

```java
var referenceToken = "Your Reference Token"
FoloosiPay.makePaymentWithReferenceToken(referenceToken)
```

#### Api Specification <a href="#api-specification" id="api-specification"></a>

* Request call must be on **POST.**
* This Api will be used to confirm the feature you are about to Use.
* For **Saved Card Payment** Method, You need to pass your customer unique details like email,etc. to **customer\_unique\_identifier**.

**Post Request Body**

​

|                              |                                                                                                                                              |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| customer\_unique\_identifier | <ol><li>This is mandatory when you are using saved card payment.</li><li>This data must be Unique like email id,customer id, etc.,</li></ol> |

### Support

Visit <https://www.foloosi.com> for support requests or email to <tech@foloosi.com>.

## Developed by

Foloosi Technologies Pvt Ltd.

## License

Copyrights (c) 2025 Foloosi

#### &#x20;<a href="#api-specification" id="api-specification"></a>
