Documentation

BankPay

  1. Home
  2. Docs
  3. BankPay
  4. API
  5. Enrollments

Enrollments

Table of Contents

  • – Secret Key Required
  • – Publishable Key Required

Create Enrollment Intent

See consumers for consumer fields and restrictions and addresses for address fields and restrictions.

Success

Request

POST /api/enrollment-intents
Authorization: Bearer {SECRET_KEY}
With Address:
{
    "billing_address": {
        "city_locality": "Tampa",
        "country_code": "US",
        "line_1": "2901 W Busch Blvd",
        "line_2": "#1018",
        "state_province": "FL",
        "postal_code": "33618"
    },
    "company_name": "ACME, Inc.",
    "date_of_birth": "1970-01-01",
    "email_address": "john.doe@example.com",
    "email_address_is_verified": true,
    "external_customer_id": "test-example",
    "extras": {
        
    },
    "phone_number": "+18132551234",
    "phone_number_is_verified": true
}
Without Address:
{
    "company_name": "ACME, Inc.",
    "date_of_birth": "1970-01-01",
    "email_address": "john.doe@example.com",
    "email_address_is_verified": true,
    "external_customer_id": "test-example",
    "phone_number": "+18132551234",
    "phone_number_is_verified": true
}
Only consumer: (to add another bank account)
{
    "consumer": "consumer_Aa1ABb2BCc3CDd4DEe5EFf6FGg7GHh8H"
}
With No data:
{}
With Amount:
{
    "amount": "5.99"
}
With Identification Numbers and Issuer:
{
    "drivers_license": "A111-111-11-111-1",
    "issuer": "NY",
    "federal_identification_number": "111-11-1111"
}
With Submerchant Id:
{
    "submerchant_id": "1"  *Issued by Certegy during onboarding.
}

Response

HTTP/1.1 201 Created
{
    "data": {
        "expires_at": "2020-07-09T17:15:55Z",
        "id": "enrollment_intent_Aa1ABb2BCc3CDd4DEe5EFf6FGg7GHh8H",
        "status": "created",
        "billing_address": {
            "id": "address_Aa1ABb2BCc3CDd4DEe5EFf6FGg7GHh8H",
            "standardized": true
        },
        "bank_account": null,
        "consumer": {
            "id": "consumer_Aa1ABb2BCc3CDd4DEe5EFf6FGg7GHh8H"
        },
        "extras": {
            
        }
    },
    "meta": {
        "type": "enrollment_intent"
    }
}

Example Errors

Invalid Consumer ID

Response

HTTP/1.1 422 Unprocessable Entity
{
    "message": "The given data was invalid.",
    "errors": {
        "consumer": [
            "invalid"
        ]
    }
}
Invalid Entry Method

Response

HTTP/1.1 422 Unprocessable Entity
{
    "message": "The given data was invalid.",
    "errors": {
        "allowed_entry_methods": [
            "no_valid_entry_methods"
        ]
    },
    "display_messages": {
        "allowed_entry_methods": [
            {
                "client": "The client's account information is configured for a different type of service. Please contact Certegy Client Relations at 800-237-7506.",
                "consumer": "We encountered an error. Please try again later."
            }
        ]
    }
}
Consumer ID does not exist

Response

HTTP/1.1 404 Not Found
{
    "error": "not_found",
    "message": "No query results for model [Consumer]"
}
Consumer is in an invalid state to create another enrollment intent

Response

HTTP/1.1 409 Conflict
{
    "error": "invalid_consumer",
    "message": "The consumer [consumer_Aa1ABb2BCc3CDd4DEe5EFf6FGg7GHh8H] is in an invalid state for this action."
}

Enrollment Intent Process

Success

Request

PATCH /api/enrollment-intents/{enrollment_intent_id}
Authorization: Bearer {SECRET_KEY}
{
    "action": "process"
}

Response

