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:
- An Islamic Open Finance™ account
- An API key (available from your dashboard)
- Basic understanding of REST APIs
Step 1: Get Your API Key
- Log in to your IOF Dashboard
- Navigate to Settings > API Keys
- Click Create API Key
- 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/sdkbash
pnpm add @iof/sdkbash
yarn add @iof/sdkbash
pip install iof-sdkbash
go get github.com/Islamic-Open-Finance/iof-sdk-goStep 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:
- Quick Start - Build a complete integration in 15 minutes
- Architecture - Understand the platform architecture
- Islamic Finance Primer - Learn about Islamic contract types
- API Reference - Explore all available endpoints
Need Help?
- Check out our GitHub Discussions
- Report issues on GitHub
- See the Changelog for latest updates