NAV undefined
undefined
perl cSharp python vb java

Introduction

Lyons Commercial Data XML-based Web Services are hosted in a secure and fully redundant data center to provide near real-time account verification and validation of important transaction processing information.

Applications accessing Lyons Commercial Data web services utilize Representational State Transfer (REST) to process information requests to and from the Lyons Commercial Data servers via https:// for SSL encryption

General Considerations

Please check the individual language sections for setup instructions, libraries, sample projects and general assumptions for the code snippets that follow.

/**
 *    The code snippets below assume the use of spring-boot and maven as demonstrated
 *    in the example projects for each service. (An example project can be downloaded here )
 *    The snippets also assume a client library is generated out of the service WSDL.
 *    The example projects use the wsimport goal of maven's jaxws-maven-plugin to do this. 
 *    The WSDL itself is stored in the src/main/resources subfolder.
 *
 *    Links to the example projects are provided in the General Considerations section of each service.
 *    Every lyons-*-project.zip file contains a "read me" file on how to build and run the project.
 *    
 *    The snippet below is also from an example project and illustrates how create a concrete implementation
 *    of the wsimport generated service interface that is then used for all method calls.
 *    The values for the @Value("...") annotations come from an external properties file
 *    (src/main/external-resources/application.properties) that is copied to the target subfolder:
 */
public interface LogonProperties {
    int getCompanyId();
    String getUserName();
    String getPassword();
}

@SpringBootApplication
public class App implements LogonProperties {

    @Value("${company.id}")
    private int companyId;
    @Value("${company.user.name}")
    private String userName;
    @Value("${company.user.password}")
    private String password;

    @Override
    public int getCompanyId() {
        return companyId;
    }
    @Override
    public String getUserName() {
        return userName;
    }
    @Override
    public String getPassword() {
        return password;
    }

    private static ABAServiceWCF createABAServiceWCF(String singleWsdlUrl) throws StopProcesingException {
        ABAServiceWCF wcf = null;
        try {
            wcf = new ABAServiceWCF(new URL(singleWsdlUrl));
        } catch (Exception e) {
            log.error("Error creating the ABAServiceWCF: {}", e.getMessage());
            log.error("Exception:", e);
            throw new StopProcesingException();
        }
        return wcf;
    }

    @Bean
    private static IABAService prepareService(@Value("${service.single.wsdl.url}") String singleWsdlUrl)
            throws StopProcesingException {
        ABAServiceWCF wcf = createABAServiceWCF(singleWsdlUrl);
        IABAService svc = null;
        try {
            svc = wcf.getBasicHttpBindingIABAService();
            Assert.notNull(svc, "The returned IABAService is null");
        } catch (RuntimeException e) {
            System.out.println("Error obtaining the basic HTTP binding to IABAService: ".concat(e.getMessage()));
            e.printStackTrace();
            throw new StopProcesingException();
        }
        return svc;
    }

}

Authentication

Each web service requires authentication, providing a secure connection between the client and Lyons Commercial Data servers. A company ID, username and password are required to access Lyons Commercial Data web services.

To receive a company ID, username and password, please complete the trial request form or contact an account representative.

Logon

my $url = "https://lyonsreg.com/webservices/aba/ABAServiceWCF.svc?singleWsdl";
my @params = (  SOAP::Data->name(companyId => 0000),
                SOAP::Data->name(userName  => 'loginName'),
                SOAP::Data->name(password  => 'pwd'));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf '%IABAService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->Logon(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/aba/ABAServiceWCF.svc");
try{
    using (ChannelFactory<IABAService> fact = new ChannelFactory<IABAService>(myBinding, myEndpoint))
    {
        IABAService abaSvc = fact.CreateChannel();
        string token = abaSvc.Logon(companyId, userID, password);
    }
}
catch(Exception ex){ }
    def _logon(companyId,username,password):
        """First call logon to get your token"""
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <Logon xmlns="https://lyonsreg.com/webservices/aba/ABAServiceWCF.svc">
                    <companyId>%s</companyId>
                    <userName>%s</userName>
                    <password>%s</password>
                </Logon>
            </soap:Body>
        </soap:Envelope>""" % (companyId,username,password)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/aba/ABAServiceWCF.svc",in_xml)
        doc=xml.dom.minidom.parseString(result_xml)
        response=doc.getElementsByTagName('LogonResponse')[0].firstChild.data
        return response

        if __name__=='__main__':
        #Quick Tests
        token=_logon('yourcompanyid','username','pw')
'WSDL location
Private wsdlLOC As String

Private Sub Class_Initialize()
On Error GoTo errStop
    wsdlLOC = "https://lyonsreg.com/webservices/aba/ABAService.svc?wsdl"
exit_me:
    Exit Sub
errStop:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "ABAService::Initialize", errDesc
    Resume exit_me
End Sub
'''''''''''''''''''''''''''''''''
'Logon - Logon to the web service.
Public Function Logon(ByVal companyID As Long, ByVal userName As String, ByVal passWord As String) As String
    On Error GoTo SoapError
    Dim ws As New MSSOAPLib30.SoapClient30
    ws.MSSoapInit wsdlLOC
    Logon = ws.Logon(companyID, userName, passWord)
    Set ws = Nothing
exit_me:
    Exit Function
SoapError:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "ABAService::Logon", errDesc
    Resume exit_me
End Function

'''''''''''''''''''''''''''''''
'Go button clicked
Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
  Dim service As ABAService.ABAService
  Try
      'Hour Glass.
      Me.Cursor = Cursors.WaitCursor
      'Create a new service object.
      service = New ABAService.ABAService
      'Get a logon token - is good for 20 minutes.
      Dim token As String = service.Logon(tbCompanyID.Text.Trim, tbUserName.Text.Trim, tbPassword.Text.Trim)
      'Get the financial institutions.
      Dim xml As String = service.Logon(companyId, userName, password)
      If xml.Trim <> "" Then
          ProcessXML(xml)
      End If
  Catch ex As Exception
      'Something failed!      
      comboBanks.Items.Clear()
  Finally
      'Restore the cursor.
      Me.Cursor = Cursors.Default
  End Try

End Sub

Private Sub ProcessXML(ByVal xml As String)
  Try
      comboBanks.Items.Clear()
      Dim xmlDoc As New XmlDocument
      xmlDoc.LoadXml(xml)
      Dim nodeList As XmlNodeList = xmlDoc.SelectNodes("//logon")
      Dim node As XmlNode
      For Each node In nodeList
          comboBanks.Items.Add(node.InnerText)
      Next
      comboBanks.SelectedIndex = 0
      comboBanks.Enabled = True
      btnClear.Enabled = True
  Catch ex As Exception

  End Try
End Sub
/**
 *    The IABAService is generated in the same way as described in the General Considerations section.
 *
 *    The method handleFault extracts the actual error message returned by the service 
 *    in case a ServerSOAPFaultException is thrown.
 *
 */
public abstract class AbstractAbaServiceCall implements AbaServiceCall {

    protected String login(IABAService svc, LogonProperties loginProps) throws StopProcesingException {
        String token = null;
        try {
            LogonResult resObj = svc.logon(loginProps.getCompanyId(), loginProps.getUserName(), loginProps.getPassword());
            Assert.notNull(resObj, "The returned LogonResult is null");
            token = resObj.getToken();
            Assert.notNull(token, "The returned token is null");
        } catch (ServerSOAPFaultException ex) {
            handleFault("Error logging on to IABAService", ex, true);
        } catch (Exception e) {
            handleError("Error communicating to IABAService", e.getMessage(), true);
        }
        return token;
    }

    @SuppressWarnings("rawtypes")
    protected void handleFault(String msg, ServerSOAPFaultException ex, boolean rethrow) throws StopProcesingException {
        String res = null;
        SOAPFault fault = ex.getFault();
        if (fault != null) {
            Detail det = fault.getDetail();
            if (det != null) {
                Iterator resItr = det.getDetailEntries();
                if (resItr != null && resItr.hasNext()) {
                    DetailEntry de = (DetailEntry) resItr.next();
                    if (de != null) {
                        try {
                            JAXBContext ctx = JAXBContext.newInstance(errorClasses);
                            Unmarshaller u = ctx.createUnmarshaller();
                            JAXBElement<ErrorResult> resEl = u.unmarshal(de, ErrorResult.class);
                            ErrorResult resO = resEl.getValue();
                            res = resO.getErrorMessage();
                        } catch (JAXBException e) {
                        }
                    }
                }
            }
        }
        handleError(msg, res, rethrow);
    }

    private static Class<?>[] errorClasses = new Class[] { ErrorResult.class };

    protected void handleError(String msg, String errorMessage, boolean rethrow) throws StopProcesingException {
        String resMsg = MessageFormatter.arrayFormat("{}{}{}", new String[] { msg, errorMessage == null ? " - " : ": ",
                errorMessage == null ? "got a SOAP exception" : errorMessage }).getMessage();
        System.out.println(resMsg);
        if (rethrow) {
            throw new StopProcesingException();
        }
    }

    protected void message(String template, Object... args) {
        String msg = MessageFormatter.arrayFormat(template, args).getMessage();
        System.out.println(msg);
    }
}

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <LogonResponse xmlns="http://tempuri.org/">
         <LogonResult xmlns:a="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <errorMessage i:nil="true"/>
            <token>d0df6cb7-96f0-4963-9949-e52c0c04b609</token>
         </LogonResult>
      </LogonResponse>
   </s:Body>
</s:Envelope>

This method is used to authenticate a client/customer. A companyId, userName and password will be provided by Lyons. The callreturns an entity containing a unique session token that will expire after 20 minutes of inactivity.

It is recommended to cache this token and keep it alive by calling the RequiredLogon method asynchronously every 15 minutes for as long as needed. If the RequiredLogon method returns true, the Logon method should be called again and the token re-cached.

This approach allows for fast service transactions (as the Logon and Logoff calls are not part of the overall transaction) and minimizes the load to the service.

Request

Parameter Type Description
companyId integer The ID of the company the user is associated with
userName string the full username
password string the full password

Response

Parameter Type Description
token string The session token used to access the service methods

RequiredLogon

my $url = "https://lyonsreg.com/webservices/aba/ABAServiceWCF.svc?singleWsdl";
my @params = ( SOAP::Data->name(token => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf '%IABAService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->RequiredLogon(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/aba/ABAServiceWCF.svc");
try{
    using (ChannelFactory<IABAService> fact = new ChannelFactory<IABAService>(myBinding, myEndpoint))
    {
        IABAService abaSvc = fact.CreateChannel();
        bool status = abaSvc.RequiredLogon(token);
    }
}
catch(Exception ex){ }
    def _requiredLogon(token):        
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <RequiredLogon xmlns="https://lyonsreg.com/webservices/aba/ABAServiceWCF.svc">
                    <token>%s</token>                
                </RequiredLogon>
            </soap:Body>
        </soap:Envelope>""" % (token)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/aba/ABAServiceWCF.svc",in_xml)
        doc=xml.dom.minidom.parseString(result_xml)
        response=doc.getElementsByTagName('RequiredLogonResponse')[0].firstChild.data
        return response

        if __name__=='__main__':
        #Quick Tests
        status = _requiredLogon('yourcompanyid','username','pw')
'''''''''''''''''''''''''''''''''
'WSDL location
Private wsdlLOC As String

Private Sub Class_Initialize()
On Error GoTo errStop
    wsdlLOC = "https://lyonsreg.com/webservices/aba/ABAService.asmx?wsdl"
exit_me:
    Exit Sub
errStop:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "ABAService::Initialize", errDesc
    Resume exit_me
End Sub

'''''''''''''''''''''''''''''''''
'Logon - Logon to the web service.
Public Function RequiredLogon(ByVal token As String) As String
    On Error GoTo SoapError
    Dim ws As New MSSOAPLib30.SoapClient30
    ws.MSSoapInit wsdlLOC
    RequiredLogon = ws.RequiredLogon(token)
    Set ws = Nothing
exit_me:
    Exit Function
SoapError:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "ABAService::RequiredLogon", errDesc
    Resume exit_me
End Function

'''''''''''''''''''''''''''''''
'Go button clicked
Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
  Dim service As ABAService.ABAService
  Try
      'Hour Glass.
      Me.Cursor = Cursors.WaitCursor
      'Create a new service object.
      service = New ABAService.ABAService
      'Get a logon token - is good for 20 minutes.
      Dim token As String = service.Logon(tbCompanyID.Text.Trim, tbUserName.Text.Trim, tbPassword.Text.Trim)
      'Get the financial institutions.
      Dim xml As String = service.RequiredLogon(token)
      If xml.Trim <> "" Then
          ProcessXML(xml)
      End If
  Catch ex As Exception
      'Something failed!      
      comboBanks.Items.Clear()
  Finally
      'Restore the cursor.
      Me.Cursor = Cursors.Default
  End Try

End Sub
    protected boolean requireLogin(IABAService svc, String token) throws StopProcesingException {
        boolean res = true;
        try {
            BooleanResult resObj = svc.RequiredLogon(token);
            Assert.notNull(resObj, "The returned BooleanResult is null");
            res = resObj.isValue();
        } catch (ServerSOAPFaultException ex) {
            handleFault("Error checking the login status with IABAService", ex, true);
        } catch (Exception e) {
            handleError("Error communicating to IABAService", e.getMessage(), true);
        }
        return res;
    }

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <RequiredLogonResponse xmlns="http://tempuri.org/">
         <RequiredLogonResult xmlns:a="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <errorMessage i:nil="true"/>
            <value>false</value>
         </RequiredLogonResult>
      </RequiredLogonResponse>
   </s:Body>
</s:Envelope>

This method does not have to be called to use the web services. It is available for client applications to determine if the session has expired.

Request

Parameter Type Description
token string the session token returned by the Logon call

Response

Parameter Type Description
value string The activity status of the token

Logoff