HTTP/1.1 200 OK
{
    "data": {
        "created_at": "2020-07-09T22:28:29Z",
        "expires_at": "2020-07-09T22:58:29Z",
        "id": "enrollment_intent_Aa1ABb2BCc3CDd4DEe5EFf6FGg7GHh8H",
        "processed_at": "2020-07-09T22:29:30Z",
        "reference_number": "5805900000154",
        "status": "accepted",
        "bank_account": {
            "account_number": "*****0101",
            "account_type": "personal_checking",
            "id": "bank_account_Aa1ABb2BCc3CDd4DEe5EFf6FGg7GHh8H",
            "routing_number": "021000018",
            "bank_name": "Dag site bank"
        },
        "consumer": {
            "company_name": "ACME, Inc.",
            "date_of_birth": "1970-01-01T00:00:00.000000Z",
            "email_address": "john.doe@example.com",
            "email_address_is_verified": true,
            "external_customer_id": "test-example",
            "first_name": "John",
            "id": "consumer_Aa1ABb2BCc3CDd4DEe5EFf6FGg7GHh8H",
            "last_name": "Doe",
            "phone_number": "8132551234",
            "phone_number_is_verified": true
        },
        "extras": {
            
        }
    },
    "meta": {
        "type": "enrollment_intent"
    }
}

Example Errors

Expired

Response

HTTP/1.1 409 Conflict
{
    "error": "enrollment_intent_expired",
    "message": "The enrollment intent [enrollment_intent_Aa1ABb2BCc3CDd4DEe5EFf6FGg7GHh8H] is in an invalid state for this action."
}
Already processed

Response

HTTP/1.1 409 Conflict
{
    "error": "already_processed",
    "message": "The enrollment intent [enrollment_intent_Aa1ABb2BCc3CDd4DEe5EFf6FGg7GHh8H] is in an invalid state for this action."
}
Missing bank account

Response

HTTP/1.1 409 Conflict
{
    "error": "missing_bank_account",
    "message": "The enrollment intent [enrollment_intent_Aa1ABb2BCc3CDd4DEe5EFf6FGg7GHh8H6] is in an invalid state for this action."
}
Already has a bank account

Request

{
    "action": "process"
}

Response

HTTP/1.1 409 Conflict
{
    "error": "already_has_bank_account",
    "message": "The enrollment intent [enrollment_intent_Aa1ABb2BCc3CDd4DEe5EFf6FGg7GHh8H] is in an invalid state for this action."
}
Consumer is invalid

Response

HTTP/1.1 409 Conflict
{
    "error": "invalid_consumer",
    "message": "The enrollment intent [enrollment_intent_Aa1ABb2BCc3CDd4DEe5EFf6FGg7GHh8H] is in an invalid state for this action."
}
Max bank account have been reached

Response

HTTP/1.1 409 Conflict
{
    "error": "max_bank_accounts_reached",
    "message": "The enrollment intent [enrollment_intent_Aa1ABb2BCc3CDd4DEe5EFf6FGg7GHh8H] is in an invalid state for this action."
}

Create Bank Account

Success

Request

POST /api/enrollment-intents/{enrollment_intent_id}/bank-accounts
Authorization: Bearer {PUBLISHABLE_KEY}
{
    "account_number": "10101",
    "account_number_confirmation": "10101",
    "account_type": "personal_checking",
    "routing_number": "021000018"
}

Response

HTTP/1.1 201 Created
{
    "data": {
        "bank_account": {
            "eligible_for_login_entry": true,
            "eligible_for_manual_entry": true
        },
        "provided_fields": [
            "company_name",
            "email_address",
            "phone_number",
            "date_of_birth",
            "external_customer_id"
        ]
    },
    "meta": {
        "type": "enrollment_intent"
    }
}

Example Errors

Validation Errors

Response

HTTP/1.1 422 Unprocessable Entity
{
    "message": "The given data was invalid.",
    "errors": {
        "account_number": [
            "not_confirmed"
        ],
        "account_type": [
            "invalid_account_type"
        ],
        "routing_number": [
            "invalid"
        ]
    }
}
When the consumer still has empty required fields

Response

HTTP/1.1 409 Conflict
{
    "error": "invalid_consumer",
    "message": "The enrollment intent [enrollment_intent_Aa1ABb2BCc3CDd4DEe5EFf6FGg7GHh8H] is in an invalid state for this action."
}

Enrollment Intent Check

Success

Request

GET /api/enrollment-intents/{enrollment_intent_id}/check
Authorization: Bearer {PUBLISHABLE_KEY}

Response

HTTP/1.1 200 OK
{
    "data": {
        "denied_at": null,
        "message": null,
        "id": "enrollment_intent_Aa1ABb2BCc3CDd4DEe5EFf6FGg7GHh8H",
        "is_mailable": false,
        "reference_number": null,
        "status": "consumer_details_updated"
    },
    "meta": {
        "type": "enrollment_intent"
    }
}

