AAMVA Barcode Result
Defined in namespace Scandit.DataCapture.ID.Data
- AamvaBarcodeResult
class AamvaBarcodeResult
Added in version 6.9.0
Information obtained from the PDF417 barcode of an AAMVA-compliant personal identification document.
The ID Capture supports all versions of the Driver License and Identification Standard published by AAMVA (personal identification documents used, for example, in the US and Canada). Some pre-Standard barcodes (documents issued before 2000) may also be successfully parsed, if their format doesn’t differ much from the version 1 of the Standard. Encrypted barcodes issued in the US State of Georgia before 2012 are currently not supported.
The encoding of card holder information has changed significantly between revisions of the DL/ID specification (most notably between 2000 codes and later codes) and the same piece of information is encoded differently, depending on the version.
In addition, the implementations of the specification vary strongly between jurisdictions, as many of them don’t implement the specifications correctly. If you are experiencing trouble when scanning certain DL/ID cards, we suggest to contact the Scandit team to resolve the issues.
- AamvaVersion
int
AamvaVersion { get; }Added in version 6.9.0
The version level of the PDF417 barcode format. See the AAMVA DL/ID Card Design Standard for more details.
- JurisdictionVersion
int
JurisdictionVersion { get; }Added in version 6.9.0
The jurisdiction specific version number of the implementation.
- IIN
string
IIN { get; }Added in version 6.9.0
The Issuer Identification Number which uniquely identifies the issuing jurisdiction.
- IssuingJurisdiction
string
IssuingJurisdiction { get; }Added in version 6.9.0
A human readable name of the issuing jurisdiction (for example: an issuing state, territory or federal district for USA, or an issuing province or territory for Canada).
- IssuingJurisdictionIso
string
IssuingJurisdictionIso { get; }Added in version 6.9.0
The ISO code of the issuing jurisdiction (for example: an issuing state, territory or federal district for USA, or an issuing province or territory for Canada).
Note
The returned value will only contain the jurisdiction specific code: for instance for California the returned value would be “CA” and not “US-CA”.
- EyeColor
string
EyeColor { get; }Added in version 6.9.0
The eye color of the card holder.
- HairColor
string
HairColor { get; }Added in version 6.9.0
The hair color of the card holder.
- HeightInch
int
HeightInch { get; }Added in version 6.9.0
The height of the card holder in inches.
- HeightCm
int
HeightCm { get; }Added in version 6.9.0
The height of the card holder in centimeters.
- WeightLbs
int
WeightLbs { get; }Added in version 6.9.0
Thw weight of the card holder in pounds.
- WeightKg
int
WeightKg { get; }Added in version 6.9.0
The weight of the card holder in kilograms.
- PlaceOfBirth
string
PlaceOfBirth { get; }Added in version 6.9.0
The place of birth of the card holder.
- Race
string
Race { get; }Added in version 6.9.0
The race of the card holder.
- DocumentDiscriminatorNumber
string
DocumentDiscriminatorNumber { get; }Added in version 6.9.0
The document discriminator number.
- VehicleClass
string
VehicleClass { get; }Added in version 6.9.0
The vehicle classification.
- RestrictionsCode
string
RestrictionsCode { get; }Added in version 6.9.0
The restriction code.
- EndorsementsCode
string
EndorsementsCode { get; }Added in version 6.9.0
The endorsement code.
- CardRevisionDate
DateResult CardRevisionDate { get; }
Added in version 6.9.0
Card revision date.
- FirstNameWithoutMiddleName
string
FirstNameWithoutMiddleName { get; }Added in version 6.25.0
The first name of the document holder. It doesn’t contain middle name(s).
- MiddleName
string
MiddleName { get; }Added in version 6.9.0
The middle name of the card holder.
- DriverNameSuffix
string
DriverNameSuffix { get; }Added in version 6.9.0
The name suffix of the card holder.
- DriverNamePrefix
string
DriverNamePrefix { get; }Added in version 6.9.0
The name prefix of the card holder.
- LastNameTruncation
string
LastNameTruncation { get; }Added in version 6.9.0
The last name truncation. A code that indicates whether a field has been truncated (‘T’), has not been truncated (‘N’), unknown whether truncated (‘U’), or the information is not present in the document (null).
- FirstNameTruncation
string
FirstNameTruncation { get; }Added in version 6.9.0
The first name truncation. A code that indicates whether a field has been truncated (‘T’), has not been truncated (‘N’), unknown whether truncated (‘U’), or the information is not present in the document (null).
- MiddleNameTruncation
string
MiddleNameTruncation { get; }Added in version 6.9.0
The middle name truncation. A code that indicates whether a field has been truncated (‘T’), has not been truncated (‘N’), unknown whether truncated (‘U’), or the information is not present in the document (null).
- AliasFamilyName
string
AliasFamilyName { get; }Added in version 6.9.0
Other family name by which cardholder is known.
- AliasGivenName
string
AliasGivenName { get; }Added in version 6.9.0
Other given name by which cardholder is known.
- AliasSuffixName
string
AliasSuffixName { get; }Added in version 6.9.0
Other suffix name by which cardholder is known.
- RealId
bool
RealId { get; }Added in version 6.20.0
Returns true if the document is a Real ID.
- BarcodeDataElements
IDictionary<
string
,string
> BarcodeDataElements { get; }Added in version 6.9.0
The mappings between all the barcode data element IDs and their values. The keys of this collection are the element IDs as defined in the AAMVA Driver License/Identification specification. For example, the specification defines a data element “Customer First Name” with the ID “DAC”. Therefore if a scanned barcode contains a string “DACMICHAEL”, then this collection will contain a mapping with “DAC” as the key and “MICHAEL” as the value. This collection contains all the data elements of the barcode - including those that are exposed also explicitly as fields of this class.
See Barcode Data Elements for all the possible keys and their meaning.
Barcode Data Elements
Mandatory Fields for spec version 1 (2000)
Following data fields are always present in a version 1 code:
Data Element ID |
Meaning |
Parsed Content |
---|---|---|
DAA |
Driver License Name |
|
DAG |
Driver Mailing Street Address 1 |
|
DAI |
Driver Mailing City |
|
DAJ |
Driver Mailing Jurisdiction Code |
|
DAK |
Driver Mailing Postal Code |
A ZIP code is parsed as a dictionary with following key/value pairs:
Note that only certain jurisdictions encode the full 9-digit ZIP codes. Therefore the ‘9digit’ field is often empty or contains the padded 5-digit codes. Generally you will want to use the 5-digit code as it is reliably present. Both fields may be empty. |
DAQ |
Driver License/ID Number |
|
DAR |
Driver License Classification Code |
|
DAS |
Driver License Restriction Code |
|
DAT |
Driver License Endorsements Code |
|
DBA |
Driver License Expiration Date |
A date is parsed as a dictionary with following key/value pairs:
where DD, MM and YYYY are two-digit, respectively four-digit integers. Can be null because some versions do not follow the AAMVA specification and do not provide this field. |
DBB |
Date of Birth |
the same as ‘DBA’ |
DBC |
Driver Sex (‘F’ or ‘M’) |
|
DBD |
Driver License or ID Document Issue Date |
the same as ‘DBA’ |
Optional Fields for spec version 1 (2000)
Following data fields are sometimes present in a version 1 code:
Data Element ID |
Meaning |
Parsed Content |
---|---|---|
DAU |
Height (in feet and inches) |
A dictionary with following key/value pairs:
where X is the heigth in inches and Y is the height in cm. |
DAW |
Weight (in pounds) |
Integer |
DAY |
Eye Color |
|
DAZ |
Hair Color |
|
DBK |
Social Security Number |
|
PAA |
Driver Permit Classification Code |
|
PAB |
Driver Permit Expiration Date |
see ‘DBA’ |
PAC |
Permit Identifier |
|
PAD |
Driver Permit Issue Date |
see ‘DBA’ |
PAE |
Driver Permit Restriction Code |
|
PAF |
Driver Permit Endorsement Code |
|
DAB |
Driver Last Name |
|
DAC |
Driver First Name |
|
DAD |
Driver Middle Name or Initial |
|
DAE |
Driver Name Suffix |
|
DAF |
Driver Name Prefix |
|
DAH |
Driver Mailing Street Address 2 |
|
DAL |
Driver Residence Street Address 1 |
|
DAM |
Driver Residence Street Address 2 |
|
DAN |
Driver Residence City |
|
DAO |
Driver Residence Jurisdiction Code |
|
DAP |
Driver Residence Postal Code |
see ‘DAK’ |
DAV |
Height (in cm, format state-dependent) |
see ‘DAU’ |
DAX |
Weight (in kg) |
|
DBE |
Issue Timestamp |
|
DBF |
Number of Duplicates |
Integer |
DBG |
Medical Indicator/Codes |
|
DBH |
Organ Donor |
|
DBI |
Non-Resident Indicator |
|
DBJ |
Unique Customer Identifier |
|
DBL |
Driver ‘AKA’ Date Of Birth |
see ‘DBA’ |
DBM |
Driver ‘AKA’ Social Security Number |
|
DBN |
Driver ‘AKA’ Name |
|
DBO |
Driver ‘AKA’ Last Name |
|
DBP |
Driver ‘AKA’ First Name |
|
DBQ |
Driver ‘AKA’ Middle Name |
|
DBR |
Driver ‘AKA’ Suffix |
|
DBS |
Driver ‘AKA’ Prefix |
Mandatory Fields for spec version 2 and later (2003+)
Following data fields are sometimes present in a version >=2 code:
Data Element ID |
Meaning |
Present in Versions |
Parsed Content |
---|---|---|---|
DCA |
Jurisdiction-specific vehicle class/group code |
>=2 |
|
DCB |
Jurisdiction-specific codes that represent restrictions to driving privileges |
>=2 |
|
DCD |
Jurisdiction-specific codes that represent additional privileges granted to the cardholder beyond the vehicle class |
>=2 |
|
DBA |
Expiration Date |
>=2 |
A date is parsed as a dictionary with following key/value pairs:
where DD, MM and YYYY are two-digit, respectively four-digit integers. Can be null because some versions do not follow the AAMVA specification and do not provide this field. |
DCS |
Family name |
>=2 |
|
DCT |
Given name (all names other than the family name) |
2 and 3 |
|
DAC |
First name |
>=4 |
|
DAD |
Middle Name(s), separated by a comma |
>=4 |
|
DBD |
Date on which the document was issued. |
>=2 |
see ‘DBA’ |
DBB |
Date of Birth Date |
>=2 |
see ‘DBA’ |
DBC |
Gender of the cardholder |
>=2 |
String. One of the following:
|
DAY |
Eye color |
>=2 |
One of the following:
|
DAU |
Height of cardholder. |
>=2 |
A dictionary with following key/value pairs:
where X is the heigth in inches and Y is the height in cm. |
DAG |
Street portion of the cardholder address. |
>=2 |
|
DAI |
City portion of the cardholder address. |
>=2 |
|
DAJ |
State portion of the cardholder address. |
>=2 |
|
DAK |
Postal code portion of the cardholder address. |
>=2 |
A ZIP code is parsed as a dictionary with following key/value pairs:
Note that only certain jurisdictions encode the full 9-digit ZIP codes. Therefore the ‘9digit’ field is often empty or contains the padded 5-digit codes. Generally you will want to use the 5-digit code as it is reliably present. Both fields may be empty. |
DAQ |
Customer ID |
>=2 |
|
DCF |
Document Discriminator Number |
>=2 |
|
DCG |
Country (‘USA’ or ‘CAN’) |
>=2 |
|
DCH |
Federal Commercial Vehicle Codes |
2 and 3 |
|
DDE |
Family name truncation. A code that indicates whether a field has been truncated (‘T’), has not been truncated (‘N’), or unknown whether truncated (‘U’). |
>=4 |
|
DDF |
First name truncation. A code that indicates whether a field has been truncated (‘T’), has not been truncated (‘N’), or unknown whether truncated (‘U’). |
>=4 |
|
DDG |
Middle name truncation. A code that indicates whether a field has been truncated (‘T’), has not been truncated (‘N’), or unknown whether truncated (‘U’). |
>=4 |
Optional Fields for spec version 2 and later (2003+)
Following data fields are sometimes present in a version >=2 code:
Data Element ID |
Meaning |
Parsed Content |
---|---|---|
DAH |
Second line of street portion of the cardholder address. |
|
DAZ |
Hair color |
|
DCI |
Place of birth |
|
DCJ |
Audit information |
|
DCK |
Inventory control number |
|
DBN |
Alias/AKA Family Name |
|
DBG |
Alias/AKA Given Name |
|
DBS |
Alias/AKA Suffix Name |
|
DCU |
Name Suffix (can be ‘JR’, ‘SR’, ‘1ST’, ‘2ND’, ‘3RD’, ‘4TH’, ‘5TH’, ‘6TH’, ‘7TH’, ‘8TH’, ‘9TH’, ‘I’, ‘II’, ‘III’, ‘IV’, ‘V’, ‘VI’, ‘VII’, ‘VIII’ or ‘IX’) |
|
DCE |
Weight Range
|
Integer |
DCL |
D-20 Code for Race/Ethnicity |
|
DCM |
Standard vehicle classification |
|
DCN |
Standard endorsement code |
|
DCO |
Standard restriction code |
|
DCP |
Jurisdiction-specific vehicle classification description |
|
DCQ |
Jurisdiction-specific endorsement code description |
|
DCR |
Jurisdiction-specific restriction code description |
|
DDA |
Compliance Type, ‘F’ = fully compliant and ‘N’ = non-compliant. |
|
DDB |
Card Revision Date |
see ‘DBA’ |
DDC |
Date on which the hazardous material endorsement granted by the document is no longer valid |
see ‘DBA’ |
DDD |
Indicator that the cardholder has temporary lawful status, can be ‘true’ or ‘false’. |
String |
DAW |
Weight in pounds |
Integer |
DAX |
Weight in kilograms |
Integer |
DDH |
Date on which the cardholder turns 18 |
see ‘DBA’ |
DDI |
Date on which the cardholder turns 19 |
see ‘DBA’ |
DDJ |
Date on which the cardholder turns 21 |
see ‘DBA’ |
DDK |
Indicator that the cardholder is an organ donor, can be ‘1’ or ‘0’ |
Integer |
DDL |
Indicator that the cardholder is a veteran, can be ‘1’ or ‘0’ |
Integer |
Jurisdiction-Specific Fields
Different jurisdictions can include custom data elements if desired. These data element must have an id starting with the letter ‘Z’. The Scandit parsing library also exposes these fields without any parsing.