FATCA : Foreign Accounts Tax Compliance Act

This is an Act enacted by US Government in March 2010 and it targets Tax non-compliance by US tax payers with foreign accounts.

It focuses on reporting by U.S. tax payers about certain foreign financial accounts, off-shore assets and about financial accounts held by U.S. taxpayers or foreign entities in which U.S. taxpayers hold a substantial ownership interest.

As countries become signatories to FATCA, the financial institutions in the country is obligated to exchange information about US taxpayers’ accounts held by them to their central agency( Tax authorities) who in turn will provide them to IRS, who is the Tax collecting Agency for US Government.

eSolve has developed an application in PYTHON to cater the requirement of FATCA. It is an online interactive application which seamlessly integrates with Leading Banking Software application(s) and obtains the FATCA classification of a Customer by referring one’s id to a common customer database which contains all required details including the id referred. Depending on the response received from the common customer database, a decision is enforced in Leading Banking Software application.

This write up explains the nuances of the development with Introduction, environment setup and execution of Python which is an object oriented programming language.

Why python and its advantages:

Python is a highly interpreted, interactive, object-oriented programming language. It uses English keywords frequently whereas other languages use punctuations. It has fewer syntax constructions than other languages.
Python is processed at runtime by the interpreter. The Python programs do not need compilation before executing it. This is similar to PERL and PHP. From Python prompt developer can interact with the interpreter directly to write programs. Python supports Object-Oriented style or technique of programming that encapsulates code within objects.
Environment set up:

Downloading and installing python is as simple as any other software. Programs and other executable files can be in many directories. To provide a search path that lists the directories and other executables PATH variable needs to be setup.

Python Environment variables:

Apart from PATH variable some of the important environment variables, which can be recognized by Python, are

PYTHONPATH: This variable tells python interpreter where to locate the module files imported in to program.

PYTHONSTARTUP: It contains path of initialization file, containing python source code that is executed every time when interpreter is started.

Execution of Python:

There are three different ways to start Python

1. Interactive Interpreter:
Entering “python” from command line interpreter or shell window, python prompt gets activated. Through python prompt developer can start coding in the interactive interpreter.

2. Script from Command Line:
A Python script can be executed at command line by invoking the interpreter from application.
E.g. MyFirstProg.py a python script can be executed as
a. $python MyFirstProg.py (from unix / linux promt)
b. C:>python MyFirstProg.py ( from Windows command line)

3. Integrated Development Environment:
Python can be executed from a Graphical User Interface (GUI) environment as well, if GUI application on the system that supports Python.

FATCA compliance Integration with Leading Banking Software:

Business Requirement:

To check FATCA compliance of the customer while processing Leading Banking Software transaction. Decision on the transactions taken based on the alerts raised.

Current Structure:

Main customer database is maintained in a separate system called CRM (Customer Relationship Management system). CRM maintains FATCA details of the customers and interfaced with IRS for reports. Customers in Leading Banking Software and CRM are linked through a unique ID. It provides web service to Leading Banking Software to get and post details of the customer.


Version routine to execute the Python scripts which calls the web service with required data and passes the response to the version routine. Based on the response override or error is generated in Leading Banking Software.

Usage of Python scripts:

Python scripts accept the required data as parameter from the version routine. With the parameter, it forms the request and the appropriate web service is called. Response is captured and sent back to the version routine.