my $url = "https://lyonsreg.com/webservices/aba/ABAServiceWCF.svc?singleWsdl";
my @params = (  SOAP::Data->name(token => "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf '%IABAService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->Logoff(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/aba/ABAServiceWCF.svc");
try{
    using (ChannelFactory<IABAService> fact = new ChannelFactory<IABAService>(myBinding, myEndpoint))
    {
        IABAService abaSvc = fact.CreateChannel();
        string token = abaSvc.Logoff(token);
    }
}
catch(Exception ex){ }
    def _logoff(token):
        """First call logon to get your token"""
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <Logoff xmlns="https://lyonsreg.com/webservices/aba/ABAServiceWCF.svc">
                    <token>%s</token>
                </Logoff>
            </soap:Body>
        </soap:Envelope>""" % (companyId,username,password)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/aba/ABAServiceWCF.svc",in_xml)          

        if __name__=='__main__':
        #Quick Tests
        _logoff('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
'WSDL location
Private wsdlLOC As String

Private Sub Class_Initialize()
On Error GoTo errStop
    wsdlLOC = "https://lyonsreg.com/webservices/aba/ABAService.svc?wsdl"
exit_me:
    Exit Sub
errStop:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "ABAService::Initialize", errDesc
    Resume exit_me
End Sub
'''''''''''''''''''''''''''''''''
'Logoff - Logoff the web service.
Public Function Logoff(ByVal token As String) As String
    On Error GoTo SoapError
    Dim ws As New MSSOAPLib30.SoapClient30
    ws.MSSoapInit wsdlLOC
    Logoff = ws.Logoff(token)
    Set ws = Nothing
exit_me:
    Exit Function
SoapError:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "ABAService::Logoff", errDesc
    Resume exit_me
End Function

'''''''''''''''''''''''''''''''
'Go button clicked
Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
  Dim service As ABAService.ABAService
  Try
      'Hour Glass.
      Me.Cursor = Cursors.WaitCursor
      'Create a new service object.
      service = New ABAService.ABAService
      'Get a logon token - is good for 20 minutes.
      Dim token As String = service.Logoff(tbToken.Text.Trim)
      'Get the financial institutions.
      Dim xml As String = service.Logoff(token)
      If xml.Trim <> "" Then
          ProcessXML(xml)
      End If
  Catch ex As Exception
      'Something failed!      
      comboBanks.Items.Clear()
  Finally
      'Restore the cursor.
      Me.Cursor = Cursors.Default
  End Try

End Sub

Private Sub ProcessXML(ByVal xml As String)
  Try
      comboBanks.Items.Clear()
      Dim xmlDoc As New XmlDocument
      xmlDoc.LoadXml(xml)
      Dim nodeList As XmlNodeList = xmlDoc.SelectNodes("//logoff")
      Dim node As XmlNode
      For Each node In nodeList
          comboBanks.Items.Add(node.InnerText)
      Next
      comboBanks.SelectedIndex = 0
      comboBanks.Enabled = True
      btnClear.Enabled = True
  Catch ex As Exception

  End Try
End Sub

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <LogonResponse xmlns="http://tempuri.org/">
         <LogoffResult xmlns:a="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">            
         </LogoffResult>
      </LogonResponse>
   </s:Body>
</s:Envelope>

This method is used to logoff from an authenticated login.

This approach allows for fast service transactions (as the Logon and Logoff calls are not part of the overall transaction) and minimizes the load to the service.

Request

Parameter Type Description
token string The session token used to access the service methods

Account Verification

/**
 *
 *    You can find fully functional example client project here.
 *    Unzip the file and follow the instructions in the ReadMe.txt in the main folder.
 *
 */
/**
 *
 *    You can find fully functional example client project here.
 *    Unzip the file and follow the instructions in the ReadMe.txt in the main folder.
 *
 * Alternativelly, you can build the libraries from the respective projects:        
 *        ATM  library project is here
 *
 */

This web service returns a code and/or message to help you determine whether to “Accept” or “Deny” a payment transaction for a submitted checking or savings account number.

This web service returns a single, primary financial institution with detailed information for a submitted 9-digit financial institution routing number. Lyons will first verify the financial institution routing number as eligible by applying the industry standard Mod10 algorithm. Upon satisfying this requirement, Lyons will determine the existence of the routing/account number, and if found, will then verify the status of the account as being open and in good standing.

WSDL Url

http://lyonsreg.com/webservices/atm/ATMServiceWCF.svc?singleWsdl

Check under each code language tab for example projects that demonstrate how to correctly use the web service contracts and proper configurations for the service and the method calls.

Response Codes

Code Message
-99 Just do not know
-64 ~ -61 Communication Error
-60 Communication Error (Internal)
-54 Your ATM account preferences are not configured
-53 Customer Present value must be 0 or 1.
-52 Customer Present value must be one character in length.
-51 Customer Present value must be numeric.
-50 Customer Present value must be entered.
-42 Amount value length exceeds maximum of 12 characters.
-41 Amount value must be numeric.
-40 Amount value must be entered.
-32 Account Number length must be 3 to 17 characters long.
-31 Account Number value must be numeric.
-30 Account Number must be entered.
-22 ABA Number must be exactly 9 digits.
-21 ABA value must be numeric.
-20 ABA value must be entered.
-6 EVS has been disabled
-5 Amount value cannot be zero or less than 0.01
0 Progress OK, Final Decision Inconclusive
101 Accept
103 Deny
104 Deny
105 ABA Validated Only
106 Invalid account holder identification
107 Duplicate Check/Txn
117 ~ 126 Risk Warning
197 Ineligible For Conversion
198 No Account Experience Available
199 Insufficient info to make a decision

IsParticipant

my $url = "https://lyonsreg.com/webservices/atm/ATMServiceWCF.svc?singleWsdl";
my @params = ( SOAP::Data->name(token => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'),
               SOAP::Data->name(aba => 'xxxxxxxxx'));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf '%IATMService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->IsParticipant(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/atm/ATMServiceWCF.svc");
try{
    using (ChannelFactory<IATMService> fact = new ChannelFactory<IATMService>(myBinding, myEndpoint))
    {
        IATMService atmSvc = fact.CreateChannel();
        BooleanResponse response = atmSvc.IsParticipant(token, aba);
    }
}
catch(Exception ex){ }
    def _isParticipant(token, aba):        
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <IsParticipant xmlns="https://lyonsreg.com/webservices/atm/ATMServiceWCF.svc">
                    <token>%s</token>
                    <aba>%s</aba>
                </IsParticipant>
            </soap:Body>
        </soap:Envelope>""" % (token,aba)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/atm/ATMServiceWCF.svc",in_xml)
        doc=xml.dom.minidom.parseString(result_xml)
        response=doc.getElementsByTagName('IsParticipantResponse')[0].firstChild.data
        return response

        if __name__=='__main__':
        #Quick Tests
        response= _isParticipant('token','aba')
'''''''''''''''''''''''''''''''''
'WSDL location
Private wsdlLOC As String

Private Sub Class_Initialize()
On Error GoTo errStop
    wsdlLOC = "https://lyonsreg.com/webservices/atm/ATMService.svc?wsdl"
exit_me:
    Exit Sub
errStop:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "ATMService::Initialize", errDesc
    Resume exit_me
End Sub

'''''''''''''''''''''''''''''''''
Public Function IsParticipant(ByVal token As String, ByVal aba As String) As String
    On Error GoTo SoapError
    Dim ws As New MSSOAPLib30.SoapClient30
    ws.MSSoapInit wsdlLOC
    IsParticipant = ws.IsParticipant(token, aba)
    Set ws = Nothing
exit_me:
    Exit Function
SoapError:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "ATMService::IsParticipant", errDesc
    Resume exit_me
End Function

'''''''''''''''''''''''''''''''
'Go button clicked
Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
  Dim service As ATMService.ATMService
  Try
      'Hour Glass.
      Me.Cursor = Cursors.WaitCursor
      'Create a new service object.
      service = New ATMService.ATMService
      'Get a logon token - is good for 20 minutes.
      Dim token As String = service.Logon(tbCompanyID.Text.Trim, tbUserName.Text.Trim, tbPassword.Text.Trim)
      'Get the financial institutions.
      Dim xml As String = service.IsParticipant(token, tbABA.Text.Trim)
      If xml.Trim <> "" Then
          ProcessXML(xml)
      End If
  Catch ex As Exception
      'Something failed!      
      comboBanks.Items.Clear()
  Finally
      'Restore the cursor.
      Me.Cursor = Cursors.Default
  End Try

End Sub
    public boolean call(IATMService svc, String token, String aba)
            throws StopProcesingException {
        boolean status = false;
        try {
            BooleanResult  res = svc.isParticipant(token, aba);
            Assert.notNull(res, "The returned IsParticipant is null");
            status = res.isValue();            
        } catch (ServerSOAPFaultException ex) {
            handleFault("IATMService.IsParticipant(...) returned and error", ex, false);
        } catch (Exception e) {
            log.error("General exception when calling IATMService.IsParticipant(...) method", e);
            handleError("Error calling the IATMService.IsParticipant(...) method", e.getMessage(), true);
        }
        return status;
    }

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <IsParticipantResponse xmlns="http://lyonsreg.com/WebServices/ATMService">
         <IsParticipantResult xmlns:a="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <errorMessage i:nil="true"/>
            <value>true</value>
         </IsParticipantResult>
      </IsParticipantResponse>
   </s:Body>
</s:Envelope>

Legacy Method - Is Financial Institution a participant in the ATM network?

Request

Parameter Type Description
token string the session token returned by the Logon call
aba string the routing number to search

Response

Parameter Type Description
value boolean Status of aba

Error Messages

Message Description
Bad params! ABA does not match correct format or length

VerifyAccount

my $url = "https://lyonsreg.com/webservices/atm/ATMServiceWCF.svc?singleWsdl";
my @params = ( SOAP::Data->name(token => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'),
               SOAP::Data->name(aba => 'xxxxxxxxx'),
               SOAP::Data->name(account => '58004820'),
               SOAP::Data->name(amount => '132.45'),
               SOAP::Data->name(customerPresent => '1'));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf '%IATMService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->VerifyAccount(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/atm/ATMServiceWCF.svc");
try{
    using (ChannelFactory<IATMService> fact = new ChannelFactory<IATMService>(myBinding, myEndpoint))
    {
        IATMService atmSvc = fact.CreateChannel();
        StatusCodeResponse response = atmSvc.VerifyAccount(token, aba, account, amount,customerPresent);
    }
}
catch(Exception ex){ }
    def _VerifyAccount(token, aba, account, amount):        
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <VerifyAccount xmlns="https://lyonsreg.com/webservices/atm/ATMServiceWCF.svc">
                    <token>%s</token>
                    <aba>%s</aba>
          <account>%s</account>
          <amount>%s</amount>
          <customerPresent>%s</customerPresent>
                </VerifyAccount>
            </soap:Body>
        </soap:Envelope>""" % (token,aba, account, amount)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/atm/ATMServiceWCF.svc",in_xml)
        doc=xml.dom.minidom.parseString(result_xml)
        response=doc.getElementsByTagName('VerifyAccountResponse')[0].firstChild.data
        return response

        if __name__=='__main__':
        #Quick Tests
        response= _VerifyAccount('token','aba','account', 'amount', 'customerPresent')
'''''''''''''''''''''''''''''''''
'WSDL location
Private wsdlLOC As String

Private Sub Class_Initialize()
On Error GoTo errStop
    wsdlLOC = "https://lyonsreg.com/webservices/atm/ATMService.svc?wsdl"
exit_me:
    Exit Sub
errStop:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "ATMService::Initialize", errDesc
    Resume exit_me
End Sub

'''''''''''''''''''''''''''''''''
Public Function VerifyAccount(ByVal token As String, ByVal aba As String, ByVal account As String, ByVal amount As String, ByVal customerPresent As String) As String
    On Error GoTo SoapError
    Dim ws As New MSSOAPLib30.SoapClient30
    ws.MSSoapInit wsdlLOC
    VerifyAccount = ws.VerifyAccount(token, aba, account, amount, customerPresent)
    Set ws = Nothing
exit_me:
    Exit Function
SoapError:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "ATMService::VerifyAccount", errDesc
    Resume exit_me
End Function

'''''''''''''''''''''''''''''''
'Go button clicked
Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
  Dim service As ATMService.ATMService
  Try
      'Hour Glass.
      Me.Cursor = Cursors.WaitCursor
      'Create a new service object.
      service = New ATMService.ATMService
      'Get a logon token - is good for 20 minutes.
      Dim token As String = service.Logon(tbCompanyID.Text.Trim, tbUserName.Text.Trim, tbPassword.Text.Trim)
      'Get the financial institutions.
      Dim xml As String = service.VerifyAccount(token, aba, account, amount, customerPresent)
      If xml.Trim <> "" Then
          ProcessXML(xml)
      End If
  Catch ex As Exception
      'Something failed!      
      comboBanks.Items.Clear()
  Finally
      'Restore the cursor.
      Me.Cursor = Cursors.Default
  End Try

End Sub
    public int call(IATMService svc, String token, String aba, String account, String amount, String customerPresent)
            throws StopProcesingException {
        int code = -1;
        try {
            StatusCodeResult res = svc.VerifyAccount(token, aba, account, amount, customerPresent);
            Assert.notNull(res, "The returned VerifyAccount is null");
            code = res.getStatusCode();                        
        } catch (ServerSOAPFaultException ex) {
            handleFault("IATMService.VerifyAccount(...) returned and error", ex, false);
        } catch (Exception e) {
            log.error("General exception when calling IATMService.VerifyAccount(...) method", e);
            handleError("Error calling the IATMService.VerifyAccount(...) method", e.getMessage(), true);
        }
        return status;
    }

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <VerifyAccountResponse xmlns="http://lyonsreg.com/WebServices/ATMService">
         <VerifyAccountResult xmlns:a="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.ATMService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <errorMessage i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService"/>
            <statusCode>199</statusCode>
         </VerifyAccountResult>
      </VerifyAccountResponse>
   </s:Body>
</s:Envelope>

Request

Parameter Type Description
token string the session token returned by the Logon call
aba string the routing number to search
account string the account number at the financial institution
amount string the amount of the transaction or 0 for enrollment
customerPresent string flag whether the client is present at time of request

Response

Parameter Type Description
statusCode boolean Numeric representation of account verification

Error Messages

Message Description
No Access User does not have access to this product
Internal Error Internal Application Error, contact system admin
Internal Error(Configuration) No Vendor has been set for this customer product
Communication Error(ABA) Error communicating with aba web service

DescribeStatusCode

my $url = "https://lyonsreg.com/webservices/atm/ATMServiceWCF.svc?singleWsdl";
my @params = ( SOAP::Data->name(token => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'),
               SOAP::Data->name(code => '199'));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf '%IATMService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->DescribeStatusCode(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/atm/ATMServiceWCF.svc");
try{
    using (ChannelFactory<IATMService> fact = new ChannelFactory<IATMService>(myBinding, myEndpoint))
    {
        IATMService atmSvc = fact.CreateChannel();
        TranslationResponse translation = atmSvc.DescribeStatusCode(token, code);
    }
}
catch(Exception ex){ }
    def _DescribeStatusCode(token, code):        
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <DescribeStatusCode xmlns="https://lyonsreg.com/webservices/atm/ATMServiceWCF.svc">
                    <token>%s</token>
                    <statusCode>%s</statusCode>
                </DescribeStatusCode>
            </soap:Body>
        </soap:Envelope>""" % (token,code)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/atm/ATMServiceWCF.svc",in_xml)
        doc=xml.dom.minidom.parseString(result_xml)
        response=doc.getElementsByTagName('DescribeStatusCodeResponse')[0].firstChild.data
        return response

        if __name__=='__main__':
        #Quick Tests
        response= _DescribeStatusCode('token','statusCode')
'''''''''''''''''''''''''''''''''
'WSDL location
Private wsdlLOC As String

Private Sub Class_Initialize()
On Error GoTo errStop
    wsdlLOC = "https://lyonsreg.com/webservices/atm/ATMService.svc?wsdl"
exit_me:
    Exit Sub
errStop:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "ATMService::Initialize", errDesc
    Resume exit_me
End Sub

'''''''''''''''''''''''''''''''''
Public Function DescribeStatusCodeResponse(ByVal token As String, ByVal code As String) As String
    On Error GoTo SoapError
    Dim ws As New MSSOAPLib30.SoapClient30
    ws.MSSoapInit wsdlLOC
    DescribeStatusCodeResponse = ws.DescribeStatusCodeResponse(token, statusCode)
    Set ws = Nothing
exit_me:
    Exit Function
SoapError:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "ATMService::DescribeStatusCodeResponse", errDesc
    Resume exit_me
End Function

'''''''''''''''''''''''''''''''
'Go button clicked
Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
  Dim service As ATMService.ATMService
  Try
      'Hour Glass.
      Me.Cursor = Cursors.WaitCursor
      'Create a new service object.
      service = New ATMService.ATMService
      'Get a logon token - is good for 20 minutes.
      Dim token As String = service.Logon(tbCompanyID.Text.Trim, tbUserName.Text.Trim, tbPassword.Text.Trim)
      'Get the financial institutions.
      Dim xml As String = service.DescribeStatusCode(token, statusCode)
      If xml.Trim <> "" Then
          ProcessXML(xml)
      End If
  Catch ex As Exception
      'Something failed!      
      comboBanks.Items.Clear()
  Finally
      'Restore the cursor.
      Me.Cursor = Cursors.Default
  End Try

End Sub
    public string call(IATMService svc, String token, String statusCode)
        throws StopProcesingException {
        string description = null;
        try {
            StatusDescriptionResult res = svc.DescribeStatusCode(token, statusCode);
            Assert.notNull(res, "The returned DescribeStatusCode is null");
            description = res.getStatusDescription();
            Assert.notNull(description, "The returned StatusDescription is null");            
        } catch (ServerSOAPFaultException ex) {
            handleFault("IATMService.DescribeStatusCode(...) returned and error", ex, false);
        } catch (Exception e) {
            log.error("General exception when calling IATMService.DescribeStatusCode(...) method", e);
            handleError("Error calling the IATMService.DescribeStatusCode(...) method", e.getMessage(), true);
        }
        return status;
    }

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <DescribeStatusCodeResponse xmlns="http://lyonsreg.com/WebServices/ATMService">
         <DescribeStatusCodeResult xmlns:a="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.ATMService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <errorMessage i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService"/>
            <statusCode>199</statusCode>
            <statusDescription>Insufficient info to make a decision</statusDescription>
         </DescribeStatusCodeResult>
      </DescribeStatusCodeResponse>
   </s:Body>
</s:Envelope>

Get the status code of an account from the ATM network.

Request

Parameter Type Description
token string the session token returned by the Logon call
statusCode string status code to be translated

Response

Parameter Type Description
statusCode boolean Numeric representation of account verification
statusDescription boolean Desciption of status code representation of account verification

VerifyAccountWithDetails

my $url = "https://lyonsreg.com/webservices/atm/ATMServiceWCF.svc?singleWsdl";
my @params = ( SOAP::Data->name(token => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'),
               SOAP::Data->name(aba => 'xxxxxxxxx'),
               SOAP::Data->name(account => '58004820'),
               SOAP::Data->name(amount => '132.45'),
               SOAP::Data->name(present => '1'),
               SOAP::Data->name(denyNsf => '1'));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf 'IATMService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->VerifyAccountWithDetails(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/atm/ATMServiceWCF.svc");
try{
    using (ChannelFactory<IATMService> fact = new ChannelFactory<IATMService>(myBinding, myEndpoint))
    {
        IATMService atmSvc = fact.CreateChannel();
        AVSBResponse response = atmSvc.VerifyAccountWithDetails(token, aba, account, amount, present, denyNsf);
    }
}
catch(Exception ex){ }
    def _VerifyAccountWithDetails(token, aba, account, amount, present, denyNsf):        
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <VerifyAccountWithDetails xmlns="https://lyonsreg.com/webservices/atm/ATMServiceWCF.svc">
                    <token>%s</token>
                    <aba>%s</aba>
          <account>%s</account>
          <amount>%s</amount>
          <present>%s</present>
          <denyNsf>%s</denyNsf>
                </VerifyAccountWithDetails>
            </soap:Body>
        </soap:Envelope>""" % (token,aba, account, amount, present, denyNsf)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/atm/ATMServiceWCF.svc",in_xml)
        doc=xml.dom.minidom.parseString(result_xml)
        response=doc.getElementsByTagName('VerifyAccountWithDetailsResponse')[0].firstChild.data
        return response

        if __name__=='__main__':
        #Quick Tests
        response= _VerifyAccountWithDetails('token','aba','account', 'amount', 'present', 'denyNsf')
'''''''''''''''''''''''''''''''''
'WSDL location
Private wsdlLOC As String

Private Sub Class_Initialize()
On Error GoTo errStop
    wsdlLOC = "https://lyonsreg.com/webservices/atm/ATMService.svc?wsdl"
exit_me:
    Exit Sub
errStop:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "ATMService::Initialize", errDesc
    Resume exit_me
End Sub

'''''''''''''''''''''''''''''''''
Public Function VerifyAccountWithDetails(ByVal token As String, ByVal aba As String, ByVal account As String, ByVal amount As String, ByVal customerPresent As String, ByVal denyNsf As String) As String
    On Error GoTo SoapError
    Dim ws As New MSSOAPLib30.SoapClient30
    ws.MSSoapInit wsdlLOC
    VerifyAccountWithDetails = ws.VerifyAccountWithDetails(token, aba, account, amount, customerPresent, denyNsf)
    Set ws = Nothing
exit_me:
    Exit Function
SoapError:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "ATMService::VerifyAccountWithDetails", errDesc
    Resume exit_me
End Function

'''''''''''''''''''''''''''''''
'Go button clicked
Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
  Dim service As ATMService.ATMService
  Try
      'Hour Glass.
      Me.Cursor = Cursors.WaitCursor
      'Create a new service object.
      service = New ATMService.ATMService
      'Get a logon token - is good for 20 minutes.
      Dim token As String = service.Logon(tbCompanyID.Text.Trim, tbUserName.Text.Trim, tbPassword.Text.Trim)
      'Get the financial institutions.
      Dim xml As String = service.VerifyAccountWithDetails(token, aba, account, amount, present, denyNsf)
      If xml.Trim <> "" Then
          ProcessXML(xml)
      End If
  Catch ex As Exception
      'Something failed!    
      comboBanks.Items.Clear()
  Finally
      'Restore the cursor.
      Me.Cursor = Cursors.Default
  End Try

End Sub
    public DetailedStatusCodeResult call(IATMService svc, String token, String aba, String account, String amount, String customerPresent, String denyNsf)
        throws StopProcesingException {
        InstitutionAddress details = null;
        Int code = -1;
        DetailedStatusCodeResult detailedStatus = null;
        try {
            DetailedStatusCodeResult res = svc.VerifyAccountWithDetails(token, aba, account, amount, customerPresent, denyNsf);
            Assert.notNull(res, "The returned VerifyAccountWithDetails is null");
            description = res.getPrimaryInstitution();
            code = res.getStatusCode();
            detailedStatus = res;
            Assert.notNull(description, "The returned StatusDescription is null");            
        } catch (ServerSOAPFaultException ex) {
            handleFault("IATMService.VerifyAccountWithDetails(...) returned and error", ex, false);
        } catch (Exception e) {
            log.error("General exception when calling IATMService.VerifyAccountWithDetails(...) method", e);
            handleError("Error calling the IATMService.VerifyAccountWithDetails(...) method", e.getMessage(), true);
        }
        return detailedStatus;
    }

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <VerifyAccountWithDetailsResponse xmlns="http://lyonsreg.com/WebServices/ATMService">
         <VerifyAccountWithDetailsResult xmlns:a="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.ATMService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <errorMessage i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService"/>
            <statusCode>199</statusCode>
            <statusDescription>Insufficient info to make a decision</statusDescription>
            <primaryInstitution>
               <address>304 HIGH ST</address>
               <city>CAMBRIDGE</city>
               <name>1880 BANK</name>
               <phone>410-228-5600</phone>
               <postalCode>21613</postalCode>
               <state>MD</state>
            </primaryInstitution>
            <validAba>true</validAba>
         </VerifyAccountWithDetailsResult>
      </VerifyAccountWithDetailsResponse>
   </s:Body>
</s:Envelope>

Get a message from a status code.

Request

Parameter Type Description
token string the session token returned by the Logon call
aba string the routing number to search
account string the account number at the financial institution
amount string the amount of the transaction or 0 for enrollment
present string flag whether the client is present at time of request
denyNsf string

Response

Parameter Type Description
statusCode boolean Numeric representation of account verification
statusDescription boolean Desciption of status code representation of account verification
primaryInstitution Object instituion information about the aba
address string Physical Address Line
city string City
name string Complete name of the financial institution
phone string Main Phone Number
postalCode string Address Postal Code
state string State
validABA boolean aba status

Error Messages

Message Description
No Access User does not have access to this product
Internal Error Internal Application Error, contact system admin
Internal Communication Error Internal Application Error, contact system admin
Internal Error(Configuration) No Vendor has been set for this customer product
Communication Error(ABA) Error communicating with aba service

OFAC

/**
 *
 *    You can find fully functional example client project here.
 *    Unzip the file and follow the instructions in the ReadMe.txt in the main folder.
 *
 */
/**
 *
 *    You can find fully functional example client project here.
 *    Unzip the file and follow the instructions in the ReadMe.txt in the main folder.
 *
 * Alternativelly, you can build the libraries from the respective projects:        
 *        OFAC  library project is here
 *
 */

Returns results for a name scanned against the OFAC list This web service cross-references a submitted name against the Office of Foreign Asset Contol’s (OFAC) SDN watch list, the Bureau of Industry and Security’s (BIS) Denied Person’s list, and the new Non-SDN list (NS-PLC). The function returns any potential matches along with a score, indicating the likelihood of an actual match. Lyons will scan the Specially Designated Nations (SDN) and the Bureau of Industry and Security (BIS) Denied Person List for your submitted names and/or country. The results are returned with a weighted score, aliases, the entity type and the list(s) where the name was found.

WSDL Url

lyonsreg.com/webservices/ofac/OFACServiceWCF.svc?singleWsdl

OFACLogonScanName

my $url = "https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc?singleWsdl";
my @params = ( SOAP::Data->name(companyId => '0000'),
               SOAP::Data->name(userName => 'loginName'),
               SOAP::Data->name(password => 'pwd'),
              SOAP::Data->name(name => 'searchName'));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf 'IOFACService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->OFACLogonScanName(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc");
try{
    using (ChannelFactory<IOFACService> fact = new ChannelFactory<IOFACService>(myBinding, myEndpoint))
    {
        IOFACService ofacSvc = fact.CreateChannel();
        OFACListResponse response = ofacSvc.OFACLogonScanName(companyId, userName, password, name);
    }
}
catch(Exception ex){ }
    def _ofacLogonScanName(companyId, userName, password, name):        
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <OFACLogonScanName xmlns="https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc">
                    <companyId>%s</companyId>
                    <userName>%s</userName>
          <password>%s</password>
          <name>%s</name>
                </OFACLogonScanName>
            </soap:Body>
        </soap:Envelope>""" % (companyId, userName, password, name)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc",in_xml)
        doc=xml.dom.minidom.parseString(result_xml)
        response=doc.getElementsByTagName('OFACLogonScanNameResponse')[0].firstChild.data
        return response

        if __name__=='__main__':
        #Quick Tests
        response= _ofacLogonScanName('companyId','userName','password','name')
'''''''''''''''''''''''''''''''''
'WSDL location
Private wsdlLOC As String

Private Sub Class_Initialize()
On Error GoTo errStop
    wsdlLOC = "https://lyonsreg.com/webservices/ofac/OFACService.svc?wsdl"
exit_me:
    Exit Sub
errStop:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "OFACService::Initialize", errDesc
    Resume exit_me
End Sub

'''''''''''''''''''''''''''''''''
Public Function OFACLogonScanName(ByVal companyId As Int, ByVal userName As String, ByVal password As String, ByVal name As String) As String
    On Error GoTo SoapError
    Dim ws As New MSSOAPLib30.SoapClient30
    ws.MSSoapInit wsdlLOC
    OFACLogonScanName = ws.OFACLogonScanName(companyId, userName, password, name)
    Set ws = Nothing
exit_me:
    Exit Function
SoapError:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "OFACService::OFACLogonScanName", errDesc
    Resume exit_me
End Function

'''''''''''''''''''''''''''''''
'Go button clicked
Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
  Dim service As OFACService.OFACService
  Try
      'Hour Glass.
      Me.Cursor = Cursors.WaitCursor
      'Create a new service object.
      service = New OFACService.OFACService
      'Get a logon token - is good for 20 minutes.    
      'Get the financial institutions.
      Dim xml As String = service.OFACLogonScanName(companyId, userName, password, name)
      If xml.Trim <> "" Then
          ProcessXML(xml)
      End If
  Catch ex As Exception
      'Something failed!    
      comboBanks.Items.Clear()
  Finally
      'Restore the cursor.
      Me.Cursor = Cursors.Default
  End Try

End Sub
    public List<Entity> call(IOFACService svc, Int companyId, String username, String password, String name)
            throws StopProcesingException {
        EntityList entList = null;
        try {
            EntityListResult res = svc.OFACLogonScanName(token, aba, account, amount, customerPresent);
            Assert.notNull(res, "The returned EntityListResult is null");
            entList = res.getEntities();  
            Assert.notNull(entList, "The returned EntityList is null");                      
        } catch (ServerSOAPFaultException ex) {
            handleFault("IOFACService.OFACLogonScanName(...) returned and error", ex, false);
        } catch (Exception e) {
            log.error("General exception when calling IOFACService.OFACLogonScanName(...) method", e);
            handleError("Error calling the IOFACService.OFACLogonScanName(...) method", e.getMessage(), true);
        }
        return status;
    }

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <OFACLogonScanNameResponse xmlns="http://tempuri.org/">
         <OFACLogonScanNameResult xmlns:a="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.OFACScan" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <errorMessage i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService"/>
            <entities>
               <entity>
                  <entityNumber>7224</entityNumber>
                  <fullName>MAMO, Eliyahu</fullName>
                  <entityType>aka</entityType>
                  <country/>
                  <listType>sdn</listType>
                  <guid>7304c49b-fe90-40d8-a04e-e5fcc6f75f1e</guid>
                  <score>80</score>
               </entity>
               <entity>
                  <entityNumber>11082</entityNumber>
                  <fullName>SHAMIM</fullName>
                  <entityType>vessel</entityType>
                  <country/>
                  <listType>sdn</listType>
                  <guid>7304c49b-fe90-40d8-a04e-e5fcc6f75f1e</guid>
                  <score>81.632653061224488</score>
               </entity>               
            </entities>
         </OFACLogonScanNameResult>
      </OFACLogonScanNameResponse>
   </s:Body>
</s:Envelope>

OFAC Logon to service and checks an individual’s name or company’s name against the Office of Foreign Assets Control’s (OFAC) SDN watch list, Bureau of Industry and Security’s (BIS) Denied Person’s list and the Non-SDN list (NS-PLC).

Request

Parameter Type Description
companyId int The ID of the company the user is associated with
userName string the full username
password string the full password
name string full name for search query

Response

Parameter Type Description
entityNumber integer A unique number within the list or index of results list. Two records having the same entityNumber means the has addresses in two different coutries or an entity has an alternative identity - the entity is known by another name).
fullname string The full name of the entity.
nameForProcessing string The adjusted entity name that was used for matching.
nameInAscii string The ASCII equivalent of the name.
entityType string Identifies the entity as an individual, aircraft, vessel, etc.
country string The origin country.
listType string The list in which it apears. Abreviations may be used, e.g. "sdn" for "Specially Designated Nationals", "bis_dpl" for "Denied Persons List", "plc" for "Palestinian Legislative Council", etc.
guid string A temporary globaly unique identifier for referencing this entity. This identifier will changes hourly.
score integer An indicator with values between 80 and 100 of the matching likelihood.

Error Messages

Message Description
Internal system error - 67 Internal system error, please contact system admin
Internal system error - 214 Error looking up country
Internal system error - 240 Error looking up country code
Must pass either a name and/or a valid country name or its 2-letter code when searching. [XX] is not a valid country code. Invalid country code
Must pass a name when searching. Empty search name
Must pass either a name and/or a valid country name or its 2-letter code when searching invalid search parameters

OFACScanName

my $url = "https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc?singleWsdl";
my @params = ( SOAP::Data->name(token => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'),
               SOAP::Data->name(name => 'searchName'));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf 'IOFACService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->OFACScanName(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc");
try{
    using (ChannelFactory<IOFACService> fact = new ChannelFactory<IOFACService>(myBinding, myEndpoint))
    {
        IOFACService ofacSvc = fact.CreateChannel();
        OFACListResponse response = ofacSvc.OFACScanName(token, name);
    }
}
catch(Exception ex){ }
    def _ofacScanName(token, name):        
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <OFACScanName xmlns="https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc">                    
          <token>%s</token>
          <name>%s</name>
                </OFACScanName>
            </soap:Body>
        </soap:Envelope>""" % (token,name)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc",in_xml)
        doc=xml.dom.minidom.parseString(result_xml)
        response=doc.getElementsByTagName('OFACScanNameResponse')[0].firstChild.data
        return response

        if __name__=='__main__':
        #Quick Tests
        response= _ofacScanName('token','name')
'''''''''''''''''''''''''''''''''
'WSDL location
Private wsdlLOC As String

Private Sub Class_Initialize()
On Error GoTo errStop
    wsdlLOC = "https://lyonsreg.com/webservices/ofac/OFACService.svc?wsdl"
exit_me:
    Exit Sub
errStop:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "OFACService::Initialize", errDesc
    Resume exit_me
End Sub

'''''''''''''''''''''''''''''''''
Public Function OFACScanName(ByVal token As String, ByVal name As String) As String
    On Error GoTo SoapError
    Dim ws As New MSSOAPLib30.SoapClient30
    ws.MSSoapInit wsdlLOC
    OFACScanName = ws.OFACScanName(token, name)
    Set ws = Nothing
exit_me:
    Exit Function
SoapError:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "OFACService::OFACScanName", errDesc
    Resume exit_me
End Function

'''''''''''''''''''''''''''''''
'Go button clicked
Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
  Dim service As OFACService.OFACService
  Try
      'Hour Glass.
      Me.Cursor = Cursors.WaitCursor
      'Create a new service object.
      service = New OFACService.OFACService
      'Get a logon token - is good for 20 minutes.  
      Dim token As String = service.Logon(tbCompanyID.Text.Trim, tbUserName.Text.Trim, tbPassword.Text.Trim)  
      'Get the financial institutions.
      Dim xml As String = service.OFACScanName(token, name)
      If xml.Trim <> "" Then
          ProcessXML(xml)
      End If
  Catch ex As Exception
      'Something failed!    
      comboBanks.Items.Clear()
  Finally
      'Restore the cursor.
      Me.Cursor = Cursors.Default
  End Try

End Sub
    public List<Entity> call(IOFACService svc, String token, String name)
            throws StopProcesingException {
        EntityList entList = null;
        try {
            EntityListResult res = svc.OFACScanName(token, name);
            Assert.notNull(res, "The returned EntityListResult is null");
            entList = res.getEntities();  
            Assert.notNull(entList, "The returned EntityList is null");                      
        } catch (ServerSOAPFaultException ex) {
            handleFault("IOFACService.OFACScanName(...) returned and error", ex, false);
        } catch (Exception e) {
            log.error("General exception when calling IOFACService.OFACScanName(...) method", e);
            handleError("Error calling the IOFACService.OFACScanName(...) method", e.getMessage(), true);
        }
        return status;
    }

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <OFACScanNameResponse xmlns="http://tempuri.org/">
         <OFACScanNameResult xmlns:a="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.OFACScan" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <errorMessage i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService"/>
            <entities>
               <entity>
                  <entityNumber>7224</entityNumber>
                  <fullName>MAMO, Eliyahu</fullName>
                  <entityType>aka</entityType>
                  <country/>
                  <listType>sdn</listType>
                  <guid>177edc8e-ef67-41f6-8cb5-bd5e71acd02b</guid>
                  <score>80</score>
               </entity>
               <entity>
                  <entityNumber>11082</entityNumber>
                  <fullName>SHAMIM</fullName>
                  <entityType>vessel</entityType>
                  <country/>
                  <listType>sdn</listType>
                  <guid>177edc8e-ef67-41f6-8cb5-bd5e71acd02b</guid>
                  <score>81.632653061224488</score>
               </entity>               
            </entities>
         </OFACScanNameResult>
      </OFACScanNameResponse>
   </s:Body>
</s:Envelope>

Checks an individual’s name or company’s name against the Office of Foreign Assets Control’s (OFAC) SDN watch list, Bureau of Industry and Security’s (BIS) Denied Person’s list and the Non-SDN list (NS-PLC).

Request

Parameter Type Description
token string the session token returned by the Logon call
name string full name for search query

Response

Parameter Type Description
entityNumber integer A unique number within the list or index of results list. Two records having the same entityNumber means the has addresses in two different coutries or an entity has an alternative identity - the entity is known by another name).
fullname string The full name of the entity.
nameForProcessing string The adjusted entity name that was used for matching.
nameInAscii string The ASCII equivalent of the name.
entityType string Identifies the entity as an individual, aircraft, vessel, etc.
country string The origin country.
listType string The list in which it apears. Abreviations may be used, e.g. "sdn" for "Specially Designated Nationals", "bis_dpl" for "Denied Persons List", "plc" for "Palestinian Legislative Council", etc.
guid string A temporary globaly unique identifier for referencing this entity. This identifier will changes hourly.
score integer An indicator with values between 80 and 100 of the matching likelihood.

Error Messages

Message Description
Internal system error - 89 Internal system error, please contact system admin
Internal system error - 214 Error looking up country
Internal system error - 240 Error looking up country code
Must pass either a name and/or a valid country name or its 2-letter code when searching. [XX] is not a valid country code. Invalid country code
Must pass a name when searching. Empty search name
Must pass either a name and/or a valid country name or its 2-letter code when searching invalid search parameters

OFACScanCountry

my $url = "https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc?singleWsdl";
my @params = ( SOAP::Data->name(token => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'),
               SOAP::Data->name(name => 'searchName'),
               SOAP::Data->name(state => 'United States'));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf 'IOFACService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->OFACScanCountry(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc");
try{
    using (ChannelFactory<IOFACService> fact = new ChannelFactory<IOFACService>(myBinding, myEndpoint))
    {
        IOFACService ofacSvc = fact.CreateChannel();
        OFACListResponse response = ofacSvc.OFACScanCountry(token, name, state);
    }
}
catch(Exception ex){ }
    def _ofacScanCountry(token, name, state):        
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <OFACScanCountry xmlns="https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc">                    
          <token>%s</token>
          <name>%s</name>
          <state>%s</state>
                </OFACScanCountry>
            </soap:Body>
        </soap:Envelope>""" % (token, name, state)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc",in_xml)
        doc=xml.dom.minidom.parseString(result_xml)
        response=doc.getElementsByTagName('OFACScanCountryResponse')[0].firstChild.data
        return response

        if __name__=='__main__':
        #Quick Tests
        response= _ofacScanCountry('token','name','state')
'''''''''''''''''''''''''''''''''
'WSDL location
Private wsdlLOC As String

Private Sub Class_Initialize()
On Error GoTo errStop
    wsdlLOC = "https://lyonsreg.com/webservices/ofac/OFACService.svc?wsdl"
exit_me:
    Exit Sub
errStop:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "OFACService::Initialize", errDesc
    Resume exit_me
End Sub

'''''''''''''''''''''''''''''''''
Public Function OFACScanCountry( ByVal token As String, ByVal name As String, ByVal country As String) As String
    On Error GoTo SoapError
    Dim ws As New MSSOAPLib30.SoapClient30
    ws.MSSoapInit wsdlLOC
    OFACScanCountry = ws.OFACScanCountry(token, name, country)
    Set ws = Nothing
exit_me:
    Exit Function
SoapError:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "OFACService::OFACScanCountry", errDesc
    Resume exit_me
End Function

'''''''''''''''''''''''''''''''
'Go button clicked
Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
  Dim service As OFACService.OFACService
  Try
      'Hour Glass.
      Me.Cursor = Cursors.WaitCursor
      'Create a new service object.
      service = New OFACService.OFACService
      'Get a logon token - is good for 20 minutes.  
      Dim token As String = service.Logon(tbCompanyID.Text.Trim, tbUserName.Text.Trim, tbPassword.Text.Trim)  
      'Get the financial institutions.
      Dim xml As String = service.OFACScanCountry(token, name, country)
      If xml.Trim <> "" Then
          ProcessXML(xml)
      End If
  Catch ex As Exception
      'Something failed!    
      comboBanks.Items.Clear()
  Finally
      'Restore the cursor.
      Me.Cursor = Cursors.Default
  End Try

End Sub
    public List<Entity> call(IOFACService svc, String token, String name, String country)
            throws StopProcesingException {
        EntityList entList = null;
        try {
            EntityListResult res = svc.OFACScanCountry(token, name, country);
            Assert.notNull(res, "The returned EntityListResult is null");
            entList = res.getEntities();  
            Assert.notNull(entList, "The returned EntityList is null");                      
        } catch (ServerSOAPFaultException ex) {
            handleFault("IOFACService.OFACScanCountry(...) returned and error", ex, false);
        } catch (Exception e) {
            log.error("General exception when calling IOFACService.OFACScanCountry(...) method", e);
            handleError("Error calling the IOFACService.OFACScanCountry(...) method", e.getMessage(), true);
        }
        return status;
    }

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <OFACScanCountryResponse xmlns="http://tempuri.org/">
         <OFACScanCountryResult xmlns:a="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.OFACScan" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <errorMessage i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService"/>
            <entities>
               <entity>
                  <entityNumber>7224</entityNumber>
                  <fullName>MAMO, Eliyahu</fullName>
                  <entityType>aka</entityType>
                  <country/>
                  <listType>sdn</listType>
                  <guid>ca683db9-175e-433b-9f5e-504bb0d0a301</guid>
                  <score>80</score>
               </entity>
               <entity>
                  <entityNumber>11082</entityNumber>
                  <fullName>SHAMIM</fullName>
                  <entityType>vessel</entityType>
                  <country/>
                  <listType>sdn</listType>
                  <guid>ca683db9-175e-433b-9f5e-504bb0d0a301</guid>
                  <score>81.632653061224488</score>
               </entity>               
            </entities>
         </OFACScanCountryResult>
      </OFACScanCountryResponse>
   </s:Body>
</s:Envelope>

Checks an individual’s name or company’s name along with country against the Office of Foreign Assets Control’s (OFAC) SDN watch list, Bureau of Industry and Security’s (BIS) Denied Person’s list and the Non-SDN list (NS-PLC).

Request

Parameter Type Description
token string the session token returned by the Logon call
name string full name for search query
country string country for search query

Response

Parameter Type Description
entityNumber integer A unique number within the list or index of results list. Two records having the same entityNumber means the has addresses in two different coutries or an entity has an alternative identity - the entity is known by another name).
fullname string The full name of the entity.
nameForProcessing string The adjusted entity name that was used for matching.
nameInAscii string The ASCII equivalent of the name.
entityType string Identifies the entity as an individual, aircraft, vessel, etc.
country string The origin country.
listType string The list in which it apears. Abreviations may be used, e.g. "sdn" for "Specially Designated Nationals", "bis_dpl" for "Denied Persons List", "plc" for "Palestinian Legislative Council", etc.
guid string A temporary globaly unique identifier for referencing this entity. This identifier will changes hourly.
score integer An indicator with values between 80 and 100 of the matching likelihood.

Error Messages

Message Description
Internal system error - 162 Internal system error, please contact system admin
Internal system error - 163 Internal system error, please contact system admin
Internal system error - 214 Error looking up country name
Internal system error - 240 Error looking up country code
Must pass either a name and/or a valid country name or its 2-letter code when searching. [XX] is not a valid country code. Invalid country code
Must pass a name when searching. Empty search name
Must pass either a name and/or a valid country name or its 2-letter code when searching invalid search parameters

GetCountryList

my $url = "https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc?singleWsdl";
my @params = ( SOAP::Data->name(token => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf 'IOFACService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->GetCountryList(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc");
try{
    using (ChannelFactory<IOFACService> fact = new ChannelFactory<IOFACService>(myBinding, myEndpoint))
    {
        IOFACService ofacSvc = fact.CreateChannel();
        GetCountryListResponse response = ofacSvc.GetCountryList(token);
    }
}
catch(Exception ex){ }
    def _GetCountryList(token):        
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <GetCountryList xmlns="https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc">
                    <token>%s</token>
                </GetCountryList>
            </soap:Body>
        </soap:Envelope>""" % (token)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc",in_xml)
        doc=xml.dom.minidom.parseString(result_xml)
        response=doc.getElementsByTagName('GetCountryListResponse')[0].firstChild.data
        return response

        if __name__=='__main__':
        #Quick Tests
        response= _GetCountryList('token')
'''''''''''''''''''''''''''''''''
'WSDL location
Private wsdlLOC As String

Private Sub Class_Initialize()
On Error GoTo errStop
    wsdlLOC = "https://lyonsreg.com/webservices/ofac/OFACService.svc?wsdl"
exit_me:
    Exit Sub
errStop:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "OFACService::Initialize", errDesc
    Resume exit_me
End Sub

'''''''''''''''''''''''''''''''''
Public Function GetCountryList(ByVal token As String) As String
    On Error GoTo SoapError
    Dim ws As New MSSOAPLib30.SoapClient30
    ws.MSSoapInit wsdlLOC
    GetCountryList = ws.GetCountryList(token)
    Set ws = Nothing
exit_me:
    Exit Function
SoapError:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "OFACService::GetCountryList", errDesc
    Resume exit_me
End Function

'''''''''''''''''''''''''''''''
'Go button clicked
Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
  Dim service As OFACService.OFACService
  Try
      'Hour Glass.
      Me.Cursor = Cursors.WaitCursor
      'Create a new service object.
      service = New OFACService.OFACService
      'Get a logon token - is good for 20 minutes.  
      Dim token As String = service.Logon(tbCompanyID.Text.Trim, tbUserName.Text.Trim, tbPassword.Text.Trim)  
      'Get the financial institutions.
      Dim xml As String = service.GetCountryList(token)
      If xml.Trim <> "" Then
          ProcessXML(xml)
      End If
  Catch ex As Exception
      'Something failed!    
      comboBanks.Items.Clear()
  Finally
      'Restore the cursor.
      Me.Cursor = Cursors.Default
  End Try

End Sub
    public List<Country> call(IOFACService svc, String token)
            throws StopProcesingException {
        GetCountryList cotList = null;
        List<Country> list = null;
        try {
            CountryListResult res = svc.GetCountryList(token);
            Assert.notNull(res, "The returned EntityListResult is null");
            cotList = res.getCountries();  
            Assert.notNull(entList, "The returned CountryList is null");                      
            list = res.getCountry();  
            Assert.notNull(entList, "The returned List<Country> is null");   
        } catch (ServerSOAPFaultException ex) {
            handleFault("IOFACService.GetCountryList(...) returned and error", ex, false);
        } catch (Exception e) {
            log.error("General exception when calling IOFACService.GetCountryList(...) method", e);
            handleError("Error calling the IOFACService.GetCountryList(...) method", e.getMessage(), true);
        }
        return list;
    }

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <GetCountryListResponse xmlns="http://tempuri.org/">
         <CountryListResult xmlns:a="http://schemas.datacontract.org/2004/07/OFACService.Lyons.OFACServiceContract" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <errorMessage i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService"/>
            <countries>
               <country>
                  <code>AF</code>
                  <name>AFGHANISTAN</name>
               </country>
               <country>
                  <code>AL</code>
                  <name>ALBANIA</name>
               </country>
               <country>
                  <code>DZ</code>
                  <name>ALGERIA</name>
               </country>
               <country>
                  <code>AO</code>
                  <name>ANGOLA</name>
               </country>
               <country>
                  <code>AR</code>
                  <name>ARGENTINA</name>
               </country>
               <country>
                  <code>AM</code>
                  <name>ARMENIA</name>
               </country>
            </countries>
         </CountryListResult>
      </GetCountryListResponse>
   </s:Body>
</s:Envelope>

Returns a list of countries from the OFAC database.

Request

Parameter Type Description
token string the session token returned by the Logon call

Response

Parameter Type Description
code integer Country 2 letter code
name string Full country name

Error Messages

Message Description
Internal system error - 187 Internal system error, please contact system admin
Internal system error - 188 Internal system error, please contact system admin

OFACScanNameFullRecord

my $url = "https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc?singleWsdl";
my @params = ( SOAP::Data->name(token => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'),
               SOAP::Data->name(name => 'searchName'),
               SOAP::Data->name(state => 'US'));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf 'IOFACService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->OFACScanNameFullRecord(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc");
try{
    using (ChannelFactory<IOFACService> fact = new ChannelFactory<IOFACService>(myBinding, myEndpoint))
    {
        IOFACService ofacSvc = fact.CreateChannel();
        FullEntityListResult response = ofacSvc.OFACScanNameFullRecord(token, name, state);
    }
}
catch(Exception ex){ }
    def _ofacScanCountry(token, name, state):        
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <OFACScanNameFullRecord xmlns="https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc">                    
          <token>%s</token>
          <name>%s</name>
          <state>%s</state>
                </OFACScanNameFullRecord>
            </soap:Body>
        </soap:Envelope>""" % (token, name, state)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/ofac/OFACServiceWCF.svc",in_xml)
        doc=xml.dom.minidom.parseString(result_xml)
        response=doc.getElementsByTagName('OFACScanNameFullRecordResponse')[0].firstChild.data
        return response

        if __name__=='__main__':
        #Quick Tests
        response= _ofacScanNameFullRecord('token','name','state')
'''''''''''''''''''''''''''''''''
'WSDL location
Private wsdlLOC As String

Private Sub Class_Initialize()
On Error GoTo errStop
    wsdlLOC = "https://lyonsreg.com/webservices/ofac/OFACService.svc?wsdl"
exit_me:
    Exit Sub
errStop:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "OFACService::Initialize", errDesc
    Resume exit_me
End Sub

'''''''''''''''''''''''''''''''''
Public Function OFACScanNameFullRecord( ByVal token As String, ByVal name As String, ByVal country As String) As String
    On Error GoTo SoapError
    Dim ws As New MSSOAPLib30.SoapClient30
    ws.MSSoapInit wsdlLOC
    OFACScanNameFullRecord = ws.OFACScanNameFullRecord(token, name, country)
    Set ws = Nothing
exit_me:
    Exit Function
SoapError:
    Dim errNumber As Long
    Dim errDesc As String

    errNumber = Err.Number
    errDesc = Err.Description
    On Error Resume Next
    Err.Raise errNumber, "OFACService::OFACScanNameFullRecord", errDesc
    Resume exit_me
End Function

'''''''''''''''''''''''''''''''
'Go button clicked
Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
  Dim service As OFACService.OFACService
  Try
      'Hour Glass.
      Me.Cursor = Cursors.WaitCursor
      'Create a new service object.
      service = New OFACService.OFACService
      'Get a logon token - is good for 20 minutes.  
      Dim token As String = service.Logon(tbCompanyID.Text.Trim, tbUserName.Text.Trim, tbPassword.Text.Trim)  
      'Get the financial institutions.
      Dim xml As String = service.OFACScanNameFullRecord(token, name, country)
      If xml.Trim <> "" Then
          ProcessXML(xml)
      End If
  Catch ex As Exception
      'Something failed!    
      comboBanks.Items.Clear()
  Finally
      'Restore the cursor.
      Me.Cursor = Cursors.Default
  End Try

End Sub
    public List<Entity> call(IOFACService svc, String token, String name, String country)
            throws StopProcesingException {
        FullEntityList entList = null;
        try {
            FullEntityListResult res = svc.OFACScanNameFullRecord(token, name, country);
            Assert.notNull(res, "The returned FullEntityListResult is null");
            entList = res.getEntities();  
            Assert.notNull(entList, "The returned FullEntityList is null");                      
        } catch (ServerSOAPFaultException ex) {
            handleFault("IOFACService.OFACScanNameFullRecord(...) returned and error", ex, false);
        } catch (Exception e) {
            log.error("General exception when calling IOFACService.OFACScanNameFullRecord(...) method", e);
            handleError("Error calling the IOFACService.OFACScanNameFullRecord(...) method", e.getMessage(), true);
        }
        return status;
    }

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <OFACScanNameFullRecordResponse xmlns="http://tempuri.org/">
         <OFACScanNameFullRecordResult xmlns:a="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.OFACScan" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <errorMessage i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService"/>
            <entities>
               <fullEntity>
                  <entityNumber>16</entityNumber>
                  <fullName>AIMAN AMMAR</fullName>
                  <entityType i:nil="true"/>
                  <country>US</country>
                  <listType>bis_dpl</listType>
                  <guid>65a732e8-3059-41a7-b714-57d8d31cdcc9</guid>
                  <score>80</score>
                  <program>BIS DPL List</program>
                  <remarks/>
                  <sdnType/>
                  <title/>
                  <callSign/>
                  <vessType/>
                  <vessTonnage/>
                  <vessGRT/>
                  <vessFlag/>
                  <vessOwner/>
                  <dob/>
                  <pob/>
                  <passport/>
                  <cedula/>
                  <citizen/>
                  <additionalAddress>
                     <entityAddress>
                        <address>1265 CAMDEN WAY</address>
                        <city>YUBA CITY</city>
                        <state>CA</state>
                        <postalCode/>
                        <country>US</country>
                        <addrRemarks i:nil="true"/>
                     </entityAddress>
                  </additionalAddress>
                  <additionalAlias>
                     <entityAlias>
                        <fullName>EL-MASRI, Moshir</fullName>
                        <entType>aka</entType>
                        <remarks/>
                     </entityAlias>
                     <entityAlias>
                        <fullName>AL-HABAL, Mushir</fullName>
                        <entType>individual</entType>
                        <remarks/>
                     </entityAlias>
               </fullEntity>           
            </entities>
         </OFACScanNameFullRecordResult>
      </OFACScanNameFullRecordResponse>
   </s:Body>
</s:Envelope>

Checks an individual’s name or company’s name along with country against the Office of Foreign Assets Control’s (OFAC) SDN watch list, Bureau of Industry and Security’s (BIS) Denied Person’s list and the Non-SDN list (NS-PLC) and retrieve the full list information for that search.

Request

Parameter Type Description
token string the session token returned by the Logon call
name string full name for search query
country string country for search query

Response

Parameter Type Description
entityNumber integer A unique number within the list or index of results list. Two records having the same entityNumber means the has addresses in two different coutries or an entity has an alternative identity - the entity is known by another name).
fullname string The full name of the entity.
nameForProcessing string The adjusted entity name that was used for matching.
nameInAscii string The ASCII equivalent of the name.
entityType string Identifies the entity as an individual, aircraft, vessel, etc.
country string The origin country.
listType string The list in which it apears. Abreviations may be used, e.g. "sdn" for "Specially Designated Nationals", "bis_dpl" for "Denied Persons List", "plc" for "Palestinian Legislative Council", etc.
guid string A temporary globaly unique identifier for referencing this entity. This identifier will changes hourly.
score double An indicator with values between 80 and 100 of the matching likelihood.
program string The name/abbreviation of the sanction program.
remarks string Additional information, if any, about the entiry.
sdnType string Currently it is the same as the entityType.
title string If the entity is an individual, the individual's title.
callSign string If the entity is a vessel, the vessel's call sign.
vessType string The vessel type, e.g. "Bulk Cargo", "Container Ship", "Ferry", etc.
vessTonnage string The vessel's tonnage.
vessGRT string The vessel's gross registered tonnage.
vessFlag string The vessel's flag.
vessOwner string The vessel's owner.
dob string date of birth of the entity (blank)
passport string If an entity is an individual, this is the pasport number.
additionalAddress Object List A list of addresses the entity is known to posses.
- address string The full address for the additional address.
- city string The city for the additional address.
- state string The state for the additional address.
- postalCode string The postal code for the additional address.
- country string The country for the additional address.
- addrRemarks string Additional information about the address.
additionalAlias Object List A list of alternative identities of the entity.
- fullName string The full name of the entity.
- entType string Identifies the entity as a person, business, vessel, etc.
- remarks string Additional information about the address.

Error Messages

Message Description
Internal system error - 167 Internal system error, please contact system admin
Internal system error - 214 Error looking up country name
Internal system error - 240 Error looking up country code
Must pass either a name and/or a valid country name or its 2-letter code when searching. [XX] is not a valid country code. Invalid country code
Must pass a name when searching. Empty search name
Must pass either a name and/or a valid country name or its 2-letter code when searching invalid search parameters

RTN

/**
 *
 *    You can find fully functional example client project here.
 *    Unzip the file and follow the instructions in the ReadMe.txt in the main folder.
 *
 */
/**
 *
 *    You can find fully functional example client project here.
 *
 *  The following code sample is for the ABA Web Service only the designated Express functions will work
 *  with the RTN Service.
 *
 *    Unzip the file and follow the instructions in the ReadMe.txt in the main folder.
 *
 * Alternativelly, you can build the libraries from the respective projects:        
 *        RTN  library project is here
 *
 */

The RTN Web Service API provides the most information about each institution including main and branch information with institution names, routing numbers, addresses, phone numbers and much more. Currently the RTN service provides information for both US and Canadian financial institutions.

Lyons will determine if the routing number is currently active, and will return the routing and demographic information for the institution associated with the searched routing number.

Check under each code language tab for example projects that demonstrate how to correctly use the web service contracts and proper configurations for the service and the method calls.

WSDL Url

lyonsreg.com/webservices/rtn/RTNServiceWCF.svc?singleWsdl

Error Messages

Message Description
Internal server error Internal Application Error, contact system admin
No financial institutions found No financial institutions found for that ABA

VerifyRTN

my $url = "https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc?singleWsdl";
my @params = ( SOAP::Data->name(token => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'),
               SOAP::Data->name(rtn => 'xxxxxxxxx'),
               SOAP::Data->name(country => 'CA'),
               SOAP::Data->name(includeInactives => false),
               SOAP::Data->name(includeHistory => false));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf '%IRTNService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->VerifyRTN(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc");
try{
    using (ChannelFactory<IRTNService> fact = new ChannelFactory<IRTNService>(myBinding, myEndpoint))
    {
        IRTNService rtnSvc = fact.CreateChannel();
        BooleanResponse response = rtnSvc.VerifyRTN(token, aba, country, includeInactives, includeHistory);
    }
}
catch(Exception ex){ }
    def _verifyRTN(token, rtn, country, includeInactives, includeHistory):        
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <VerifyRTN xmlns="https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc">
                    <token>%s</token>
                    <rtn>%s</rtn>
                    <country>%s</country>
                    <includeInactives>%s</includeInactives>
                    <includeHistory>%s</includeHistory>
                </VerifyRTN>
            </soap:Body>
        </soap:Envelope>""" % (token,aba)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc",in_xml)
        doc=xml.dom.minidom.parseString(result_xml)
        response=doc.getElementsByTagName('VerifyRTNResponse')[0].firstChild.data
        return response

        if __name__=='__main__':
        #Quick Tests
        response= _verifyRTN('token','aba','country','includeHistory')
    public boolean call(IABAService svc, String token, String rtn, String country, Boolean includeInactives, Boolean includeHistory)
            throws StopProcesingException {
        boolean valid = false;
        try {
            BooleanResult res = svc.verifyABA(token, rtn, country, includeInactives, includeHistory);
            Assert.notNull(res, "The returned BooleanResult is null");
            valid = res.isValue();
        } catch (ServerSOAPFaultException ex) {
            handleFault("IRTNService.verifyRTN(...) returned and error", ex, false);
        } catch (Exception e) {
            log.error("General exception when calling IRTNService.verifyRTN(...) method", e);
            handleError("Error calling the IRTNService.verifyRTN(...) method", e.getMessage(), true);
        }
        return ivalid;
    }

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <VerifyRTNResponse xmlns="http://tempuri.org/">
         <VerifyRTNResult xmlns:a="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <errorMessage i:nil="true"/>
            <value>true</value>
         </VerifyRTNResult>
      </VerifyRTNResponse>
   </s:Body>
</s:Envelope>

Lookup Routing Number on Lyons Server and return true if found.

Request

Parameter Type Description
token string the session token returned by the Logon call
rtn string routing number to search
country string country code to search ('US' or 'CA')
includeInactives boolean flag to determin if search should include inactive routing numbers
includeHistory boolean flag to determine if old routing numbers should be included in search

Response

Parameter Type Description
status boolean Status of routing number

VerifyWire(RTN)

my $url = "https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc?singleWsdl";
my @params = ( SOAP::Data->name(token => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'),
               SOAP::Data->name(rtn => 'xxxxxxxxx'),
               SOAP::Data->name(country => 'CA'),
               SOAP::Data->name(includeInactives => false),
               SOAP::Data->name(includeHistory => false));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf '%IRTNService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->VerifyWire(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc");
try{
    using (ChannelFactory<IRTNService> fact = new ChannelFactory<IRTNService>(myBinding, myEndpoint))
    {
        IRTNService rtnSvc = fact.CreateChannel();
        BooleanResponse response = rtnSvc.VerifyWire(token, aba, country, includeInactives, includeHistory);
    }
}
catch(Exception ex){ }
    def _verifyWire(token, rtn, country, includeInactives, includeHistory):        
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <VerifyWire xmlns="https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc">
                    <token>%s</token>
                    <rtn>%s</rtn>
                    <country>%s</country>
                    <includeInactives>%s</includeInactives>
                    <includeHistory>%s</includeHistory>
                </VerifyWire>
            </soap:Body>
        </soap:Envelope>""" % (token,aba)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc",in_xml)
        doc=xml.dom.minidom.parseString(result_xml)
        response=doc.getElementsByTagName('VerifyWireResponse')[0].firstChild.data
        return response

        if __name__=='__main__':
        #Quick Tests
        response= _verifyWire('token','aba','country','includeInactives','includeHistory')
    public boolean call(IABAService svc, String token, String rtn, String country, Boolean includeInactives, Boolean includeHistory)
            throws StopProcesingException {
        boolean valid = false;
        try {
            BooleanResult res = svc.verifyABA(token, rtn, country, includeInactives, includeHistory);
            Assert.notNull(res, "The returned BooleanResult is null");
            valid = res.isValue();
        } catch (ServerSOAPFaultException ex) {
            handleFault("IRTNService.verifyWire(...) returned and error", ex, false);
        } catch (Exception e) {
            log.error("General exception when calling IRTNService.verifyWire(...) method", e);
            handleError("Error calling the IRTNService.verifyWire(...) method", e.getMessage(), true);
        }
        return ivalid;
    }

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <VerifyWireResponse xmlns="http://tempuri.org/">
         <VerifyWireResult xmlns:a="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <errorMessage i:nil="true"/>
            <value>true</value>
         </VerifyWireResult>
      </VerifyWireResponse>
   </s:Body>
</s:Envelope>

Lookup the Routing Number as a wire on Lyons Server and return true if found.

Request

Parameter Type Description
token string the session token returned by the Logon call
rtn string routing number to search
country string country code to search ('US' or 'CA')
includeInactives boolean flag to determine if inactive routing numbers should be included in search
includeHistory boolean flag to determine if old routing numbers should be included in search

Response

Parameter Type Description
status boolean Status of routing number

GetInstitutionsDetails(RTN)

my $url = "https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc?singleWsdl";
my @params = ( SOAP::Data->name(token => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'),
               SOAP::Data->name(rtn => 'xxxxxxxxx'),
               SOAP::Data->name(country => 'CA'),
               SOAP::Data->name(includeInactives => false),
               SOAP::Data->name(includeWireSearch => false),
               SOAP::Data->name(includeHistory => false));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf '%IRTNService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->GetInstitutionsDetails(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc");
try{
    using (ChannelFactory<IRTNService> fact = new ChannelFactory<IRTNService>(myBinding, myEndpoint))
    {
        IRTNService rtnSvc = fact.CreateChannel();
        InstitutionListResponse response = rtnSvc.GetInstitutionsDetails(token, aba, country,includeInactives, includeWireSearch, includeHistory);
    }
}
catch(Exception ex){ }
    def _getInstitutionsDetails(token, rtn, country, includeInactives, includeWireSearch, includeHistory):        
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <GetInstitutionsDetails xmlns="https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc">
                    <token>%s</token>
                    <rtn>%s</rtn>
                    <country>%s</country>
                    <includeInactives>%s</includeInactives>
                    <includeWireSearch>%s</includeWireSearch>
                    <includeHistory>%s</includeHistory>
                </GetInstitutionsDetails>
            </soap:Body>
        </soap:Envelope>""" % (token,aba)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc",in_xml)
        doc=xml.dom.minidom.parseString(result_xml)
        response=doc.getElementsByTagName('GetInstitutionsDetailsResponse')[0].firstChild.data
        return response

        if __name__=='__main__':
        #Quick Tests
        response= _getInstitutionsDetails('token','aba','country','includeInactives','includeWireSearch','includeHistory')
    public List<Institution> call(IRTNService svc, String token, String rtn, String country, Boolean includeInactives,Boolean includeWireSearch, Boolean includeHistory)
            throws StopProcesingException {
        InstitutionList instLst = null;
        try {
            InstitutionListResult res = svc.getInstitutionsDetails(token, rtn, country, includeHistory);
            Assert.notNull(res, "The returned InstitutionListResult is null");
            instLst = res.getInstitutions();
            Assert.notNull(instLst, "The returned InstitutionList is null");
        } catch (ServerSOAPFaultException ex) {
            handleFault("IRTNService.getInstitutionsDetails(...) returned and error", ex, false);
        } catch (Exception e) {
            log.error("General exception when calling IRTNService.getInstitutionsDetails(...) method", e);
            handleError("Error calling the IRTNService.getInstitutionsDetails(...) method", e.getMessage(), true);
        }
        return instLst.getInstitution();
    }

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <GetInstitutionsDetailsResponse xmlns="http://tempuri.org/">
         <GetInstitutionsDetailsResult xmlns:a="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.RTNServiceContract" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <errorMessage i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService"/>
            <institutions>
               <institution>
                  <lyonsId>1</lyonsId>
                  <mainBranchId>0</mainBranchId>
                  <name>AMEX BANK OF CANADA</name>
                  <branchName i:nil="true"/>
                  <address1>101 McNabb Street</address1>
                  <address2 i:nil="true"/>
                  <city>Markham</city>
                  <state>ON</state>
                  <country>CA</country>
                  <postalCode>L3R 4H8</postalCode>
                  <correspondents>
                     <correspondent>
                        <account>1234567890</account>
                        <name>BANK OF CHINA (CANADA)</name>
                        <routingNumber>030800022</routingNumber>
                     </correspondent>
                  </correspondents>
                  <routingNumbers>
                     <institutionRoutingNumber>
                        <routingNumber>xxxxxxxx</routingNumber>
                        <purpose>Paper</purpose>
                        <notes i:nil="true"/>
                        <useForTransactions>true</useForTransactions>
                        <history>
                           <routingNumberHistory>
                              <archivedDate>2017-10-11T13:48:29.133</archivedDate>
                              <datePublished>2017-10-02T12:50:14.01</datePublished>
                              <purpose>Paper</purpose>
                              <routingNumber>xxxxxxxx</routingNumber>
                           </routingNumberHistory>                          
                        </history>
                     </institutionRoutingNumber>
                     <institutionRoutingNumber>
                        <routingNumber>xxxxxxxx</routingNumber>
                        <purpose>Paper</purpose>
                        <notes i:nil="true"/>
                        <useForTransactions>true</useForTransactions>
                        <history/>
                     </institutionRoutingNumber>
                     <institutionRoutingNumber>
                        <routingNumber>xxxxx-xxx</routingNumber>
                        <purpose>Electronic</purpose>
                        <notes i:nil="true"/>
                        <useForTransactions>true</:useForTransactions>
                        <history/>
                     </institutionRoutingNumber>
                     <institutionRoutingNumber>
                        <routingNumber>xxxxx-xxx</routingNumber>
                        <purpose>Electronic</purpose>
                        <notes i:nil="true"/>
                        <useForTransactions>true</useForTransactions>
                        <history/>
                     </institutionRoutingNumber>
                  </routingNumbers>
                  <contacts>
                     <contact>
                        <contactType>Institution</contactType>
                        <name i:nil="true"/>
                        <email i:nil="true"/>
                        <phoneNumber>800-841-4000</phoneNumber>
                        <Extension i:nil="true"/>
                     </contact>
                     <contact>
                        <contactType>Customer Service</contactType>
                        <name i:nil="true"/>
                        <email i:nil="true"/>
                        <phoneNumber>800-841-4000</phoneNumber>
                        <Extension i:nil="true"/>
                     </contact>
                  </contacts>
                  <fedWire i:nil="true"/>
                  <swift i:nil="true"/>
                  <fullFractional i:nil="true"/>
                  <fax i:nil="true"/>                  
                  <telex i:nil="true"/>
                  <homePage i:nil="true"/>
                  <notes i:nil="true"/>
                  <lyonsNote i:nil="true"/>
                  <financialInstitutionID>303</financialInstitutionID>
                  <institutionType>Banks</institutionType>
               </institution>
            </institutions>
         </GetInstitutionsDetailsResult>
      </GetInstitutionsDetailsResponse>
   </s:Body>
</s:Envelope>

Returns a list of financial institutions with full details for an Routing number.

The mainBranchId attribute in the returned institution objects has the following meaning:

Request

Parameter Type Description
token string the session token returned by the Logon call
rtn string routing number to search
country string country code to search ('US' or 'CA')
includeInactives boolean flag to determine if inactive routing numbers should be included in search
includeHistory boolean flag to determine if old routing numbers should be included in search
includeWireSearch boolean flag to determine if Wire routing numbers should be included in the search

Response

Parameter Type Description
lyonsId int The lyons idetification number associated with the institution
mainBranchId int The lyons idetification number associated with this institutions main branch
name string Complete name of the financial institution
branchName string individual branch name of the financial institution
address1 string Physical Address Line 1
address2 string Physical Address Line 2
city string City or Province
state string State
country string Country
postalCode string Zip Code or Postal Code
correspondents array list of correspondent institutions associated with this branches routing number
- account string Correspondent Account Number
- financialInstitutionName string Institution Name
- routingNumber string Routing Number
- purpose string The application of this routing number Electronic, Paper, or Wire
- notes string Notes for particular routing number
routingNumbers array list of routingNumber objects that are connected with this institution
- routingNumber string Routing Number
- purpose string The application of this routing number Electronic, Paper, or Wire
- notes string Notes for particular routing number
- active boolean if this is an active routing number
- useForTransactions boolean If this routing number is used for transactions
- history Array A list of previous routing numbers for this record
-- archivedDate dateTime The date this routing number was changed
-- datePublished dateTime The date this routing number was originally entered in
-- lyonsId int The lyons idetification number associated with the institution
-- routingNumber string Routing Number
-- purpose string The application of this routing number Electronic, Paper, or Wire
-- active boolean If this is an active routing number
-- useForTransactions boolean If this routing number is used for transactions
contacts array list of contacts that are connected with this institution
- contactType string Contact Type (Institution, Return, Adjust, Wire, Customer Service, ACH, Wire, OFCR)
- name string name for contact
- email string Primary or corporate e-mail address for contact
- phoneNumber string phone number for contact
- extension string phone number Extension for contact
fedWire boolean FedWire participation indicator
swift string SWIFT identifier
fullFractional string
fax string Main Fax Number
telex string TELEX identifier
homePage string Institution’s Internet home page / URL
notes string Account Notes
lyonsNote string Additional notes
financialInstitutionID int Special institution ID most commonly associated with Canadian Institutions
institutionType string The category for the institution Type

GetInstitutionsDetailsPrimaryFirst(RTN)

my $url = "https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc?singleWsdl";
my @params = ( SOAP::Data->name(token => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'),
               SOAP::Data->name(rtn => 'xxxxxxxxx'),
               SOAP::Data->name(country => 'CA'),
               SOAP::Data->name(includeInactives => false),
               SOAP::Data->name(includeHistory => false));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf '%IRTNService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->GetInstitutionsDetailsPrimaryFirst(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc");
try{
    using (ChannelFactory<IRTNService> fact = new ChannelFactory<IRTNService>(myBinding, myEndpoint))
    {
        IRTNService rtnSvc = fact.CreateChannel();
        InstitutionListResponse response = rtnSvc.GetInstitutionsDetailsPrimaryFirst(token, aba, country, includeInactives, includeHistory);
    }
}
catch(Exception ex){ }
    def _GetInstitutionsDetailsPrimaryFirst(token, rtn, country, includeInactives, includeHistory):        
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <GetInstitutionsDetailsPrimaryFirst xmlns="https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc">
                    <token>%s</token>
                    <rtn>%s</rtn>
                    <country>%s</country>
                    <includeInactives>%s</includeInactives>
                    <includeHistory>%s</includeHistory>
                </GetInstitutionsDetailsPrimaryFirst>
            </soap:Body>
        </soap:Envelope>""" % (token,aba)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc",in_xml)
        doc=xml.dom.minidom.parseString(result_xml)
        response=doc.getElementsByTagName('GetInstitutionsDetailsPrimaryFirstResponse')[0].firstChild.data
        return response

        if __name__=='__main__':
        #Quick Tests
        response= _GetInstitutionsDetailsPrimaryFirst('token','aba','country','includeInactives','includeHistory')
    public List<Institution> call(IRTNService svc, String token, String rtn, String country, Boolean includeInactives, Boolean includeHistory)
            throws StopProcesingException {
        InstitutionList instLst = null;
        try {
            InstitutionListResult res = svc.GetInstitutionsDetailsPrimaryFirst(token, rtn, country, includeInactives, includeWireSearch, includeHistory);
            Assert.notNull(res, "The returned InstitutionListResult is null");
            instLst = res.getInstitutions();
            Assert.notNull(instLst, "The returned InstitutionList is null");
        } catch (ServerSOAPFaultException ex) {
            handleFault("IRTNService.GetInstitutionsDetailsPrimaryFirst(...) returned and error", ex, false);
        } catch (Exception e) {
            log.error("General exception when calling IRTNService.GetInstitutionsDetailsPrimaryFirst(...) method", e);
            handleError("Error calling the IRTNService.GetInstitutionsDetailsPrimaryFirst(...) method", e.getMessage(), true);
        }
        return instLst.getInstitution();
    }

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <GetInstitutionsDetailsPrimaryFirstResponse xmlns="http://tempuri.org/">
         <GetInstitutionsDetailsPrimaryFirstResult xmlns:a="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.RTNServiceContract" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <errorMessage i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService"/>
            <institutions>
               <institutions>
               <institution>
                  <lyonsId>1</lyonsId>
                  <mainBranchId>0</mainBranchId>
                  <name>AMEX BANK OF CANADA</name>
                  <branchName i:nil="true"/>
                  <address1>101 McNabb Street</address1>
                  <address2 i:nil="true"/>
                  <city>Markham</city>
                  <state>ON</state>
                  <country>CA</country>
                  <postalCode>L3R 4H8</postalCode>
                  <correspondents>
                     <correspondent>
                        <account>1234567890</account>
                        <name>BANK OF CHINA (CANADA)</name>
                        <routingNumber>030800022</routingNumber>
                     </correspondent>
                  </correspondents>
                  <routingNumbers>
                     <institutionRoutingNumber>
                        <routingNumber>xxxxxxxx</routingNumber>
                        <purpose>Paper</purpose>
                        <notes i:nil="true"/>
                        <useForTransactions>true</useForTransactions>
                        <history>
                           <routingNumberHistory>
                              <archivedDate>2017-10-11T13:48:29.133</archivedDate>
                              <datePublished>2017-10-02T12:50:14.01</datePublished>
                              <purpose>Paper</purpose>
                              <routingNumber>xxxxxxxx</routingNumber>
                           </routingNumberHistory>                          
                        </history>
                     </institutionRoutingNumber>
                     <institutionRoutingNumber>
                        <routingNumber>xxxxxxxx</routingNumber>
                        <purpose>Paper</purpose>
                        <notes i:nil="true"/>
                        <useForTransactions>true</useForTransactions>
                        <history/>
                     </institutionRoutingNumber>
                     <institutionRoutingNumber>
                        <routingNumber>xxxxx-xxx</routingNumber>
                        <purpose>Electronic</purpose>
                        <notes i:nil="true"/>
                        <useForTransactions>true</:useForTransactions>
                        <history/>
                     </institutionRoutingNumber>
                     <institutionRoutingNumber>
                        <routingNumber>xxxxx-xxx</routingNumber>
                        <purpose>Electronic</purpose>
                        <notes i:nil="true"/>
                        <useForTransactions>true</useForTransactions>
                        <history/>
                     </institutionRoutingNumber>
                  </routingNumbers>
                  <contacts>
                     <contact>
                        <contactType>Institution</contactType>
                        <name i:nil="true"/>
                        <email i:nil="true"/>
                        <phoneNumber>800-841-4000</phoneNumber>
                        <Extension i:nil="true"/>
                     </contact>
                     <contact>
                        <contactType>Customer Service</contactType>
                        <name i:nil="true"/>
                        <email i:nil="true"/>
                        <phoneNumber>800-841-4000</phoneNumber>
                        <Extension i:nil="true"/>
                     </contact>
                  </contacts>
                  <fedWire i:nil="true"/>
                  <swift i:nil="true"/>
                  <fullFractional i:nil="true"/>
                  <fax i:nil="true"/>                  
                  <telex i:nil="true"/>
                  <homePage i:nil="true"/>
                  <notes i:nil="true"/>
                  <lyonsNote i:nil="true"/>
                  <financialInstitutionID>303</financialInstitutionID>
                  <institutionType>Banks</institutionType>
               </institution>
            </institutions>
         </GetInstitutionsDetailsPrimaryFirstResult>
      </GetInstitutionsDetailsPrimaryFirstResponse>
   </s:Body>
</s:Envelope>

Returns a list of financial institutions with full details for an RTN sorted by main locations first.

The mainBranchId attribute in the returned institution objects has the following meaning:

Request

Parameter Type Description
token string the session token returned by the Logon call
rtn string routing number to search
country string country code to search ('US' or 'CA')
includeInactives boolean flag to determine if inactive routing numbers should be included in search
includeHistory boolean flag to determine if old routing numbers should be included in search

Response

Parameter Type Description
lyonsId int The lyons idetification number associated with the institution
mainBranchId int The lyons idetification number associated with this institutions main branch
name string Complete name of the financial institution
branchName string individual branch name of the financial institution
address1 string Physical Address Line 1
address2 string Physical Address Line 2
city string City or Province
state string State
country string Country
postalCode string Zip Code or Postal Code
correspondents array list of correspondent institutions associated with this branches routing number
- account string Correspondent Account Number
- financialInstitutionName string Institution Name
- routingNumber string Routing Number
- purpose string The application of this routing number Electronic, Paper, or Wire
- notes string Notes for particular routing number
routingNumbers array list of routingNumber objects that are connected with this institution
- routingNumber string Routing Number
- purpose string The application of this routing number Electronic, Paper, or Wire
- notes string Notes for particular routing number
- useForTransactions boolean If this routing number is used for transactions
- active boolean If this routing number is active
- history Array A list of previous routing numbers for this record
-- archivedDate dateTime The date this routing number was changed
-- datePublished dateTime The date this routing number was originally entered in
-- lyonsId int The lyons idetification number associated with the institution
-- routingNumber string Routing Number
-- purpose string The application of this routing number Electronic, Paper, or Wire
-- active boolean If this routing number is active
-- useForTransactions boolean If this routing number is used for transactions
contacts array list of contacts that are connected with this institution
- contactType string Contact Type (Institution, Return, Adjust, Wire, Customer Service, ACH, Wire, OFCR)
- name string name for contact
- email string Primary or corporate e-mail address for contact
- phoneNumber string phone number for contact
- Extension string phone number Extension for contact
fedWire boolean FedWire participation indicator
swift string SWIFT identifier
fullFractional string
fax string Main Fax Number
telex string TELEX identifier
homePage string Institution’s Internet home page / URL
notes string Account Notes
lyonsNote string Additional notes
financialInstitutionID int Special institution ID most commonly associated with Canadian Institutions
institutionType string The category for the institution Type

GetUSPrimaryInstitutionDetails(RTN)

my $url = "https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc?singleWsdl";
my @params = ( SOAP::Data->name(token => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'),
               SOAP::Data->name(rtn => 'xxxxxxxxx'),
               SOAP::Data->name(includeInactives => false),
               SOAP::Data->name(includeWireSearch => false),
               SOAP::Data->name(includeHistory => false));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf '%IRTNService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->GetUSPrimaryInstitutionDetails(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc");
try{
    using (ChannelFactory<IRTNService> fact = new ChannelFactory<IRTNService>(myBinding, myEndpoint))
    {
        IRTNService rtnSvc = fact.CreateChannel();
        InstitutionListResponse response = rtnSvc.GetUSPrimaryInstitutionDetails(token, rtn, includeInactives, includeWireSearch, includeHistory);
    }
}
catch(Exception ex){ }
    def _getUSPrimaryInstitutionDetails(token, rtn, includeInactives,includeWireSearch, includeHistory):        
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <GetUSPrimaryInstitutionDetails xmlns="https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc">
                    <token>%s</token>
                    <rtn>%s</rtn>
                    <includeInactives>%s</includeInactives>
                    <includeWireSearch>%s</includeWireSearch>
                    <includeHistory>%s</includeHistory>
                </GetUSPrimaryInstitutionDetails>
            </soap:Body>
        </soap:Envelope>""" % (token,aba)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc",in_xml)
        doc=xml.dom.minidom.parseString(result_xml)
        response=doc.getElementsByTagName('GetUSPrimaryInstitutionDetailsResponse')[0].firstChild.data
        return response

        if __name__=='__main__':
        #Quick Tests
        response= _getUSPrimaryInstitutionDetails('token','aba','includeWireSearch','includeHistory')
    public List<Institution> call(IRTNService svc, String token, String rtn, String country, Boolean includeInactives, Boolean includeWireSearch, Boolean includeHistory)
            throws StopProcesingException {
        InstitutionList instLst = null;
        try {
            InstitutionListResult res = svc.getUSPrimaryInstitutionDetails(token, rtn, country, includeInactives, includeWireSearch, includeHistory);
            Assert.notNull(res, "The returned InstitutionListResult is null");
            instLst = res.getInstitutions();
            Assert.notNull(instLst, "The returned InstitutionList is null");
        } catch (ServerSOAPFaultException ex) {
            handleFault("IRTNService.getUSPrimaryInstitutionDetails(...) returned and error", ex, false);
        } catch (Exception e) {
            log.error("General exception when calling IRTNService.getUSPrimaryInstitutionDetails(...) method", e);
            handleError("Error calling the IRTNService.getUSPrimaryInstitutionDetails(...) method", e.getMessage(), true);
        }
        return instLst.getInstitution();
    }

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <GetUSPrimaryInstitutionDetailsResponse xmlns="http://tempuri.org/">
         <GetUSPrimaryInstitutionDetailsResult xmlns:a="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.ABAServiceContract" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <errorMessage i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService"/>
            <institutions>
               <institution>
                  <lyonsId>1</lyonsId>
                  <mainBranchId>0</mainBranchId>
                  <name>AMEX BANK OF CANADA</name>
                  <branchName i:nil="true"/>
                  <address1>101 McNabb Street</address1>
                  <address2 i:nil="true"/>
                  <city>Markham</city>
                  <state>ON</state>
                  <country>CA</country>
                  <postalCode>L3R 4H8</postalCode>
                  <correspondents>
                     <correspondent>
                        <account>1234567890</account>
                        <name>BANK OF CHINA (CANADA)</name>
                        <routingNumber>030800022</routingNumber>
                     </correspondent>
                  </correspondents>
                  <routingNumbers>
                     <institutionRoutingNumber>
                        <routingNumber>xxxxxxxx</routingNumber>
                        <purpose>Paper</purpose>
                        <notes i:nil="true"/>
                        <useForTransactions>true</useForTransactions>
                        <history>
                           <routingNumberHistory>
                              <archivedDate>2017-10-11T13:48:29.133</archivedDate>
                              <datePublished>2017-10-02T12:50:14.01</datePublished>
                              <purpose>Paper</purpose>
                              <routingNumber>xxxxxxxx</routingNumber>
                           </routingNumberHistory>                          
                        </history>
                     </institutionRoutingNumber>
                     <institutionRoutingNumber>
                        <routingNumber>xxxxxxxx</routingNumber>
                        <purpose>Paper</purpose>
                        <notes i:nil="true"/>
                        <useForTransactions>true</useForTransactions>
                        <history/>
                     </institutionRoutingNumber>
                     <institutionRoutingNumber>
                        <routingNumber>xxxxx-xxx</routingNumber>
                        <purpose>Electronic</purpose>
                        <notes i:nil="true"/>
                        <useForTransactions>true</:useForTransactions>
                        <history/>
                     </institutionRoutingNumber>
                     <institutionRoutingNumber>
                        <routingNumber>xxxxx-xxx</routingNumber>
                        <purpose>Electronic</purpose>
                        <notes i:nil="true"/>
                        <useForTransactions>true</useForTransactions>
                        <history/>
                     </institutionRoutingNumber>
                  </routingNumbers>
                  <contacts>
                     <contact>
                        <contactType>Institution</contactType>
                        <name i:nil="true"/>
                        <email i:nil="true"/>
                        <phoneNumber>800-841-4000</phoneNumber>
                        <Extension i:nil="true"/>
                     </contact>
                     <contact>
                        <contactType>Customer Service</contactType>
                        <name i:nil="true"/>
                        <email i:nil="true"/>
                        <phoneNumber>800-841-4000</phoneNumber>
                        <Extension i:nil="true"/>
                     </contact>
                  </contacts>
                  <fedWire i:nil="true"/>
                  <swift i:nil="true"/>
                  <fullFractional i:nil="true"/>
                  <fax i:nil="true"/>                  
                  <telex i:nil="true"/>
                  <homePage i:nil="true"/>
                  <notes i:nil="true"/>
                  <lyonsNote i:nil="true"/>
                  <financialInstitutionID>303</financialInstitutionID>
                  <institutionType>Banks</institutionType>
               </institution>
            </institutions>
         </GetUSPrimaryInstitutionDetailsResult>
      </GetUSPrimaryInstitutionDetailsResponse>
   </s:Body>
</s:Envelope>

Returns a list of main locations for US financial institutions with full details for an Routing Numbers.

The mainBranchId attribute in the returned institution objects has the following meaning:

Request

Parameter Type Description
token string the session token returned by the Logon call
rtn string routing number to search
includeInactives boolean flag to determine if inactive routing numbers should be included in the search
includeHistory boolean flag to determine if old routing numbers should be included in search
includeWireSearch boolean flag to determine if Wire routing numbers should be included in the search

Response

Parameter Type Description
lyonsId int The lyons idetification number associated with the institution
mainBranchId int The lyons idetification number associated with this institutions main branch
name string Complete name of the financial institution
branchName string individual branch name of the financial institution
address1 string Physical Address Line 1
address2 string Physical Address Line 2
city string City or Province
state string State
country string Country
postalCode string Zip Code or Postal Code
correspondents array list of correspondent institutions associated with this branches routing number
- account string Correspondent Account Number
- financialInstitutionName string Institution Name
- routingNumber string Routing Number
- purpose string The application of this routing number Electronic, Paper, or Wire
- notes string Notes for particular routing number
routingNumbers array list of routingNumber objects that are connected with this institution
- routingNumber string Routing Number
- purpose string The application of this routing number Electronic, Paper, or Wire
- notes string Notes for particular routing number
- useForTransactions boolean If this routing number is used for transactions
- active boolean If this routing number is active
- history Array A list of previous routing numbers for this record
-- archivedDate dateTime The date this routing number was changed
-- datePublished dateTime The date this routing number was originally entered in
-- lyonsId int The lyons idetification number associated with the institution
-- routingNumber string Routing Number
-- purpose string The application of this routing number Electronic, Paper, or Wire
-- active boolean If this routing number is active
-- useForTransactions boolean If this routing number is used for transactions
contacts array list of contacts that are connected with this institution
- contactType string Contact Type (Institution, Return, Adjust, Wire, Customer Service, ACH, Wire, OFCR)
- name string name for contact
- email string Primary or corporate e-mail address for contact
- phoneNumber string phone number for contact
- Extension string phone number Extension for contact
fedWire boolean FedWire participation indicator
swift string SWIFT identifier
fullFractional string
fax string Main Fax Number
telex string TELEX identifier
homePage string Institution’s Internet home page / URL
notes string Account Notes
lyonsNote string Additional notes
financialInstitutionID int Special institution ID most commonly associated with Canadian Institutions
institutionType string The category for the institution Type

GetInstitutionDetailsByLyonsId(RTN)

my $url = "https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc?singleWsdl";
my @params = ( SOAP::Data->name(token => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'),
               SOAP::Data->name(lyonsId => '1'),
               SOAP::Data->name(includeHistory => false));

my $soap = SOAP::Lite
-> uri($uri)
-> on_action(sub { sprintf '%IRTNService/%s', @_ })
-> proxy($url)
->autotype(0)->readable(1);

my $response = $soap->GetInstitutionDetailsByLyonsId(SOAP::Data->@params);
var myBinding = new BasicHttpBinding();
var myEndpoint = new EndpointAddress("https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc");
try{
    using (ChannelFactory<IRTNService> fact = new ChannelFactory<IRTNService>(myBinding, myEndpoint))
    {
        IRTNService rtnSvc = fact.CreateChannel();
        InstitutionListResponse response = rtnSvc.GetInstitutionDetailsByLyonsId(token, lyonsId, includeHistory);
    }
}
catch(Exception ex){ }
    def _getInstitutionDetailsByLyonsId(token, aba):        
        in_xml="""\
        <?xml version="1.0" encoding="utf-8"?>
        <soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
            <soap:Header/>
            <soap:Body>
                <GetInstitutionDetailsByLyonsId xmlns="https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc">
                    <token>%s</token>
                    <lyonsId>%s</lyonsId>
                    <includeHistory>%s</includeHistory>
                </GetInstitutionDetailsByLyonsId>
            </soap:Body>
        </soap:Envelope>""" % (token,aba)
        result_xml=_SOAP_post("https://lyonsreg.com/webservices/rtn/RTNServiceWCF.svc",in_xml)
        doc=xml.dom.minidom.parseString(result_xml)
        response=doc.getElementsByTagName('GetInstitutionDetailsByLyonsId')[0].firstChild.data
        return response

        if __name__=='__main__':
        #Quick Tests
        response= _getInstitutionDetailsByLyonsId('token','lyonsId', 'includeHistory')
    public List<Institution> call(IRTNService svc, String token, long lyonsId, Boolean includeHistory)
            throws StopProcesingException {
        InstitutionList instLst = null;
        try {
            InstitutionListResult res = svc.getInstitutionDetailsByLyonsId(token, rtn, country, includeHistory);
            Assert.notNull(res, "The returned InstitutionListResult is null");
            instLst = res.getInstitutions();
            Assert.notNull(instLst, "The returned InstitutionList is null");
        } catch (ServerSOAPFaultException ex) {
            handleFault("IRTNService.getInstitutionDetailsByLyonsId(...) returned and error", ex, false);
        } catch (Exception e) {
            log.error("General exception when calling IRTNService.getInstitutionDetailsByLyonsId(...) method", e);
            handleError("Error calling the IRTNService.getInstitutionsDetails(...) method", e.getMessage(), true);
        }
        return instLst.getInstitution();
    }

The SOAP response is structured like this:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <GetInstitutionDetailsByLyonsIdResponse xmlns="http://tempuri.org/">
         <GetInstitutionDetailsByLyonsIdResult xmlns:a="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.RTNServiceContract" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <errorMessage i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/Autoscribe.Lyons.GeneralService"/>
            <institutions>
               <institution>
                  <lyonsId>1</lyonsId>
                  <mainBranchId>0</mainBranchId>
                  <name>AMEX BANK OF CANADA</name>
                  <branchName i:nil="true"/>
                  <address1>101 McNabb Street</address1>
                  <address2 i:nil="true"/>
                  <city>Markham</city>
                  <state>ON</state>
                  <country>CA</country>
                  <postalCode>L3R 4H8</postalCode>
                  <correspondents>
                     <correspondent>
                        <account>1234567890</account>
                        <name>BANK OF CHINA (CANADA)</name>
                        <routingNumber>030800022</routingNumber>
                     </correspondent>
                  </correspondents>
                  <routingNumbers>
                     <institutionRoutingNumber>
                        <routingNumber>xxxxxxxx</routingNumber>
                        <purpose>Paper</purpose>
                        <notes i:nil="true"/>
                        <useForTransactions>true</useForTransactions>
                        <history>
                           <routingNumberHistory>
                              <archivedDate>2017-10-11T13:48:29.133</archivedDate>
                              <datePublished>2017-10-02T12:50:14.01</datePublished>
                              <purpose>Paper</purpose>
                              <routingNumber>xxxxxxxx</routingNumber>
                           </routingNumberHistory>                          
                        </history>
                     </institutionRoutingNumber>
                     <institutionRoutingNumber>
                        <routingNumber>xxxxxxxx</routingNumber>
                        <purpose>Paper</purpose>
                        <notes i:nil="true"/>
                        <useForTransactions>true</useForTransactions>
                        <history/>
                     </institutionRoutingNumber>
                     <institutionRoutingNumber>
                        <routingNumber>xxxxx-xxx</routingNumber>
                        <purpose>Electronic</purpose>
                        <notes i:nil="true"/>
                        <useForTransactions>true</:useForTransactions>
                        <history/>
                     </institutionRoutingNumber>
                     <institutionRoutingNumber>
                        <routingNumber>xxxxx-xxx</routingNumber>
                        <purpose>Electronic</purpose>
                        <notes i:nil="true"/>
                        <useForTransactions>true</useForTransactions>
                        <history/>
                     </institutionRoutingNumber>
                  </routingNumbers>
                  <contacts>
                     <contact>
                        <contactType>Institution</contactType>
                        <name i:nil="true"/>
                        <email i:nil="true"/>
                        <phoneNumber>800-841-4000</phoneNumber>
                        <Extension i:nil="true"/>
                     </contact>
                     <contact>
                        <contactType>Customer Service</contactType>
                        <name i:nil="true"/>
                        <email i:nil="true"/>
                        <phoneNumber>800-841-4000</phoneNumber>
                        <Extension i:nil="true"/>
                     </contact>
                  </contacts>
                  <fedWire i:nil="true"/>
                  <swift i:nil="true"/>
                  <fullFractional i:nil="true"/>
                  <fax i:nil="true"/>                  
                  <telex i:nil="true"/>
                  <homePage i:nil="true"/>
                  <notes i:nil="true"/>
                  <lyonsNote i:nil="true"/>
                  <financialInstitutionID>303</financialInstitutionID>
                  <institutionType>Banks</institutionType>
               </institution>
            </institutions>
         </GetInstitutionDetailsByLyonsIdResult>
      </GetInstitutionDetailsByLyonsIdResponse>
   </s:Body>
</s:Envelope>

Returns a list of financial institutions with full details. Both Routing Number and wire routing numbers will be searched.

The mainBranchId attribute in the returned institution objects has the following meaning:

Request

Parameter Type Description
token string the session token returned by the Logon call
lyonId long LyonsId of institution
includeHistory boolean flag to determine if old routing numbers should be included in search

Response

Parameter Type Description
lyonsId int The lyons idetification number associated with the institution
mainBranchId int The lyons idetification number associated with this institutions main branch
name string Complete name of the financial institution
branchName string individual branch name of the financial institution
address1 string Physical Address Line 1
address2 string Physical Address Line 2
city string City or Province
state string State
country string Country
postalCode string Zip Code or Postal Code
correspondents array list of correspondent institutions associated with this branches routing number
- account string Correspondent Account Number
- financialInstitutionName string Institution Name
- routingNumber string Routing Number
- purpose string The application of this routing number Electronic, Paper, or Wire
- notes string Notes for particular routing number
routingNumbers array list of routingNumber objects that are connected with this institution
- routingNumber string Routing Number
- purpose string The application of this routing number Electronic, Paper, or Wire
- notes string Notes for particular routing number
- useForTransactions boolean If this routing number is used for transactions
- active boolean If this routing number is active
- history Array A list of previous routing numbers for this record
-- archivedDate dateTime The date this routing number was changed
-- datePublished dateTime The date this routing number was originally entered in
-- lyonsId int The lyons idetification number associated with the institution
-- routingNumber string Routing Number
-- purpose string The application of this routing number Electronic, Paper, or Wire
-- active boolean If this routing number is active
-- useForTransactions boolean If this routing number is used for transactions
contacts array list of contacts that are connected with this institution
- contactType string Contact Type (Institution, Return, Adjust, Wire, Customer Service, ACH, Wire, OFCR)
- name string name for contact
- email string Primary or corporate e-mail address for contact
- phoneNumber string phone number for contact
- Extension string phone number Extension for contact
fedWire boolean FedWire participation indicator
swift string SWIFT identifier
fullFractional string
fax string Main Fax Number
telex string TELEX identifier
homePage string Institution’s Internet home page / URL
notes string Account Notes
lyonsNote string Additional notes
financialInstitutionID int Special institution ID most commonly associated with Canadian Institutions
institutionType string The category for the institution Type