Skip to content

Getting Started

Welcome to Islamic Open Finance™! This guide will help you get started with our Shariah-native financial infrastructure platform.

Overview

Islamic Open Finance™ provides a comprehensive API platform for building Islamic financial products. Our platform includes:

  • 29 Specialized Rails - Purpose-built APIs for contracts, KYC, compliance, AML, treasury, and more
  • Shariah Compliance - Built-in AAOIFI-compliant contract types and validation
  • Enterprise Security - SOC2-grade security with RBAC/ABAC authorization
  • Multi-Jurisdiction - Support for GCC, Southeast Asia, UK, and other markets

Prerequisites

Before you begin, you'll need:

  1. An Islamic Open Finance™ account
  2. An API key (available from your dashboard)
  3. Basic understanding of REST APIs

Step 1: Get Your API Key

  1. Log in to your IOF Dashboard
  2. Navigate to Settings > API Keys
  3. Click Create API Key
  4. Copy your API key and store it securely

WARNING

Never expose your API key in client-side code or commit it to version control.

Step 2: Install an SDK

Choose your preferred language and install the SDK:

bash
npm install @iof/sdk
bash
pnpm add @iof/sdk
bash
yarn add @iof/sdk
bash
pip install iof-sdk
bash
go get github.com/Islamic-Open-Finance/iof-sdk-go

Step 3: Initialize the Client

typescript
import { IOFClient } from "@iof/sdk";

const client = new IOFClient({
  apiKey: process.env.IOF_API_KEY,
  environment: "sandbox", // or 'production'
});
python
import os
from iof import IOFClient

client = IOFClient(
    api_key=os.environ["IOF_API_KEY"],
    environment="sandbox"  # or 'production'
)
go
import "github.com/Islamic-Open-Finance/iof-sdk-go"

client := iof.NewClient(
    iof.WithAPIKey(os.Getenv("IOF_API_KEY")),
    iof.WithEnvironment(iof.Sandbox),
)

Step 4: Make Your First API Call

Let's fetch the available contract types:

typescript
// List available contract types
const contractTypes = await client.metadata.contractTypes.list();

console.log("Available contract types:");
for (const type of contractTypes.data) {
  console.log(`- ${type.name}: ${type.description}`);
}
python
# List available contract types
contract_types = client.metadata.contract_types.list()

print("Available contract types:")
for ct in contract_types.data:
    print(f"- {ct.name}: {ct.description}")

Step 5: Create a Contract

Now let's create a simple Murabaha contract:

typescript
const contract = await client.contracts.create({
  type: "murabaha",
  jurisdiction: "SA", // Saudi Arabia
  parties: {
    financier: { entityId: "ent_financier_123" },
    customer: { entityId: "ent_customer_456" },
  },
  asset: {
    description: "Toyota Camry 2024",
    category: "vehicle",
    costPrice: { amount: 120000, currency: "SAR" },
    profitMargin: 0.08, // 8% profit margin
  },
  terms: {
    paymentSchedule: "monthly",
    numberOfInstallments: 60,
    gracePeriodDays: 30,
  },
});

console.log(`Contract created: ${contract.id}`);
console.log(`Status: ${contract.status}`);
console.log(`Monthly payment: ${contract.payment.monthlyAmount} SAR`);
python
contract = client.contracts.create(
    type="murabaha",
    jurisdiction="SA",  # Saudi Arabia
    parties={
        "financier": {"entity_id": "ent_financier_123"},
        "customer": {"entity_id": "ent_customer_456"},
    },
    asset={
        "description": "Toyota Camry 2024",
        "category": "vehicle",
        "cost_price": {"amount": 120000, "currency": "SAR"},
        "profit_margin": 0.08,  # 8% profit margin
    },
    terms={
        "payment_schedule": "monthly",
        "number_of_installments": 60,
        "grace_period_days": 30,
    }
)

print(f"Contract created: {contract.id}")
print(f"Status: {contract.status}")
print(f"Monthly payment: {contract.payment.monthly_amount} SAR")

Next Steps

Now that you've created your first contract, explore these topics:

Need Help?

Licensed under the Apache License 2.0