# Structure of the Initialization Object&#x20;

{% hint style="info" %}
**Helpful tip:** always refer back to this section for a proper list of all the parameters you can provide when initializing **Lamba** object.
{% endhint %}

## Structure of the Init. object

The table below summarizes the different parameters that can be supplied when creating a new Lamba instance:

<table><thead><tr><th width="180">Property</th><th width="208">Type</th><th>Meaning</th><th>Required</th></tr></thead><tbody><tr><td>title</td><td>String</td><td>The name of your product, website or app</td><td>No</td></tr><tr><td>icon</td><td>String</td><td>The icon url of your product's logo. Helpful for white-labeling or branding the Lamba UI to your own taste.</td><td>No</td></tr><tr><td>theme</td><td>String</td><td>One of either <code>light</code> or <code>dark</code> should be selected to toggle between the light and dark modes of the Lamba UI. It's important to note that when you switch to either light or dark theme, you should ideally update the icon to an image that complements the chosen theme variation.</td><td>No</td></tr><tr><td>appId</td><td>String</td><td>The id of the app you created from your Lamba dashboard</td><td>Yes</td></tr><tr><td>customerId</td><td>String</td><td><p>The <code>Customer ID</code> of the user you added to your app (e.g <code>cus_x1673</code>). Do you remember what we discussed in the section <code>Creating Your First App</code>? Please do check it out.</p><p>The reason for utilizing your own product/model IDs for each user is to avoid the need to add a new column or record in your current database for tracking users newly created in your Lamba app. Consequently, the userId from your database can be employed to look up the corresponding user (i.e., customerId) in your Lamba app.</p></td><td>Yes</td></tr><tr><td>enabledServices</td><td>Array or Object</td><td>Helps you specify the kind of services you'd want to display in the Lamba UI. All services are shown by default, if omitted or set to an empty array</td><td>No</td></tr><tr><td>...</td><td><pre class="language-javascript"><code class="lang-javascript"><strong>['low_mail']
</strong></code></pre></td><td>To enable only email services</td><td></td></tr><tr><td>...</td><td><pre class="language-javascript"><code class="lang-javascript">{low_mail: ["gmail","sendgrid"],low_fi:["stripe","paystack"],low_meet:["google_meet","microsoft_teams"]}
</code></pre></td><td>To enable specific services and their contained products</td><td></td></tr><tr><td>lowFiConfig</td><td><p>Object</p><p><br>e.g</p><pre class="language-javascript"><code class="lang-javascript">{
   orderId: String, // your unique orderId (in your DB) for this payment transaction (REQUIRED)
   paystack: { // paystack gateway SDK initialization config/data (OPTIONAL)
     amount: 100, // set the actual amount value here. Lamba will auto multiply it by 100 to convert to the lowest currency unit
     currency: 'NGN', // Use GHS for Ghana Cedis or USD for US Dollars
     email: "test@emaildomain.com",
   }, 
   flutterwave: { // (OPTIONAL)
     amount: 1500,
     currency: "NGN",
     payment_options: "card, ussd",
     customer: {
       email: "bose@sellmart.com",
       phone_number: "08102909304",
       name: "Bose Moday",
     },
   },
   budpay: { // (OPTIONAL)
     email: "test@emaildomain.com",
     amount: "200", //amount must be a string!
     currency: 'NGN', // Use GHS for Ghana Cedis or USD for US Dollars
   },
   seerbit: { // (OPTIONAL)
     email: "test@emaildomain.com",
     currency: "NGN",
     description: "testing...",
     amount: "150", //amount must be a string!
   },
   stripe: { // processes only payment intents at the moment (OPTIONAL)
      amount: 150, // $150. will be automatically converted to cents by Lamba
      currency: "usd",
      automatic_payment_methods: {
         enabled: true,
         allow_redirects: "never"
      },
      receipt_email: "test-email@domain.com", // refer to https://stripe.com/docs/api/payment_intents/create
      // split payment feature
      on_behalf_of: "{{CONNECTED_ACCOUNT_ID}}", // the subaccount id
      transfer_data: {
          destination: "{{CONNECTED_ACCOUNT_ID}}", // the subaccount id
          amount: 32, // amount the ticket seller should receive. // $32. will be automatically converted to cents by lamba
      }
  },
}

// PLEASE TAKE NOTE OF THE FOLLOWING:

<strong>// \* for each payment config in the lowFiConfig, do not specify a callback </strong>// \* function since it will be overriden with the inbuilt Lamba callback function.
// \* Same goes for the onclose, onClose or close functions.
// \*
// \* `productId` in seerbit will be replaced with the `orderId` by the Lamba UI
// \*
// \* `last_name` in budpay will be replaced with the `orderId` by the Lamba UI
// \*
// \* public key for each payment gateway will be automatically injected & will override
// \* existing ones
// \*
// \* transaction references will be automatically injected & will override
// \* existing ones
// \*
// \* `ui_mode` in stripe will be overriden with `embedded` </code></pre></td><td>Helps you specify the payment structure of each payment gateway in the <code>low\_fi</code> service</td><td>No (unless <code>low\_fi</code> service is enabled</td></tr><tr><td>usageCapabilities</td><td><p>Array of String </p><p></p><p>(e.g one of <strong>\['connect']</strong> and <strong>\['connect','use']</strong>)</p></td><td>Specifies if the customerId is limited to only connecting a service, or if they can both connect and utilize the services they have connected.</td><td>Yes (at least one of <code>connect</code> and <code>use</code> must be provided)</td></tr></tbody></table>

**Available services and their corresponding products:**

| Service     | Available Products                                                                                                                                                          |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| low\_fi     | "stripe" \| "paystack" \| "seerbit" \| "flutterwave" \| "budpay"                                                                                                            |
| low\_mail   | "gmail" \| "sendgrid" \| "mailgun" \| "postmark" \| "custom"                                                                                                                |
| low\_sms    | "twilio" \| "infobip" \| "clickatell" \| "africastalking"                                                                                                                   |
| low\_meet   | "zoom" \| "google\_meet" \| "microsoft\_teams" \| "calendly" \| "webex"                                                                                                     |
| low\_social | "facebook" \| "linkedin" \| "instagram" \| "x" \| "reddit" \| "tiktok" \| "snapchat" \| "pinterest" \| "behance" \| "dribble" \| "telegram" \| "youtube" \| "discord" \| "" |
| low\_cms    | "medium" \| "hashnode" \| "devto"                                                                                                                                           |
| low\_ai     | "chatgpt"                                                                                                                                                                   |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.lambahq.com/documentation/lamba-ui-js-client/structure-of-the-initialization-object.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