Example Errors

Enrollment Intent Not Found

Response

HTTP/1.1 404 Not Found
{
    "message": "not_found"
}

Update Consumer

Success

The update request will accept any consumer value that was previously not provided in enrollment intent
create.

Request

PATCH /api/enrollment-intents/{enrollment_intent_id}/consumers
Authorization: Bearer {PUBLISHABLE_KEY}
{
    "drivers_license_number": "A111-111-11-111-1",
    "federal_identification_number": "111-11-1111",
    "first_name": "John",
    "last_name": "Doe"
}

Response

HTTP/1.1 200 OK
{
    "data": {
        "bank_account": {
            "eligible_for_login_entry": true,
            "eligible_for_manual_entry": true
        },
        "provided_fields": [
            "company_name",
            "email_address",
            "phone_number",
            "date_of_birth",
            "external_customer_id"
        ]
    },
    "meta": {
        "type": "enrollment_intent"
    }
}

Example Errors

Do not provide required fields.

Fields that were empty on the enrollment intent creation.

Response

HTTP/1.1 422 Unprocessable Entity
{
    "message": "The given data was invalid.",
    "errors": {
        "first_name": [
            "missing"
        ],
        "last_name": [
            "missing"
        ]
    }
}

List Enrollment Intents

Success

Request

GET /api/enrollment-intents
Authorization: Bearer {SECRET_KEY}

Response

HTTP/1.1 200 OK

The data property is an array of Enrollment Intent objects.

{
    "data": [
        {
            "id": "enrollment_intent_AmRi1eZCi1IQGVNr848dTl0LZb03LMmm",
            "status": "accepted",
            "bank_account_id": "bank_account_mHcgMl9r7iFX9mqSABXERyoT8U1kKdaL",
            "billing_address_id": "address_KGjXJUa5TVsz3iVU5aoOaHQXRzqhmrqq",
            "consumer_id": "consumer_WChblQEE1Zudsrw2jNfHpks1UoR7IXG1",
            "client": {
                "id": "client_sSKBZMJsAX4JxDRqykrSoavYHQ4Rrh4H",
                "name": "Animals"
            },
            "reference_number": "5917480000032",
            "extras": {
                
            },
            "service_fee": {
                "fee_amount": "25.00",
                "id": "service_fee_neXFJlVp5loqtQ1OM9SNfh6LQhSyOwVv",
                "is_accepted": false,
                "transaction_amount": "9.00"
            },
            "sent_denial_details_at": null,
            "processed_at": "2021-12-15T19:59:15Z",
            "created_at": "2021-12-14T15:46:09Z",
            "expires_at": "2021-12-14T16:16:09Z",
        },
        // ...
    ],
    "links": {
        "first": "[...]/api/enrollment-intents?page=1",
        "last": "[...]/api/enrollment-intents?page=4",
        "prev": "[...]/api/enrollment-intents?page=1",
        "next": "[...]/api/enrollment-intents?page=3"
    },
    "meta": {
        "current_page": 3,
        "from": 2,
        "last_page": 4,
        "path": "[...]/api/enrollment-intents",
        "per_page": 10,
        "to": 4,
        "total": 40
    }
}
The links property contains links to other result set pages.

Data Data type Description
first string | null The first page URL.
last string | null The last page URL.
prev string | null The previous page URL.
next string | null The next page URL.
The meta property contains information about the results.

Data Data type Description
current_page number The current page number.
from number The first result index in this request.
last_page number The last page number.
path string The API route path.
per_page number The number of results returned per page.
to number The last result index in this request.
total number The total number of results.

Query Parameters

The list can be adjusted by passing the following parameters via the request URL.

Data Data type Description
consumer_id string Filters the result set by consumer id.
page number Changes the current page.
per_page number Changes the number of enrollment-intents returned per page.
reference_number string Filters the result set by reference number.
status string Filters the result set by enrollment-intent status.
store_number string Filters the result set by station number.
submerchant_id number Filters the result set by submerchant id. *Issued by Certegy during onboarding

Example Errors

Failure: Invalid filter

Response

HTTP/1.1 422 Unprocessable Entity
{
    "message": "The given data was invalid.",
    "errors": {
        "status": [
            "invalid"
        ]
    }
}

