SDKs overview

Finicity, an open banking platform owned by Mastercard, offers a suite of APIs designed to enable financial data access, payment initiation, and credit decisioning services. To simplify developer interaction with these APIs, Finicity provides official Software Development Kits (SDKs) for multiple programming languages. These SDKs are designed to abstract the complexities of direct HTTP requests, authentication, and response parsing, allowing developers to focus on integrating Finicity's functionalities into their applications with fewer lines of code.

The Finicity developer experience emphasizes a sandbox environment for testing and a comprehensive API documentation portal. SDKs typically handle common tasks such as API key management, token refreshing, and error handling, adhering to best practices for secure and efficient API communication. While Finicity primarily offers RESTful APIs for its core products, including data aggregation and payment initiation, the SDKs provide a language-specific interface to these operations.

Developers integrating with Finicity can utilize these SDKs to access a range of financial data points, including transaction history, account balances, and loan details, subject to consumer consent. The SDKs also facilitate workflows for initiating payments and verifying accounts, which are critical for applications in lending, personal financial management, and fraud detection. The approach to API integration for open banking platforms often involves adherence to security standards such as OAuth 2.0 for authorization, a protocol widely adopted across the industry, as detailed in the OAuth 2.0 specification.

Official SDKs by language

Finicity maintains official SDKs for popular programming languages to streamline integration. These SDKs are developed and supported directly by Finicity, ensuring compatibility with the latest API versions and features. The table below outlines the key official SDKs available, along with their respective package managers and typical installation commands.

Language Package Name Install Command Maturity
Python finicity-python-sdk pip install finicity-python-sdk Stable
Java finicity-java-sdk Maven/Gradle dependency Stable
Node.js finicity-node-sdk npm install finicity-node-sdk Stable
Ruby finicity-ruby-sdk gem install finicity-ruby-sdk Stable
PHP finicity-php-sdk composer require finicity/php-sdk Stable

For detailed information on each SDK, including specific versioning, method signatures, and advanced configuration options, developers should refer to the official Finicity documentation.

Installation

Installing Finicity's official SDKs typically follows standard practices for each respective language's package management system. Below are general installation guidelines for the most commonly used SDKs. Specific version numbers and prerequisites may vary, so always consult the Finicity API documentation for the most up-to-date instructions.

Python SDK

To install the Python SDK, use pip, the Python package installer:

pip install finicity-python-sdk

It is recommended to use a virtual environment to manage dependencies for your project.

Java SDK

For Java projects, you can add the Finicity Java SDK as a dependency using Maven or Gradle. For Maven, add the following to your pom.xml:

<dependencies>
    <dependency>
        <groupId>com.finicity</groupId>
        <artifactId>finicity-java-sdk</artifactId>
        <version>1.x.x</version> <!-- Replace with the latest version -->
    </dependency>
</dependencies>

For Gradle, add to your build.gradle:

dependencies {
    implementation 'com.finicity:finicity-java-sdk:1.x.x' // Replace with the latest version
}

Node.js SDK

Install the Node.js SDK using npm or yarn:

npm install finicity-node-sdk
# or
yarn add finicity-node-sdk

Ruby SDK

Add the Finicity Ruby SDK to your Gemfile:

gem 'finicity-ruby-sdk'

Then run bundle install from your terminal.

PHP SDK

Install the PHP SDK using Composer:

composer require finicity/php-sdk

Quickstart example

This Python example demonstrates how to initialize the Finicity SDK and make a basic API call to retrieve a list of institutions. Before running, ensure you have your Finicity API credentials (App Key, App ID, and Partner Secret) configured, ideally through environment variables or a secure configuration management system.

import os
from finicity_python_sdk import FinicityClient
from finicity_python_sdk.exceptions import FinicityException

# Configure API credentials from environment variables
FINICITY_APP_KEY = os.getenv('FINICITY_APP_KEY')
FINICITY_APP_ID = os.getenv('FINICITY_APP_ID')
FINICITY_PARTNER_SECRET = os.getenv('FINICITY_PARTNER_SECRET')

if not all([FINICITY_APP_KEY, FINICITY_APP_ID, FINICITY_PARTNER_SECRET]):
    print("Error: Finicity API credentials not set in environment variables.")
    exit(1)

try:
    # Initialize the Finicity client
    client = FinicityClient(
        app_key=FINICITY_APP_KEY,
        app_id=FINICITY_APP_ID,
        partner_secret=FINICITY_PARTNER_SECRET,
        # For sandbox environment, use FinicityClient.SANDBOX_BASE_URL
        # For production, use FinicityClient.PRODUCTION_BASE_URL
        base_url="https://api.finicity.com"
    )

    # Generate an access token (required for most API calls)
    access_token = client.authenticate()
    print(f"Successfully authenticated. Access Token: {access_token[:10]}...")

    # Example: List institutions
    # The 'search' parameter can be used to filter institutions (e.g., 'Bank of America')
    # The 'country' parameter can be used to specify the country (e.g., 'US', 'CA')
    institutions_response = client.institutions.get_all_institutions(
        search=None, 
        country='US'
    )

    print("\n--- Top 5 Institutions ---")
    if institutions_response and institutions_response.institutions:
        for i, institution in enumerate(institutions_response.institutions[:5]):
            print(f"ID: {institution.id}, Name: {institution.name}, URL: {institution.url}")
    else:
        print("No institutions found.")

except FinicityException as e:
    print(f"Finicity API Error: {e.message} (Status Code: {e.status_code})")
except Exception as e:
    print(f"An unexpected error occurred: {e}")

This example demonstrates basic authentication and fetching a list of institutions. For more complex operations, such as adding customers, retrieving account details, or initiating payments, developers would use other methods available within the client object, as detailed in the Finicity API reference.

Community libraries

While Finicity provides official SDKs, the broader developer community may also contribute open-source libraries, wrappers, or tools that interact with the Finicity APIs. These community-driven projects can sometimes offer alternative approaches, support for less common languages, or specialized functionalities not found in the official SDKs. However, it is important to note that community libraries may not always be officially supported or maintained by Finicity and might not guarantee the latest features, security updates, or compatibility with new API versions.

Developers considering community libraries should evaluate their active maintenance, community support, and alignment with the official Finicity API specifications. Resources like GitHub and other open-source repositories are common places to discover such contributions. When using third-party libraries, always review the source code and consider the implications for security and reliability. Mastercard itself, as the parent company of Finicity, also supports various developer initiatives, including Mastercard Developer SDKs, which may offer broader financial service integrations beyond Finicity's specific open banking focus.

For critical applications, relying on the official Finicity SDKs and direct API calls is generally recommended to ensure full support and adherence to Finicity's operational standards.