Full BIN Data extract is available via two different mechanisms - as a JSON payload via the Full BIN List API and as a CSV via the file stream APIs. For either of those mechanisms, the full BIN data has three levels of access to the Issuer BIN data as highlighted below:
Level 1—Basic Level : This is the only subscription option that has no program fees and does not require registration, except for a relevant VDP Agreement and applicable onboarding fees.
Level 2 - Advanced and Level 3 - Complete : Both levels require registration to VBASS and are subject to approval and pricing. Eligible participants will be notified by Visa about the approved level of access in response to a successful registration with the Visa BIN Attribute Sharing Service (VBASS) program.
ATTRIBUTE | Response Object Name | LEVEL 1 - Basic | LEVEL 2 - Advanced | LEVEL 3 - Complete | Description |
Issuer BIN | issuerBin | Yes | Yes | Yes | Bank Identification Number (BIN) of the issuer of the account. |
Account Range Minimum/Maximum | binRangeMinNum | Yes | Yes | Yes | Account/Token range min and max |
binRangeMaxNum | |||||
Shared BIN Indicator | sharedBinInd | Yes | Yes | Yes | True if BIN shared by multiple issuers |
BIN Length | binLength | Yes | Yes | Yes | Provides BIN length - 6 or 8 digits |
POS Domestic Only | posDomesticOnlyInd | Yes | Yes | Yes | Domestic Only BIN or Account Ranges |
Online Gambling Block (Purchases) | onlineGamblBlockInd | Yes | Yes | Yes | Indicates whether Online Gambling is permitted or not |
Auto Substantiation Indicator | autoSubstntnInd | Yes | Yes | Yes | Auto Substantiation enabled indicator |
PAN/Token Indicator | binRangePaymentAccountType | Yes | Yes | Indicates if Pan or Token number | |
Issuer Billing Currency | issuerBillingCurrCd | Yes | Yes | Card issuance currency | |
Issuer Country Code | accountCtryAlpha2Code | Yes | Yes | Card issuance country | |
Product Platform | platformCd | Yes | Yes | Indicates if consumer BIN or commercial BIN | |
Product ID/Name | productID/productIDName | Yes | Yes | Indicates type of Visa product (e.g., Visa Signature, Visa Infinite, Visa Classic) | |
Account Funding Source | accountFundingSourceCd | Yes | Yes | Indicates if credit, debit or prepaid | |
Brand Indicator | brandCd | Yes | Yes | Identifies if the brand or brands is associated with the account range. | |
Commercial Card Level 2 Data Indicator | commrclCrdLvl2Ind | Yes | Yes | Indicates if transaction qualifies for Level 2 interchange rates | |
Commercial Card Level 3 Enhanced Data Indicator | commrclCrdLvl3EnhInd | Yes | Yes | Indicates if transaction qualifies for Level 3 interchange rates | |
Combo Card Indicator | comboCrdCd | Yes | Yes | Indicator for combo card | |
Exempt/Non-Exempt BINs (Regulated BINs) | regulatedBinCd | Yes | Yes | Indicator for regulated BINs | |
Account Funding Source Subtype | accountFundingSourceSubtypeCd | Yes | Indicates if reloadable or non-reloadable prepaid | ||
Issuer Name | accountBusName | Yes | Name of the Card Issuer | ||
ALM Indicator | almInd | Yes | Indicates if BIN or Account Range participate in Account Level Management | ||
VAU Indicator | vauInd | Yes | Visa Account Updater enabled indicator | ||
Multi Account Access Indicator | multiAccountAccessInd | Yes | Indicates participation in Multi Account Access |
For the Full BIN list, client application can retrieve the full list by paginating through the BIN Range dataset using the combination of binRangeSearchIndex and binRangeCount fields in the API request. The parameter “binRangeSearchIndex” is a mandatory parameter, for the first API call this should be set to 0. The other parameter binRangeCount is also mandatory and is set to 500 [DS1] which represents the number of results returned on every API call. The client application starts with binRangeSearchIndex=0 and binRangeCount=500.
The additional attributes listed below are included in the Full BIN List API result-
totalRecordCount indicates the total number of records available
numRecordsReturned indicates the number of records returned on the current call
areNextOffsetRecordsAvailable if set to Y indicates there are more records available and if set to N indicates no more records available to retrieve
The client application will need to make multiple calls via the Full BIN List API until all the records are received, that is until areNextOffsetRecordsAvailable is returned as N. The value of binRangeSearchIndex for each iteration should be binRangeSearchIndex + binRangeCount from previous request . The response field totalRecordsCount can be leveraged to determine the number of iterations of API calls that may be needed to fetch all the BIN Range Data.
Below is an example of the first 3 calls for the Full BIN List API-
First Full BIN List API call -
"requestData": {
"binRangeSearchIndex": 0,
"binRangeCount": 500
}
Second Full BIN List API call -
"requestData": {
"binRangeSearchIndex": 500,
"binRangeCount": 500
}
Third Full BIN List API call -
"requestData": {
"binRangeSearchIndex": 1000,
"binRangeCount": 500
}
Note: In sandbox environment the response on Full BIN List API will list attributes from Level 3 - Complete, but the API response in production will reflect only the attributes for the level the client is registered and approved. Data returned in sandbox is not actual data.
BIN Files Metadata API
This API allows client application to request BIN file name and related details like file size, checksum and file creation date for all BIN data files.
The following parameter is mandatory:
The response to the API is in JSON format. Entities will need to make two calls to this API with the paymentAccountType parameter as P and T to receive all PAN and token files. The file count, file size, checksum and file creation date details should be saved to validate entire file was received in the BIN File Transfer API response.
BIN File Transfer API
This API allows client application to retrieve the file content of the BIN files that are listed in the BIN Files Metadata API response. The following parameter is mandatory:
The response to this API is via file stream. A successful response will display the file contents of the file that was passed in the fileName parameter. Entities can use the file size and checksum from the BIN Files Metadata API response to validate if entire file contents was consumed. Entities will need to make separate calls for each file they want to consume.
For example – if there are 20000 BIN records out of which 8000 are account range records and 12000 are token range records, with 2000 records making up a 5MB file, there will be 4 account range BIN files and 6 token range BIN files created. Entities will need to call the BIN Files Metadata API with paymentAccountType parameter as P to receive the file name, file size, checksum and file creation data for the 4 account range files. Once they receive the file names, they will need to call the BIN File Transfer API by passing the account range file name in the fileName parameter to see the actual BIN account range file contents. The BIN File Transfer API will need to be called once for each file that needs to be retrieved, which is 4 times in this case. When a successful call is made to the BIN File Transfer API, the all the records in the file will be file streamed and the response will be comma delimited.
See below what a file stream response will look like:
This API allows client application to request issuer BIN attribute data on an account-by-account basis. This API provides Level 3 attributes by default and includes Account Level Product Information for product ID, as provided by participating issuers.
To request BIN attributes associated with the paymentAccount input, the following parameters are mandatory:
Parameter paymentAccount accepts a minimum of 13 digits and a maximum of 21 digits. To lookup 6 or 8-digit BINs and 9-digit account ranges, please add 0s to make the paymentAccount input at least 13 digits. For example: if BIN is 425907, then the paymentAccount parameter should be 4259070000000.
Below are sample paymentAccount and paymentAccountType values that can be used in the request for Single BIN Lookup API in sandbox environment-
paymentAccount | paymentAccountType |
---|---|
4259077000001230 | P |
4259078000000010 | P |
4259079000000020 | P |
4001510050000030 | T |
4001510060000040 | T |
4001510070000050 | T |
The results returned for Single BIN Lookup API will list the attributes as listed in the above table under Level 3 - Complete. Since the attributes are listed for a specific account, it will not show the Account Range Minimum/Maximum value in the result. Data returned in sandbox is not actual data.
Note for Account Level Product Information: Certain Issuers set product ID at the account level vs. the BIN or account range level. When looking for the exact product ID of a particular PAN, the full complete account number must be submitted or the product ID may not match. The API solution is unable at this time to provide account level product information for tokens, but will be updated in a future API release.
Authentication:
The Single BIN Lookup API requires the API caller to enable Message Level Encryption as a part of the implementation.
The access and use for both the Full BIN List API and the Single BIN Lookup API require the participant to be sponsored by a participating Visa licensed Acquirer or Issuer [CS1] and is subject to approval by Visa for permissible use cases only. Payment Card Industry Data Security Standard (PCI DSS) compliance is required of all entities that store, process, or transmit Visa cardholder data, including financial institutions, merchants and service providers. The utilization of Single BIN Lookup API requires the participant to be PCI DSS compliant.
The technical details can be found on the API Reference. A complete listing of all of these code values and their names is in the Request and Response Code Reference.
Full BIN Data extract is available as a CSV via the file stream APIs.
Attribute | Response Object Name | Description |
Acquirer BIN | AcquirerBIN | Bank Identification Number (BIN) of the Acquirer |
Acquirer Name | AcquirerName | Name of the Acquirer |
BIN User Name | BINUserName | User Name of the Bank Identification Number (BIN) |
Acquirer Region Code | AcquirerRegionCode | Region code of the Acquirer |
Acquirer Country Code | AcquirerCtryAlpha2Code | Country code of the Acquirer |
VBASS Files Metadata API
This API allows client application to request file name and related details like file size, checksum and file creation date for all data files.
The following parameter is mandatory:
The response to the API is in JSON format. The file count, file size, checksum and file creation date details should be saved to validate entire file was received in the VBASS File Transfer API response.
VBASS File Transfer API
This API allows client application to retrieve the file content of the files that are listed in the VBASS Files Metadata API response. The following parameter is mandatory:
The response to this API is via file stream. A successful response will display the file contents of the file that was passed in the fileName parameter. Entities can use the file size and checksum from the VBASS Files Metadata API response to validate if entire file contents was consumed. Entities will need to make separate calls for each file they want to consume.
For example – if there are 20000 records with 2000 records making up a 5MB file, there will be 10 files created. Entities will need to call the VBASS Files Metadata API with fileType parameter as ACQ to receive the file name, file size, checksum and file creation data for the 10 files. Once they receive the file names, they will need to call the VBASS File Transfer API by passing the file name in the fileName parameter to see the actual file contents. The VBASS File Transfer API will need to be called once for each file that needs to be retrieved, which is 10 times in this case. When a successful call is made to the VBASS File Transfer API, all the records in the file will be file streamed and the response will be comma delimited.
See below what a file stream response will look like:
The technical details can be found on the API Reference. A complete listing of all of these code values and their names is in the Request and Response Code Reference.