Read Enrollment Intent

Success

Request

GET /api/enrollment-intents/{enrollment_intent_id}
Authorization: Bearer {PUBLISHABLE_KEY}

Response

HTTP/1.1 200 OK
{
    "data": {
        "bank_account": {
            "eligible_for_login_entry": true,
            "eligible_for_manual_entry": true
        },
        "provided_fields": [
            "company_name",
            "email_address",
            "phone_number",
            "date_of_birth",
            "external_customer_id"
        ]
    },
    "meta": {
        "type": "enrollment_intent"
    }
}

Example Errors

Enrollment Intent Expired

Response

HTTP/1.1 409 Conflict
{
    "error": "enrollment_intent_expired",
    "message": "The enrollment intent [enrollment_intent_Aa1ABb2BCc3CDd4DEe5EFf6FGg7GHh8H] is in an invalid state for this action."
}
Enrollment Intent Not Found

Response

HTTP/1.1 404 Not Found
{
    "message": "not_found"
}

Enrollment Intent object

{
    "data": {
        "created_at": "2020-09-11T17:25:36Z",
        "expires_at": "2020-09-11T17:55:36Z",
        "id": "enrollment_intent_wvvAASNPvisU1Il8BAR0AfgLDEQtmiNy",
        "processed_at": "2020-09-11T17:25:36Z",
        "reference_number": "8889383020057",
        "status": "accepted",
        "bank_account": {
            "account_number": "*****8236",
            "account_type": "personal_checking",
            "id": "bank_account_TSWUqeGMmyccEOkq1pcDV9Ta0wXh741R",
            "routing_number": "119813276",
            "bank_name": "Dag site bank"
        },
        "consumer": {
            "company_name": null,
            "date_of_birth": "1970-08-04",
            "email_address": "gisselle.robel@example.org",
            "email_address_is_verified": false,
            "external_customer_id": null,
            "first_name": "Urban",
            "id": "consumer_mHXpILVOMUv2s61RqgIgdZNcdysnlFF5",
            "last_name": "Pfannerstill",
            "phone_number": "1-421-876-6490 x70098",
            "phone_number_is_verified": false
        },
        "extras": {
            
        },
        "service_fee": {
            "fee_amount": "20.00",
            "id": "service_fee_iaazMkJlPq58Jk8TWTV0vYwZY1U6I0wk",
            "is_accepted": false,
            "transaction_amount": "9.00"
        }
    }
}
Data Data type Description
id string Permanent unique identifier of the enrollment intent.
bank_account object The bank account of the enrollment intent.
consumer object The consumer of the enrollment intent. See consumers.
expires_at datetime string The date and time when the intent will expire at.
extras one-dimensional object | null An object of custom values the client can attach to an enrollment object when it’s created. Keys
must be string.
processed_at datetime string The date and time when the intent was processed at.
reference_number string Identifier with which the consumer can reference the enrollment.
service_fee object The service fee of the enrollment intent.
status object The current status of the enrollment intent. One of accepted, bank_account_added, consumer_details_updated, createddenied, loaded or max_bank_accounts_reached.

Testing

Test routing and account numbers.

Label Routing number Account number Response code
CHECK VERIFIED – CONVERSION 021000018 10101 21
ID RESTRICTIONS 021000021 50000 06
INVALID CHECK IDENTIFICATION 021000021 40403 09
DECLINE (NEGATIVE) 021000018 20200 07
DECLINE (HIGH RISK) 021000021 30301 12
CHECK VERIFIED – NO CONVERSION 021000021 70700 22
I/O ERROR, RE-SUBMIT 021000021 989800 15

Online Banking Testing

To test enrollment using online banking, search the institution list for “DAG Site” or “DAG OAuth” and use the following credentials:

Description Username Password
Full account and routing number Certegy.site16441.3 site16441.3
Missing account or routing number Certegy.site16441.4 site16441.4

For 2FA testing, search for “DAG Site Multilevel” and use the following credentials:

Description Username Password 2FA Code Security Answer
Full account and routing number Certegy.site16442.1 site16442.1 123456 certegy

Enrollment Response Codes

