Welcome to SwiftFin API

SwiftFin provides a comprehensive RESTful API for banking and financial operations. Our API enables you to perform account management, inter-bank transfers, intra-bank transfers, loan operations, and more.

Base URL

Sandbox Environment: https://demoapi.saasphereltd.com

Authentication

All API endpoints require authentication using Bearer tokens. SwiftFin supports two authentication methods:

Bearer Token Authentication

Include your API token in the Authorization header of every request:
Authorization: Bearer YOUR_API_TOKEN
Important: Do not include the word “Bearer” twice. Just paste your token after “Bearer ”.

Getting Your API Token

API credentials are provided by SwiftFin support only.Contact SwiftFin support to request API credentials for both sandbox (demo) and production environments.
1

Contact SwiftFin Support

Reach out to SwiftFin support at support@swiftfin.com
2

Request API Credentials

Specify whether you need sandbox (testing) or production credentials
3

Receive Your Token

SwiftFin support will provide your API token securely
4

Store Securely

Keep your API token safe and never expose it in client-side code

Security Schemes

SwiftFin API uses the following security schemes defined in our OpenAPI specification:
{
  "securitySchemes": {
    "default": {
      "type": "http",
      "scheme": "bearer",
      "description": "Retrieve sandbox token from developer dashboard"
    },
    "bearerAuth": {
      "type": "http",
      "scheme": "bearer",
      "bearerFormat": "JWT"
    }
  }
}

Response Format

All API responses follow a consistent JSON structure:

Successful Response

{
  "status": "00",
  "message": "Operation successful",
  "data": {
    // Response data object
  }
}

Error Response

{
  "status": "04",
  "error": "Invalid token",
  "message": "Authentication failed"
}

Status Codes

Status CodeMeaning
00Success - Request completed successfully
04General Error - Check error message for details
99Validation Error - Check errors array for details

HTTP Status Codes

CodeDescription
200OK - Request successful
400Bad Request - Invalid parameters
401Unauthorized - Authentication required
403Forbidden - Insufficient permissions
404Not Found - Resource doesn’t exist
500Server Error - Internal server error

Request Headers

Include these headers in all API requests:
Content-Type: application/json
Authorization: Bearer YOUR_API_TOKEN
Accept: application/json

Rate Limiting

API requests are rate-limited to ensure service stability. Sandbox environment allows 100 requests per minute.
If you exceed the rate limit, you’ll receive a 429 Too Many Requests response:
{
  "status": "99",
  "error": "Rate limit exceeded",
  "message": "Too many requests. Please try again later."
}

Environments

Sandbox Environment

  • Base URL: https://demoapi.saasphereltd.com
  • Purpose: Testing and development
  • Rate Limit: 100 requests/minute
  • Data: Test data only, no real transactions

Production Environment

  • Base URL: Contact support for production URL
  • Purpose: Live transactions
  • Rate Limit: Higher limits based on your plan
  • Data: Real financial data

API Endpoints Overview

SwiftFin API is organized into the following categories:

Utils

Bank lists, sectors, states, countries, and utility endpoints

Accounts

Account enquiry, profiles, transactions, and statement operations

Operations

Inter-bank transfers, intra-bank transfers, and payment operations

Loans

Loan booking, repayment schedules, disbursement, and reports

Customers

Customer creation, KYC, tier upgrades, and management

Beneficiaries

Add, list, and manage beneficiaries for transfers

Cards

Virtual card creation, management, and transactions

Savings

Fixed deposits and savings account operations

Data Formats

Date Format

All dates should be in YYYY-MM-DD format:
{
  "start_date": "2025-11-26",
  "end_date": "2025-12-26"
}

Amount Format

Amounts should be strings with decimal precision:
{
  "amount": "10000.00",
  "fee": "50.00"
}

Account Numbers

Account numbers are strings of 10 digits:
{
  "account_number": "1234567890"
}

Error Handling

Always check the status field in the response to determine success or failure:
if (response.status === "00") {
  // Success - process response.data
  console.log(response.message);
} else {
  // Error - handle response.error
  console.error(response.error);
}

Need Help?