Credit Account Identification

This document explains how to identify and correlate a customer's credit accounts a) within the same credit report, and b) across reports that are pulled at different times.

Duplicate Accounts

The CREDIT_LIABILITY array lists the credit accounts that the customer is responsible for. Each bureau contributes an entry for every account that it's aware of. Thus, if you're generating a report to which multiple bureaus have contributed (a 2B or 3B report), then the same account will appear multiple times within the report, once for each bureau and one more time as a "merged" account.

For example, here's the same account as it appears three times in an Experian/Equifax 2B report:

{
  "CREDIT_RESPONSE": {
    "CREDIT_LIABILITY": [ {
      "@CreditTradeReferenceID": "Primary",
      "@_AccountIdentifier": "35469083265902",
      "@ArrayAccountIdentifier": "b7359f467845561640b337e14c164721",
      "@TradelineHashComplex": "0e754b05d60c31bda5420294c7a536b8",
      "@TradelineHashSimple": "38401ec5f7ff1c11559c8dcb23dc363e",  
      "CREDIT_REPOSITORY": [
        { "@_SourceType": "Equifax" },
        { "@_SourceType": "Experian" }
      ]
    },
    {
      "@CreditTradeReferenceID": "Secondary",
      "@_AccountIdentifier": "35469083265902",
      "@ArrayAccountIdentifier": "b7359f467845561640b337e14c164721",
      "@TradelineHashComplex": "da54202b54b805d60c31ba53694c70e7",
      "@TradelineHashSimple": "63c5f7f9c8e4f1c11538501edcb23dc3", 
      "CREDIT_REPOSITORY": { "@_SourceType": "Equifax" }
    },
    {
      "@CreditTradeReferenceID": "Secondary",
      "@_AccountIdentifier": "354690XXXXXXXX",
      "@ArrayAccountIdentifier": "b7359f467845561640b337e14c164721",
      "@TradelineHashComplex": "02b31ba53c70e76945da544b8205d60c",
      "@TradelineHashSimple": "b23dc33c5f7f9c8e4f1c1601edc15385", 
      "CREDIT_REPOSITORY": { "@_SourceType": "Experian" }
    } ]
  }
}

Regard the values of the @CreditTradeReferenceID and CREDIT_REPOSITORY properties (we'll look at the other properties later):

  • In the first entry, the @CreditTradeReferenceID is Primary and CREDIT_REPOSITORY contains references to Experian and Equifax. This means that the entry is a merge of the Experian and Equifax versions of the account.

  • In the other two entries, @CreditTradeReferenceID is Secondary and CREDIT_REPOSITORY refers to a single bureau. These entries are versions of the account that are presented without modification from the named bureau.

Note, however, that Primary doesn't always mean "merged". In a 1B report, there's a single Primary entry that presents the version from the single bureau:

{
  "CREDIT_RESPONSE": {
    "CREDIT_LIABILITY": [ {
      "@CreditTradeReferenceID": "Primary",
      "@_AccountIdentifier": "474681XXXXXX",
      "@ArrayAccountIdentifier": "8181e44a794fd52a0a35475a28025357",        
      "@TradelineHashComplex": "b0b888174b5c5ddd14992c75f692e2e0",
      "@TradelineHashSimple": "c1400e042df92f3da0ea90011e7a4e89",
      "CREDIT_REPOSITORY": { "@_SourceType": "Experian" }
    } ]
  }
}

👍

If you want to a generate a list of unique accounts within a credit report regardless of the number of bureaus that have contributed to the report, iterate over the CREDIT_LIABILITY array looking for accounts in which @CreditTradeReferenceID is Primary.

Account Correlation Within a Report

Every liability object contains two properties that identify the account that it represents, @_AccountIdentifier and @ArrayAccountIdentifier.

  • @_AccountIdentifier is the account identifier as it's presented by the bureau. Some bureaus (and some creditors) obfuscate the account identifier, so while you can present the value of this property to the customer, you can't use it to reliably correlate accounts across bureaus. For example, the @_AccountIdentifier values that we saw in an earlier example differ between Experian and Equifax:
{
  "CREDIT_RESPONSE": {
    "CREDIT_LIABILITY": [ {
      "@_AccountIdentifier": "35469083265902",
      "CREDIT_REPOSITORY": { "@_SourceType": "Equifax" }
    },
    {
      "@_AccountIdentifier": "354690XXXXXXXX",
      "CREDIT_REPOSITORY": { "@_SourceType": "Experian" }
    } ]
  }
}
  • To make up for the inconstancy of @_AccountIdentifier, Array introduced the @ArrayAccountIdentifier property as a value that can be used to correlate accounts across bureaus. If two or more liability objects in the same credit report have the same @ArrayAccountIdentifier value, then the objects represent the same account. This applies to merged accounts, as well: Note that all three entries from our previous example have the same @ArrayAccountIdentifier value and thus represent the same account:
{
  "CREDIT_RESPONSE": {
    "CREDIT_LIABILITY": [ {
      "@CreditTradeReferenceID": "Primary",
      "@ArrayAccountIdentifier": "b7359f467845561640b337e14c164721", 
      "CREDIT_REPOSITORY": [
        { "@_SourceType": "Equifax" },
        { "@_SourceType": "Experian" }
      ]
    },
    {
      "@CreditTradeReferenceID": "Secondary",
      "@ArrayAccountIdentifier": "b7359f467845561640b337e14c164721",
      "CREDIT_REPOSITORY": { "@_SourceType": "Equifax" }
    },
    {
      "@CreditTradeReferenceID": "Secondary",
      "@ArrayAccountIdentifier": "b7359f467845561640b337e14c164721",
      "CREDIT_REPOSITORY": { "@_SourceType": "Experian" }
    } ]
  }
}

The @ArrayAccountIdentifier value can also be used to correlate accounts across time, although it's possible for it to give a "false negative" (different values for the same account). We'll look at this more in the next section.

Account Correlation Across Reports

While identical @ArrayAccountIdentifier values are a reliable indicator of identity within a credit report, it's possible that an account's value could change over time, particularly if the customer has initiated a dispute. If you're trying to correlate accounts across credit reports that were pulled at different times, and the @ArrayAccountIdentifier doesn't yield a hit, you should try two other Array-generated values:

  • @TradelineHashComplex is a permanent and unique identifier for an account that's owned by the customer and reported by a particular bureau. You can't use this value to correlate accounts within a report: If an account is reported by all three bureaus, the multiple CREDIT_LIABILTY entries that represent the account will have unique TradelineHashComplex values.

  • If the @TradelineHashComplex property is missing or if it doesn't yield a match across reports, you can fall back on the @TradelineHashSimple property. The simple hash isn't as foolproof as the complex hash, so you may want to compare other properties (@_AccountOpenedDate, for example) as well.