Code Label Description
00 INVALID DL/STATE ID The ID presented does not conform to known ID formats.
01 ID/DOB MISMATCH The identification does not match the date of birth provided or on file.
03 INVALID SSN The SSN or ITIN presented does not conform to known formats.
04 INVALID SERVICE TYPE The client’s account information is configured for a different type of service. Please contact Certegy Client Relations at 800-237-7506.
05 INVALID DEVICE ID The device ID is invalid.
06 ID RESTRICTIONS The type of identification presented is not acceptable. Please contact Certegy Client Relations at 800-237-7506 if you feel this is an error.
07 DECLINE (NEGATIVE) Certegy could not approve the transaction (Negative).
*This response requires Adverse Action and the Reference ID to be displayed to the consumer and the ability for the consumer to print and/or email it. In order to obtain the Adverse Action language, you will need to call the Read Transaction Intent using your Publishable Key and display the “reason” property.
08 APPROVAL The transaction has been approved.
09 INVALID ROUTING/ACCOUNT NUMBER The Routing and/or Account Number does not conform to known formats.
11 INVALID ACCOUNT TYPE The bank account type is invalid.
12 DECLINE (HIGH RISK) Certegy could not approve the transaction (High Risk).
*This response requires Adverse Action and the Reference ID to be displayed to the consumer and the ability for the consumer to print and/or email it. In order to obtain the Adverse Action language, you will need to call the Read Transaction Intent using your Publishable Key and display the “reason” property.
13 EDIT ERRORS (REQ’D FIELD MISSING) Certain required information or data elements were missing from the request.
14 INVALID STATION NUMBER The client’s account information does not exist or has been deactivated in Certegy’s system. Please contact Certegy Client Relations at 800-237-7506.
15 SYSTEM ERROR Please contact the Certegy Help Desk at 800-237-7506.
16 PHONE NUMBER MISSING The consumer phone number is missing.
17 PHONE NUMBER INVALID The consumer phone number is invalid.
18 INVALID EMAIL ADDRESS The email address is invalid.
19 ENTER THE DL AND DOB Enter the driver license number and DOB and re-send.
21 APPROVAL The transaction has been approved.
22 DECLINE (ROUTING/ACCOUNT NUMBER IS NOT ACHABLE) Certegy has determined that the bank account does not permit ACH transactions.
24 CHECK IS NOT ELIGIBLE CONVERSION The check is not eligible for conversion.
25 DECLINE (UNABLE TO DETERMINE IF ROUTING/ACCOUNT NUMBER IS ACHABLE) Certegy is unable to determine if the bank account can be converted to an electronic transaction.
29 VOID/CANCEL SUCCESSFUL The previously authorized transaction has been recalled and successfully voided from Certegy’s system.
30 CANNOT VOID/CANCEL Certegy was not able to recall the previously authorized transaction from our settlement system. For a Refund or Credit, these transactions cannot be cancelled.
31 ALREADY VOIDED/CANCELLED The transaction presented has been previously voided in Certegy’s system.
32 DUPLICATE EFT/TRANSACTION This transaction has already been approved and processed through Certegy’s system and cannot be processed again.
33 CERTEGY REF AND SEARCH REQUEST UID COMBINATION COULD NOT BE FOUND IN CERTEGY’S SYSTEM The transaction was attempted to be voided, but the Certegy REF and Search Request UID do not match the original authorization.
34 TOO LATE TO VOID/CANCEL The transaction has already been processed through the ACH network. It can no longer be voided.
38 INVALID CHECK TYPE The check type is invalid.
66 INVALID CONSUMER BILLING ADDRESS Certegy could not approve this transaction. The consumers address is invalid. Please re-check the consumers address and try again.
67 INVALID CONSUMER BILLING ADDRESS PLUS ROUTING/ACCOUNT NUMBER IS NOT ACHABLE Certegy could not approve this transaction. The consumers address is invalid and this account cannot be processed as an ACH.
68 INVALID SHIPPING ADDRESS Certegy could not approve this transaction. The shipping address is invalid. Please re-check the shipping address and try again.
69 INVALID SHIPPING ADDRESS PLUS ROUTING/ACCOUNT NUMBER IS NOT ACHABLE Certegy could not approve this transaction. The shipping address is invalid and this account cannot be processed as an ACH.
70 INVALID CONSUMER AND/OR SHIP TO FIRST NAME AND LAST NAME Certegy could not approve this transaction. The consumer and/or shipping first and last name is invalid. Please re-check the first and last name and try again.
71 INVALID CONSUMER AND/OR SHIP TO COMPANY NAME Certegy could not approve this transaction. The consumer and/or shipping company name is invalid. Please re-check the company name and try again.
72 INVALID CONSUMER AND/OR SHIP TO ADDRESS DATA. ADDRESS LINE 1 ADDRESS LINE 2 CITY STATE
ZIP
Certegy could not approve this transaction. The consumer and/or shipping address is invalid. Please re-check the address and try again.
73 DEBIT CAPTURE REQUEST: TRANSACTION HAS ALREADY BEEN CAPTURED/ACKNOWLEDGE This debit transaction has already been captured in Certegy’s system.
74 GOODWILL LINKED AND UNLINKED CREDIT REQUESTS: CREDIT AMOUNT IS OVER THE LIMIT The credit amount is over the limit. Please retry with a lower amount.
75 REFUND REQUEST: REFUND AMOUNT EXCEEDS THE DEBIT AMOUNT The Refund amount exceeds the total approved amount of the associated debit transaction. Please retry with a new amount that is equal or lower than the original approved debit.
76 REFUND REQUEST: ORIGINAL APPROVED DEBIT HAS NOT BEEN CAPTURED The original approved debit transaction has not been captured. Please ensure the capture has been successfully processed, then resubmit the Refund request.
77 REFUND OR GOODWILL LINKED CREDIT REQUEST: ORIGINAL DEBIT TRANSACTIONS WAS CANCELLED The original debit was cancelled; therefore, we are unable to process a Refund or Goodwill Linked Credit. If a credit is required, please rerun the request as a Goodwill Unlinked Credit.
78 DEBIT CAPTURE REQUEST: CAPTURE ADJUSTED AMOUNT OVER THE LIMIT The adjusted amount is over the limit. Please retry the capture request with a lower amount or use the original approved amount.
79 DEBIT CAPTURE REQUEST: CAPTURE ADJUSTED AMOUNT OVER THE LIMIT AND EXCEEDED RETRIES The adjusted amount is over the limit and has exceeded the number of retries. Please submit a new debit request.
80 REFUND REQUEST: ORIGINAL DEBIT TRANSACTION HAS NOT BEEN SENT FOR SETTLEMENT The refund cannot be processed since the original approved debit has not been sent to settlement. Please cancel the debit or submit a Goodwill Credit.
81 REFUND REQUEST: ORIGINAL DEBIT TRANSACTION HAS NOT BEEN SENT FOR SETTLEMENT The refund amount is less than the purchase amount. Partial refunds are not enabled at the time.
82 REFUND REQUEST: ORIGINAL DEBIT TRANSACTION HAS NOT BEEN SENT FOR SETTLEMENT The Debit transaction related to the Refund request has been returned from the bank.

