Skip to main content
PFM Stack provides an Embedded Next.js SDK that allows you to integrate a Personal Finance Management experience into your application with minimal effort. With just a few lines of code, you can enable users to aggregate all their financial data in one place using the Account Aggregator framework.

Step-by-Step Integration

STEP 1: Initialization of SDK API

When a consumer wants to open PFM, your backend service must trigger the initialization of SDK API. Follow the SDK Init API guide to integrate with the API in your backend server.

STEP 2: Adding Next.js SDK as dependency

Add the following dependency to your package.json. Run npm install to install the dependency. If you are using any other dependency management library, refer to that library documentation to add below npm package as dependency.
equal-nextjs-pfm-sdk: ^1.0.0

Step 3: Launch PFM SDK

Once the Initialize API is invoked and you have session_token, the PFM SDK can be opened from client using the below procedure: In your Component (Or any of your Next.js Component) use the below snippet to launch Equal SDK.
import React, { useState, useRef } from 'react';
import PFMSDK from 'equal-nextjs-pfm-sdk/src/pfm_sdk';

export default function MyComponent() {
  const [token, setToken] = useState<string | null>(null);
  const pfmInstanceRef = useRef<any>(null);
  const environment = ''; // Change to 'production' for production

  const fetchToken = async () => {
    fetch('https://<your_backend_api_that_calls_sdk_init_api_and_returns_token>', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify('<API Body as per your API contracts>')
    })
    .then(response => response.json())
    .then(data => {
      setToken(data.token);
      pfmInstanceRef.current = new PFMSDK(data.token, environment);
    })
    .catch(error => console.error('Error fetching token:', error));
  };

  const openPFM = () => {
    if (pfmInstanceRef.current) {
      pfmInstanceRef.current.openPFM(
        (error: any) => console.error('PFM SDK Error:', error),
        () => console.log('PFM SDK Closed')
      );
    } else {
      console.error('PFM SDK is not initialized!');
    }
  };
}

Important Code for integration

// TO Initialize the SDK and get instance of it
pfmInstanceRef.current = new PFMSDK(token, environment);

// Launch SDK and handle onClose & onError callbacks.
pfmInstanceRef.current.openPFM(
  (error: any) => console.error('PFM SDK Error:', error), // onError(error: any) - Invoked when any error occurs.
  (reason: string) => console.log('PFM SDK Closed') // onClose() - Invokes when SDK is closed by user.
);

SDK Parameters

ParameterMandatory/OptionalDescription
tokenMandatoryGenerated and shared in response from Step 1 - Response of SDK Init API
envoptionalsandbox is Default. Pass “production” to point to production - Ensure this variable is environment specific.

SDK Callback Methods

The openPFM method of PFMSDK accepts the following callbacks methods: onError: this is Invoked by SDK when
  • There are failures in opening the UI
  • Session Timeout.
onClosed: Invoked when the SDK is closed by the user.