I always love a challenge when it comes to API development. Let me tell you Equifax was a challenge. It wasn’t like any usual API that most developers are used to like Stripe.com, ShipWire etc… that use standard JSON protocols. EquiFax used old school HTTPS Request. For those developers that have a client that needs API integration directly through Equifax will soon know the horror. :)

EquiFax will give you a 250 Page documentation with no to little help. Majority of the information in the documentation is dated / incorrect. The technical support person was great there was quick response when i had questions.

I’m going to write up this little tutorial to help out other developers, looking for Equifax API integration support.

You’re going to need a few things provided by equifax. Your client most likely signed a bunch of contracts and clauses to get the credentials you’re going to need. Once you received those you’re ready to start your project.

Making The Connection

By far this was the most complicated part of the project. It took me a couple of days, 20 cups of coffee, to figure it out now that I’m about to tell you the secret it seems pretty silly and simple. Almost like a wonderful magic trick.

You’re going to need to convert your password to BASE64 encryption using Authorization: Basic via Form post. Confused? ya… so was I.

Using curl you’re going to need to set your HTTPHEADER to Authorization: Basic.

That will allow a secure connection to their server. Walla Now we’re connected!

Making The Request

Now for sending the data. What i did was created an array with the data I wanted to send to their server. Below is an example: That’s pretty much it for sending. Now understanding the request.

     curl_setopt($post, CURLOPT_POST, count($data));

$data = array( 
	'site_id' => '555555', 
	'service_name' => 'test', 
//	'efx_request' => "DIALXXXXXXXXXX2ISTS52021B++P+++++++++IDNT++++++++++++++++++++XXXXXXXXXXXXXXX+I67++666944944FRANCIS+++++++++++++++++++++++AALOE++++++++++++++++++++++08011970+++++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++++++++++++++++++++++++++++++++++++++01AD4500++++++++WOLVERINE+++++++++++++++++RDHOUSTON+++++++++++++TX77082+++++++++++++++++++" 


Understanding the Request

There’s 2 ways to send a request. Personally the first option XML Request is what every developer will prefer we’re somewhat familiar with it. It’s the second choice from using JSON; However in my particular case i had to go with the DIAL / IDNT request. Becuase i had to create the application for both USA and Canada. Equifax USA can handle DIAL and XML where as Canada only handles DIAL.

Below is a sample DIAL request that would be sent to Equifax server, at first glance that makes you want to just throw up on your keyboard. Once you understand what’s going on it ALMOST makes some sense, still not logical how and why Equifax would want their request like that.

I’ll try to explain the DIAL request; each part of the request is a segment, each segment has (n) amount of characters. For example the NAME segment has 42 characters allowed and the Address has 23 characters and state has 2 characters etc… you get the point. If you fall below or above the set amount of characters in a specific segment you’re going to get a very vague error like CERR 4340495049 that’s it. LoL!!

How do you split up the request, ya this baffled me a bit too. At first i thought i had to write a complex formula to split up the segments and then count each one etc… by chance i found the PHP has a built in function called str_pad extremely useful.

Example Request:


That’s about it. Once you make the connection and put your request together you should receive a scribble response with no way for parsing it. Following example is a really basic response which returns the credit score and address. There more complex responses that returns everything about the person’s credit and payment history.

Example Response:

FULL XXXXXXXXXXXXXXXXXXXX 13215000603231357878014FCNNXZ WILLARD B 66681239212051996 0010101000000000000000000000000000000001010101000000100000000000000010000000000010000000000000000000000000000000000000000000000N CA5504 MAPLE LN ROWLETT TX75089 052008 T122010 FA600 FREEMAN DR GARLAND TX75040 082004 T082004 F21059 E CENTERVILLE RD APT 3104 GARLAND TX75041 082000 T082000 CP0061800039000100001300018 J SS 666812392 666812392 &&

Note: If you you’re coding EquiFax API for USA only you can use their XML Response and you will get an XML Request. My Examples are only in PHP Development.