Enrollment Issuer Codes

US

Code Description
AL Alabama
AK Alaska
AZ Arizona
AR Arkansas
CA California
CO Colorado
CT Connecticut
DE Delaware
FL Florida
GA Georgia
HI Hawaii
ID Idaho
IL Illinois
IN Indiana
IA Iowa
KS Kansas
KY Kentucky
LA Louisiana
ME Maine
MD Maryland
MA Massachusetts
MI Michigan
MN Minnesota
MS Mississippi
MO Missouri
MT Montana
NE Nebraska
NV Nevada
NH New Hampshire
NJ New Jersey
NM New Mexico
NY New York
NC North Carolina
ND North Dakota
OH Ohio
OK Oklahoma
OR Oregon
PA Pennsylvania
RI Rhode Island
SC South Carolina
SD South Dakota
TN Tennessee
TX Texas
UT Utah
VT Vermont
VA Virginia
WA Washington
WV West Virginia
WI Wisconsin
WY Wyoming

CANADA

Code Description
AB Alberta
BC British Columbia
MB Manitoba
NB New Brunswick
NL Newfoundland
NS Nova Scotia
NT Northwest Territories
NU Nunavut
ON Ontario
PE Prince Edward Island
PQ Quebec
SK Saskatchewan
YT Yukon Territory

US TERRITORIES

Code Description
AS American Samoa
DC District of Columbia
GU Guam
MP Northern Mariana Island
PR Puerto Rico
VI Virgin Islands

ALTERNATE IDs

Code Description
PP US Passport
CZ Military ID
TI Tribal ID

Back to Top

How can we help?