Enrollments API Endpoints
This is a full list of our API enrollments endpoints, that can also be found in our API Reference.
Enrollments API Endpoints
The following endpoints are used for the enrollment process. For technical reference of all Enrollments API endpoints, please refer to the API Reference section.
Creates a new enrollment for a user, including account and card creation. Supports instant issue scenarios and account upgrades (for example, from General Purpose Reloadable (GPR) to Direct Deposit Account (DDA) if the "upgradeFlag" parameter is true). This endpoint is also used for the card-in-hand use case to support instant issue enrollment.
Key operations performed:
- Create new user
- Create account
- Create payment instrument
- Support instant issue enrollment
- Support account upgrade
Note: If POST /enrollments is called with a valid request and enrollment fails during processing, the request will be automatically completed if the customer clears OFAC.
API Call Structure
POST /programs/{programCode}/enrollments
Request & Response - Parameters & Examples
These can be found in the API reference linked above in the API title.
Allowed Characters in Names
Allowed Characters:
- Uppercase letters: A-Z
- Lowercase letters: a-z
- Space ( )
- Single quote/apostrophe (')
- Hyphen (-)
- Period (.)
- Diacritics
- Grave (À, à)
- Acute (Á, á)
- Tilde (Ã, ã, Ñ, ñ)
- Cedilla (Ç, ç)
- Circumflex (Î, î)
- Diaeresis/Umlaut (Ü, ü)
Rules:
- No consecutive special characters: Spaces, apostrophes, hyphens, and periods cannot appear twice or more in a row.
- Diacritics must be paired with an alphabetic character (cannot be displayed alone).
- Start and end with a letter: Names must begin and end with an alphabetic character (diacritics are allowed).
- Maximum length: Each name field (First, Middle, Last) can be up to 25 characters.
- First Name: Minimum 2 characters, maximum 25 characters.
- Middle Name: Minimum 1 character, maximum 25 characters.
- Last Name: Minimum 2 characters, maximum 25 characters.
Note: Diacritics are allowed for First, Middle, and Last Name.
- Disallowed: All other characters (including emojis, numbers, and other symbols) are not permitted.
Field | Allowed Characters | Max Length | Allowed Diacritics | Start/End Rule | No Consecutive Specials |
|---|---|---|---|---|---|
First/Middle/Last Name | A-Z, a-z, space, ', -, . | 25 | Grave ex: (À, à) Acute ex: (Á, á) Tilde ex: (Ã, ã, Ñ, ñ) Cedilla ex: (Ç, ç) Circumflex ex: (Î, î) Diaeresis/Umlaut ex: (Ü, ü) | Must start/end with letter | Yes |
Suggested REGEX for validation:
^(?=.{1,30}$)[A-Za-z](?:[A-Za-z]|[ .'-](?![ '-]))*[A-Za-z]$
If firstName, middleName, lastName does NOT match rules above then a httpStatus code 400 Bad Request will be returned.
Standard SSN/ITIN vs. Foreign ID Enrollments
There are two types of customers to enroll to create account/card, either via SSN/ITIN, or using a Foreign ID.
SSN/ITIN utilizes the standard userData that is collected and encrypted as part of our default enrollment flow. Examples can be found later in this documentation.
However, there are specific requirements for Foreign IDs.
Foreign ID
The following information must be collected for Foreign ID:
- First Name
- Last Name
- Middle Name (Optional)
- Address - Must be USA Address (Street, City, Zip, State) Cannot be a PO BOX, Cannot be private mailbox (PMB), Cannot be commercial mail receiving agency (CMRA), Cannot be a foreign address
- DOB (MM/DD/YYYY)
- Mobile phone
- ID Number
- Type of ID
- State/Country of Issuance
- Expiration Date
Additionally, there must also be the following additional questions and drop-down options for foreign ID.
Source of funds:
- Salary or wages
- Proceeds from selling assets, like investments or real estate
- Inheritance or gifts
- Business income
- Pension or Retirement
- Share sales and/or dividends
- Lottery/gambling winnings
- Compensation from legal settlements
- Government benefits
Occupation:
- Employed full-time
- Employed part-time
- Self-Employed/Business owner/Controller
- Student – Employed
- Student - Unemployed
- Unemployed
- Retired
To collect user data for foreign IDs (that will be encrypted before requesting the enrollment endpoint) use the following:
"{\"ProfileData\":{\"Addresses\":[{\"IsDefault\":true,\"AddressLine2\":\"SUITE 044\",\"AddressLine1\":\"15210 Cornell Rd\",\"Type\":\"home\",\"State\":\"OH\",\"ZipCode\":\"45241\",\"City\":\"Cincinnati\",\"IsVerified\":true}],\"FirstName\":\"ypoEHwLw\",\"LastName\":\"kMmFrINP\",\"MiddleName\":\"LRYTghiB\"},\"identifyingData\":{\"ssnSuffix\":\"\",\"dateOfBirth\":\"1993-10-12\",\"ssn\":\"\",\"identityType\":\"ConsulateId\",\"sourceFunds\":\"Business income\",\"identityValue\": \"729M99073065871\",\"identityCountryCode\": \"COL\",\"identityExpirationDate\": \"2029-10-10\",\"occupation\": \"Employed\"},\"email\":{\"IsDefault\":false,\"emailAddress\":\"[email protected]\",\"IsVerified\":true},\"phoneNumbers\":[{\"number\":\"1005150788\",\"isDefault\":true,\"IsVerified\":true,\"type\":\"Mobile\"}]}"
Catalog for Occupation & SourceOfFunds:
"Occupation": [
"Employed",
"Self-Employed/Business owner/Controller",
"Student-Employed",
"Student-Unemployed",
"Unemployed",
"Retired"
],
"SourceOfFunds": [
"Salary or wages",
"Proceeds from selling assets, like investments or real estate",
"Inheritance or gifts",
"Business income",
"Pension or Retirement",
"Share sales and/or dividends",
"Lottery/gambling winnings",
"Compensation from legal settlements"
]
Sample Unencrypted User Data
To execute Know Your Customer (KYC) successfully, the profileData, identifyingData, email, and phoneNumbers fields are required.
Field | Description |
|---|---|
profileData | Value contains the name and addresses of a user. |
firstName | Required. Must be 1-35 characters. Refer to the Valid Characters for Names, Cities, and Addresses table for details. |
middleName | Optional. Max 100 characters |
lastName | Required. Must be 2-35 characters. Refer to the Valid Characters for Names, Cities, and Addresses table for details. |
addresses |
|
addressLine1 | Required value containing the home address of the user. |
addressLine2 | Home address continued |
city | Required value containing the city where user lives. |
state | Required value containing the state where user lives. Must be a two-character state code. |
zipCode | Required value containing the user’s zipCode. Note: Must be only 5 digits. No extended zip codes allowed. If an extended zip code is provided, the extended digits will be stripped off by the system. |
countryCode | Value containing the user’s countryCode. Default is USA |
type | Value containing the type of address provided, which is required to be the “home” address. |
isDefault | Field used to determine if a default value is used for email, phone, address, phone.
|
identifyingData | Field containing restricted personal identifying data. If included in payload, dateOfBirth and ssn or ssnSuffix is required. Becomes immutable once KYC is completed. |
ssnSuffix | The last 4 digits of the user’s ssn. Products will require full ssn or the ssnSuffix only. Both ssn & ssnSuffix are mutually exclusive. |
ssn | Must be exactly 9 digits, the full ssn of the user. Products will require full ssn or the ssnSuffix only. Both ssn & ssnSuffix are mutually exclusive. A non-US ssn will fail KYC2. |
dateOfBirth | Must be between 1901 and current date and provided in the form YYYY-MM-DD |
Field contains the email address of the user, along with its verification and data entered. Since only one user profile email address is allowed, the isDefault flag is ignored and the provided email address will always be the default. | |
emailAddress | String value with a max length of 255 characters. Note: In the Partner Integration Environment (PIE), we allow enrollment requests which include an e-mail address containing a “+” character in the username portion. This is to facilitate easier QA by our BaaS partners. In production environments this is not allowed. If the username portion of an e-mail address being attempted for enrollment contains a “+” character, then that request will fail. In production, the partner’s front-end application should use a mechanism that looks for that character and returns guidance to the customer to change the requested e-mail address and remove any disallowed characters. |
phoneNumbers | The user’s phone number. One default phone number (valid with 10 digits) must be provided or the first phone number in the list of phone numbers will be set to the default. If more than one default phone number is provided, the following response will be returned:
|
number | Optional |
type | Value that Returns the type of phoneNumber provided by the user. Valid phone types are mobile, home, and work. |
Upgrade Response Error Codes
| Scenario | Http Status | Code | Subcode | Message |
|---|---|---|---|---|
| Missing/invalid account identifier | 400 | 350 | 0 | Account Identifier is invalid |
| Change user profile | 400 | 4502 | 0 | User profile can‘t be changed |
| Account status not normal | 400 | 4503 | 0 | Account status is not healthy |
| Target product code same with current product code | 400 | 4504 | 0 | Target productCode not matched |
| Same request ID, account ID is different | 400 | 4505 | 0 | Account not matched |
| Target product code not allowed for upgrade | 400 | 4506 | 0 | Account already upgrade success |
| Account not found | 400 | 10 | 0 | Account or account holder or user not found |
| Invalid product material type | 400 | 4 | 312 | Invalid Product Material type |
| CPM upgrade service return error | 400 | 5030 | 0 | A downstream provider did not return success for Upgrade Account |
KYC Verification
Note: To perform KYC verification checks on users, the userData object must have the following fields completed.
| Field | Required (Y/N) | Description |
|---|---|---|
| firstName | Y | Must contain 1-35 characters. |
| lastName | Y | Must contain 2-35 characters. |
| address1 | Y | Must contain 2-40 characters. Must be the user's home address. Cannot be a PO Box or non-U.S. address. Note: Discuss any restrictions for selling in U.S. Territories with your Green Dot onboarding team. |
| address2 | N | If provided, must contain 1-40 characters. |
| City | Y | City is required if there are any physical cards (payment instruments) associated with the product |
| State | Y | Must be two characters. Values can include: GU - Guam (Note: Will be rejected during enrollment requests) , PR - Puerto Rico (Note: Will be rejected during enrollment requests), VI - Virgin Islands, DC - District of Columbia |
| zipCode | Y | Must be 5 digits only (i.e., 99999). No extended zip codes are allowed. If they are provided, the system removes them |
| dateOfBirth | Y | Must be YYYY-MM-DD. |
| ssnSuffix or ssn | Y | Must be exactly 9 digits. Non-US SSNs will fail KYC2. Note: Products require a full ssn or a ssnSuffix only. Do not enter both. |
| phoneNumber | Y | Must contain the user's 10-digit phone number. |
Note: For more information, refer to Sample Unencrypted User Data.
KYC Verification Response Codes
| Scenario | HTTP Status Code | Code | Description |
|---|---|---|---|
| If the dateOfBirth is not provided in the format: YYYY-MM-DD. | 400 | 700 | identifyingData.dateOfBirth must be in the form YYYY-MM-DD |
| If a ssn and a ssnSuffix are both provided. | 400 | 630 | Cannot pass both last4SSN & SSN |
| If duplicate address types are provided. Note: Duplicate address types are not allowed. | 400 | 1020 | Duplicated type is not allowed |
| • If more than one address is set as the default. • Note: Only one default address is allowed. | 400 | 1040 | For card shipment, either a home or business address can be the default. • For home address, isDefault=true. • For business address, isDefault=false. |
| If a home address is not provided. Note: The default address is home. So, if isDefault is not provided, then the home address will be set as the default. | 400 | 1042 | Home address is missing |
| If POST /enrollments is called and a phone number is not provided, but KYC is required | 400 | 101 | phoneNumbers userData sections missing, check your JSON |
More information about KYC can be found on the KYC Page.
Currency Response Codes
| Scenario | Code | subCode | Description |
|---|---|---|---|
| An invalid ISO currency code is provided. | 650 | 0 | Invalid Currency Code |
| A valid ISO currency code is provided, but it is not valid for the program. | 650 | 430 | This product does not support this currency |
User Data Response Codes
| Property | Constraints/Scenario | HTTP Status Code | Code | subCode |
|---|---|---|---|---|
| addressLine1 | > = 2 characters and <= 40 characters | 400 | 400 | 505 |
| addressLine2 | <= 40 characters | 400 | 400 | 506 |
| city | <= 25 characters | 400 | 400 | 504 |
| firstName | <=35 characters | 400 | 400 | 501 |
| lastName | > =2 characters and <=35 characters | 400 | 400 | 502 |
| addressLine1 | Invalid Characters | 400 | 640 | 505 |
| addressLine2 | Invalid Characters | 400 | 640 | 506 |
| middleName | Invalid Characters | 400 | 640 | 503 |
| city | Invalid Characters | 400 | 640 | 504 |
| firstName | Invalid Characters | 400 | 640 | 501 |
| lastName | Invalid Characters | 400 | 640 | 502 |
Terms Acceptance Response Codes
| Scenario | Code | subCode | Description |
|---|---|---|---|
| POST /enrollments is called and the termsAcceptanceDateTime is before or after the 30-day (720 hours) timeframe for terms acceptance. | 620 | 0 | termsAcceptanceDateTime must be within 720 hours of the time it was submitted |
Known Enrollment Error Codes
| Code | subCode | Description |
|---|---|---|
| 101 | 192 | Request “Declined” because multiple accounts have been found. |
Bill Cycle Date (BCD)
Active accounts will return a bill cycle date when POST /enrollments is called.
- The bill cycle date will be returned as an accountCycleDay, which represents the first day of the statement cycle for an account.
- The accountCycleDay can be 1-28.
{
"account":{
"accountIdentifier":"58787933-9076-4f51-a217-8a2187033625",
"accountReferenceNumber":"ACCP0000000",
"status":"normal",
"accountStatusChangedDateTime":"2020-04-02T16:46:20.13Z",
"statusReasons":["healthy"],
"directDepositInformation":{
"accountNumber":"15**********00",
"routingNumber":"******100"
},
"purses":[
{
"purseIdentifier":"d940751b-8208-4d18-9240-58e6ab8b6cfb",
"purseType":"primary",
"availableBalance":0.0,
"ledgerBalance":0.0,
"availableBalanceAsOfDateTime":"2020-04-02T14:46:19Z",
"ledgerBalanceAsOfDateTime":"2020-04-02T14:46:19Z",
"isHidden":false,
"status":"active"
}
],
"accountHolders":[
{
"paymentInstruments":[
{
"encryptedPrivatePaymentInstrumentData":{
"version":"EC_v1",
"ephemeralPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEVMFTbdmLF5fffpAhSc99HgLvn7xOqbhMjXnTxCFOt5L1VomD3FHtFY7F128AuUDXEIDBLH0YwU42qzizyJBAqQ==",
"publicKeyHash":"PiRV5ko8JYGxAtcNb9WV4aVg7aXIp8EsstmeUqqWzT8=",
"data":"UhYFhBTSX6w/0LOTDfa5O0c+hy9exHIjrqJ6uNvi+Gf4kaut81Tvb9vdVTaFn8BpfGMscEx5QNzvxrh377PGD96bdpfhM0eJL9KjqmY8Rtv6/xC5ZqyzF92uYBkkZbFZ"
},
"paymentInstrumentIdentifier":"df2a43c1-2469-4cd4-b468-d1b51cac0059",
"paymentInstrumentType":"virtual",
"status":"activated",
"isPinSet":true,
"last4Pan":"0000",
"activatedDateTime":"2020-04-02T16:46:19Z",
"issuedDateTime":"2020-04-02T16:46:19Z",
"isPrivateDataViewable":true
},
{
"encryptedPrivatePaymentInstrumentData":{
"version":"EC_v1",
"ephemeralPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEn+LEayHfNDYMokvYnD7SsAL4dzyfbZ19NZCHsIaqd07KDIkpZh7T4W3QilkYQDOqRJvAKRiINuh5KcPeDoxLSA==",
"publicKeyHash":"PiRV5ko8JYGxAtcNb9WV4aVg7aXIp8EsstmeUqqWzT8=",
"data":"XbyTkaysIEcIQnppkDq8W8namlB9J96UvRVyt1TYYUpUn1OY7wrtFpC1HPRibPQZup8NfWp/7l5sq8ker1rvZqBo8Mw8QQIDH3QsXKj9kr7SwZY2"
},
"paymentInstrumentIdentifier":"2adba9d0-4f30-43f8-aa20-0a286ba4bd13",
"paymentInstrumentType":"emv",
"status":"notActivated",
"isPinSet":true,
"last4Pan":"0000",
"issuedDateTime":"2020-04-02T16:46:20Z",
"isPrivateDataViewable":false
}
],
"user":{
"userIdentifier":"079c8dde-71c1-4ac7-b93a-cb187eb44ae2",
"peerTransferAcceptPreference":"manual",
"status":"active",
"isPrimaryAccountHolder":true,
"kycStateData":{
"ofacStatus":"passed",
"kycStatus":"passed",
"kycPendingGate":"healthy"
}
}
}
],
"accountCycleDay":2 – The first day of the statement cycle for an account.
},
"responseDetails":[
{
"code":0,
"subCode":0,
"description":"Success",
"url":"http://tbd"
}
]" "
}
Idempotent Retry and Billing Cycle Dates
Note: Accounts must have a billing cycle date to have a normal account status.
- Typically, the Billing Cycle Date (BCD) returned as an accountcycleday is automatically created at the time of enrollment, but in conditions where it cannot be created, the account will be left in a pending state.
Partners should make an idempotent call in these situations. The idempotent call for POST /enrollments will populate the BCD when the idempotent retry process is completed. The account status will also be set to normal.
Example: Using a POST /enrollments idempotent call to populate the BCD.
1st POST /enrollments call fails, and the BCD is null. The paymentIdentifier and the payment instruments are not created. The account is in a pending/registration not complete state.
Sample Request Body:-
{
"user":
{
"encryptedUserData":
{
"version":"EC_v1",
"ephemeralPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF+93ZmoH5cG5W30Lf8MIMeoOAd2BZJ1sLWUBsKrGqMT/fnTjN1MwqLFBiZwhICEX95uxdyuPuKgy05FObHm6hw==",
"publicKeyHash":"kMhnzB6afrTdRvVFjhOQ5kjUTrPKvkygSCZQXQzNHYo=", "data":"dJBb3AFMxUbyet1NDAkHVEKhFCFtsoLoQ+muuPBQnCfJjY4jfEBTjUcRVSKIjDgrUsgbwUv2p5le9bGWVFdLArny9SAPcBOtqzrawT+vk0UQApskdhAdrTZsp7Ecs3VOHZiLHUki/Rd5U6qH4cp2SLAskJRCmn7WmpK/C3++hBZZAVallw+htp/EUPUjl4hrowSoMzk/pZHlI9XWqm1kNGwEQG7GYuxCm7G86ff9Cnz+zOAKSN+nJD3rxXWSPV8CplkvoF7c4yWXAxB5Zjy5Ce7fqrknMTV6Na3TqZjxbF73YB45fUEETHPyaD5xCAK7fDztW16lRsKX2tSADxlajVzM6eeXoaksK2+IvXktJmEieqoUGLoDYOsWT9jJfwAOSvswZV+4t5WyOWJYugBFqI+hX2v/+XjgY7POwWXew5zOa7rTQm54Vr1DOoP3I8U0zmB/zys5CrlSV/FYdwlIZxAub2a8X2jUrG5yjPyRkmO0Bxjv0imj8VcCQR0wKD1CFDyzSLqUhMqqwTIcV5uPo0szdZQcwca2ODUHPzco7DUiVNTJA74RWEllaV5QkgFf7GW/sTUnBG1In4WXAxjJRXaydWsLcCYH/ZSiqWHGmXrHNpPjr6vXCNRxi5/X5wPgOZ8lFmoyVrafvAmQXqSzU4Kdg7TPEaQ8EuEiOH+M6Gp9UQNrtD0OKvHuZN3aAlBwH2H9cuLH0dniZbaemcGjJlcRH1nz"
},
"termsAcceptances":
[{
"termsIdentifier":"termsAndConditions",
"termsAcceptanceDateTime":"2020-08-22T00:17:07.318Z"
}]
},
"account":
{
"productCode":"50400",
"productMaterialType":"pvc",
"currency":"USD",
"termsAcceptances":
[
{
"termsIdentifier":"termsAndConditions",
"termsAcceptanceDateTime":"2020-08-22T00:17:07.318Z",
"termsAcceptanceFlag":"true"
},
{
"termsIdentifier":"privPlcy",
"termsAcceptanceDateTime":"2020-08-22T00:17:07.318Z",
"termsAcceptanceFlag":"false"
}
]
},
"requestPhysicalCardFlag":true,
"executeKycFlag":true
}
Sample Response:-
{
"account":{
},
"responseDetails":[
{
"code":503,
"subCode":0,
"description":"Fail",
"url":"http://tbd"
}
]
}
The 2nd POST /enrollments call that is Idempotent puts the account into a normal healthy state once the idempotent retry process is completed. The BCD is populated and the paymentIdentifier and payment instruments are created. An Account Updated Webhook is sent.
Sample Request Body:-
{
"user":{
"encryptedUserData":{
"version":"EC_v1",
"ephemeralPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF+93ZmoH5cG5W30Lf8MIMeoOAd2BZJ1sLWUBsKrGqMT/fnTjN1MwqLFBiZwhICEX95uxdyuPuKgy05FObHm6hw==",
"publicKeyHash":"kMhnzB6afrTdRvVFjhOQ5kjUTrPKvkygSCZQXQzNHYo=", "data":"dJBb3AFMxUbyet1NDAkHVEKhFCFtsoLoQ+muuPBQnCfJjY4jfEBTjUcRVSKIjDgrUsgbwUv2p5le9bGWVFdLArny9SAPcBOtqzrawT+vk0UQApskdhAdrTZsp7Ecs3VOHZiLHUki/Rd5U6qH4cp2SLAskJRCmn7WmpK/C3++hBZZAVallw+htp/EUPUjl4hrowSoMzk/pZHlI9XWqm1kNGwEQG7GYuxCm7G86ff9Cnz+zOAKSN+nJD3rxXWSPV8CplkvoF7c4yWXAxB5Zjy5Ce7fqrknMTV6Na3TqZjxbF73YB45fUEETHPyaD5xCAK7fDztW16lRsKX2tSADxlajVzM6eeXoaksK2+IvXktJmEieqoUGLoDYOsWT9jJfwAOSvswZV+4t5WyOWJYugBFqI+hX2v/+XjgY7POwWXew5zOa7rTQm54Vr1DOoP3I8U0zmB/zys5CrlSV/FYdwlIZxAub2a8X2jUrG5yjPyRkmO0Bxjv0imj8VcCQR0wKD1CFDyzSLqUhMqqwTIcV5uPo0szdZQcwca2ODUHPzco7DUiVNTJA74RWEllaV5QkgFf7GW/sTUnBG1In4WXAxjJRXaydWsLcCYH/ZSiqWHGmXrHNpPjr6vXCNRxi5/X5wPgOZ8lFmoyVrafvAmQXqSzU4Kdg7TPEaQ8EuEiOH+M6Gp9UQNrtD0OKvHuZN3aAlBwH2H9cuLH0dniZbaemcGjJlcRH1nz"
},
"termsAcceptances":[
{
"termsIdentifier":"termsAndConditions",
"termsAcceptanceDateTime":"2020-08-22T00:17:07.318Z"
}
]
},
"account":{
"productCode":"50400",
"productMaterialType":"pvc",
"currency":"USD",
"termsAcceptances":[
{
"termsIdentifier":"termsAndConditions",
"termsAcceptanceDateTime":"2020-08-22T00:17:07.318Z",
"termsAcceptanceFlag":"true"
},
{
"termsIdentifier":"privPlcy",
"termsAcceptanceDateTime":"2020-08-22T00:17:07.318Z",
"termsAcceptanceFlag":"false"
}
],
"fraudData":{
"key":"string",
"key":{
"prop1":"val1",
"prop2":"val2"
}
}
},
"requestPhysicalCardFlag":true,
"encryptedPin":{
"version":"EC_v1",
"ephemeralPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmx9T4EJNQHNWHRnf+U48rFWlrUwhXyivdkZrUl2rD4wVVJInEs8MRP7ISABTKEqh8NDdWAsc8hsKtGtxHgYA4A==",
"publicKeyHash":"kMhnzB6afrTdRvVFjhOQ5kjUTrPKvkygSCZQXQzNHYo=",
"data":"n8V1k4aSNNqsZWebsq2BKqkWGgFbf2lmS7mklbJo"
},
"executeKycFlag":"true"
Sample Response:-
{
"account":{
"accountIdentifier":"90edb081-299c-44f1-9a59-f8ddf5ba6155",
"accountReferenceNumber":"UNP5639733",
"status":"normal",
"accountStatusChangedDateTime":"2020-08-22T00:20:19.560Z",
"statusReasons":[
"healthy"
],
"directDepositInformation":{
"accountNumber":"10157253856458",
"routingNumber":"096017418"
},
"purses":[
{
"purseIdentifier":"a4b2e6e4-0e80-4e7a-91ca-7ede3913b2ed",
"purseType":"primary",
"availableBalance":0.0000,
"ledgerBalance":0.0000,
"availableBalanceAsOfDateTime":"2020-08-21T22:20:16Z",
"ledgerBalanceAsOfDateTime":"2020-08-21T22:20:16Z",
"isHidden":false,
"status":"active"
}
],
"accountHolders":[
{
"paymentInstruments":[
{
"paymentIdentifier":"6a69336f-78df-40ec-998b-1a0cc4ea1d1b",
"paymentInstrumentIdentifier":"30f5874d-1e33-4ea4-94fd-4ed47185c14e",
"paymentInstrumentType":"virtual",
"status":"activated",
"isPinSet":false,
"last4Pan":"7186",
"activatedDateTime”: "2020-08-22T00":"20":16Z",
"issuedDateTime": "2020-08-22T00":"20":16Z",
"isPrivateDataViewable": false
}],
"user":
{
"firstName": "ZdzYPOIT",
"lastName": "GIiQqxEo",
"dobStatus": "matched",
"last4Identity": "2353",
"identityType": "ssn",
"userIdentifier": "41545272-7f24-4703-bab5-5ae5bae2a303",
"status": "active",
"isPrimaryAccountHolder": true,
"kycStateData":
{
"ofacStatus": "passed",
"kycStatus": "passed",
"kycPendingGate": "healthy"
}
}
}],
accountCycleDay": 21
},
"responseDetails":[
{
"code":0,
"subCode":0,
"description":"Success",
"url":"http://tbd"
}]
Active Consumer Account Limits
An account is considered active when it has been activated and either has an account status of normal or a kycPendingGate (aka: Cure) with a value other than none. There is a limit to the number of active accounts allowed per social security number for Consumer Accounts.
When the Active Account Limit rule is encountered during a POST /enrollments call and the date of births match, the most recent active enrollment details will be returned. If the date of births do not match, only the response details will be returned.
Social Security Number (SSN) Limits
- Up to 1 active accounts with the same SSN per program is allowed
- Up to 3 lifetime accounts with the same SSN per program are allowed
Phone Limits - Default or Primary Phone Number on Account
The following phone limits will be implemented (during enrollment) only for the phone number that is listed as the default for the account:
- Up to 2 active accounts with the same phone number per program are allowed
- Up to 10 lifetime accounts with the same phone number per program are allowed
Note: Updates requested for phone numbers that exceed the current phone limits will be declined.
ITIN Limits
- Up to 1 active accounts with the same ITIN per program are allowed
- Up to 3 lifetime accounts with the same ITIN per program are allowed
Refer to Active Small Business Account Limits for details about small business account limit thresholds.
Response Codes
| Scenario | Code | subCode | Description |
|---|---|---|---|
| More than 1 active account is created with the same SSN or ITIN per program. | 2 | 60 | Number of Active Accounts Exceeded. |
| More than 3 lifetime accounts are created with the same SSN or ITIN per program. | 2 | 61 | Number of Activated Accounts over Lifetime exceeded. |
| More than 2 active accounts are created with the same phone number per program. | 2 | 63 | Number of Active Accounts Exceeded. |
| More than 10 lifetime accounts are created with the same phone number. | 2 | 66 | Number of Activated Accounts over Lifetime exceeded. |
Sample Response – Date of Births Match
Sample Response – Date of Births Match:-
{
"account":{
"accountIdentifier":"8e1bd112-661b-473f-acad-4ed6181c4c21",
"accountReferenceNumber":"OXF2701925",
"status":"normal",
"statusReasons":[
"healthy"
],
"directDepositInformation":{
"accountNumber":"101034163709758",
"routingNumber":"096017418"
},
"purses":[
{
"purseIdentifier":"252d1bc1-754f-46e8-95df-aade9bcf25c3",
" ""purseType":"primary",
"availableBalance":0.0,
"ledgerBalance":0.0,
"availableBalanceAsOfDateTime":"2018-10-18T21:10:32Z",
"ledgerBalanceAsOfDateTime":"2018-10-18T21:10:32Z"
}
],
"accountHolders":[
{
"user":{
"userIdentifier":"1b19ffb1-e869-4c83-8eaa-4af6e5e867c2",
"status":"active",
"isPrimaryAccountHolder":true,
"kycStateData":{
"ofacStatus":"passed",
"kycStatus":"passed",
"kycPendingGate":"healthy"
}
},
"paymentInstruments":[
{
"paymentInstrumentIdentifier":"1e5ea745-d3ac-41e6-a703-29c9974c9e49",
"paymentInstrumentType":"virtual",
"status":"activated",
"isPinSet":false,
"last4Pan":"3782",
"activatedDateTime":"2018-10-18T23:10:32Z",
"issuedDateTime":"2018-10-18T23:10:32Z",
"isPrivateDataViewable":"false"
}
]
}
]
},
"responseDetails":[
{
"code":2,
"subCode":60,
"description":"Number of Active Accounts Exceeded.",
"url":"http://tbd"
}
]
}
Sample Response – Date of Births do not Match:-
{
"responseDetails":[
{
"code":2,
"subCode":60,
"description":"Number of Active Accounts Exceeded.",
"url":"http://tbd"
}
]
}
Business Rule Response Sub-Codes
Refer to Business Rule Response Sub-Codes for details.
Retrieves enrollment details for an account. The response is encrypted.
This API will return two account holders for a joint account.
Note: During the GPR > DDA upgrade process, the response will include the UpgradeKycStateData property. If the account is already a DDA account, the response will not include the UpgradeKycStateData property.
API Call Structure
GET /programs/{programCode}/enrollments/accounts/{accountIdentifier}
Joint Account Enrollment Scenario
This API will return two account holders for a joint account.
Route Parameters
| Parameter name | Type | Value | Description |
|---|---|---|---|
| programCode | string | wf | This value identifies the program type of the account to be created. |
| accountIdentifier | uuid | value varies | Property and value provided in response of Enrollment call. |
Headers
| Header name | Type | Value | description |
|---|---|---|---|
| X-GD-RequestId | uuid | value varies | This property is used to uniquely identify each request. |
| Authorization | bearer token | value varies | the token get from GD |
Sample Joint Account Enrollment Details Response
{
"account": {
"accountIdentifier": "55881304-e02f-4048-a176-5efb4f6c8a79",
"accountReferenceNumber": "APM8757797",
"productCode": "50400",
"productTierKey": 32,
"currency": "USD",
"status": "normal",
"instantIssue": false,
"statusReasons": [
"healthy"
],
"accountStatusChangedDateTime": "2025-02-04T07:53:34.140Z",
"directDepositInformation": {
"accountNumber": "11150794159285",
"routingNumber": "124303214"
},
"purses": [
{
"purseIdentifier": "2201b224-fa8b-48cc-bcd6-4afa55033190",
"purseType": "primary",
"availableBalance": 0,
"ledgerBalance": 0,
"availableBalanceAsOfDateTime": "2025-02-04T05:53:06Z",
"ledgerBalanceAsOfDateTime": "2025-02-04T05:53:06Z",
"isHidden": false,
"status": "active",
"interestRateTier": "",
"isRoundUp": false
}
],
"accountHolders": [
{
"paymentInstruments": [
{
"paymentIdentifier": "6e9b39ec-d7f3-4303-a64d-568de0ebccae",
"paymentInstrumentIdentifier": "6e289520-79a9-4da4-8444-6a9868f094f0",
"paymentInstrumentType": "virtual",
"status": "activated",
"isPinSet": false,
"last4Pan": "2557",
"activatedDateTime": "2025-02-04T07:53:06Z",
"issuedDateTime": "2025-02-04T07:53:06Z",
"isPrivateDataViewable": false
},
{
"paymentIdentifier": "6e9b39ec-d7f3-4303-a64d-568de0ebccae",
"paymentInstrumentIdentifier": "1674c927-1d73-4948-957c-f4f1eb20cc14",
"paymentInstrumentType": "emv",
"status": "notActivated",
"isPinSet": false,
"last4Pan": "2557",
"issuedDateTime": "2025-02-04T07:53:08Z",
"isPrivateDataViewable": false,
"productMaterialType": "pvc",
"cardIssueSource": "mailer"
}
],
"user": {
"firstName": "First h1MYC1v",
"lastName": "First 3ymkEem",
"dobStatus": "matched",
"last4Identity": "1128",
"identityType": "ssn",
"userIdentifier": "bf607fdd-536b-40e8-82f2-165f6e7c4ff3",
"peerTransferAcceptPreference": "manual",
"status": "active",
"isPrimaryAccountHolder": true,
"kycStateData": {
"ofacStatus": "passed",
"kycStatus": "passed",
"kycPendingGate": "healthy"
}
},
"accountHolderIdentifier": "adfe56b1-9732-4ce1-a8a7-aa06bb263135"
},
{
"paymentInstruments": [
{
"paymentIdentifier": "fe73761b-e064-4876-9800-c481df68a028",
"paymentInstrumentIdentifier": "a4724482-215b-412f-ad88-e88697641cd3",
"paymentInstrumentType": "virtual",
"status": "activated",
"isPinSet": false,
"last4Pan": "4036",
"activatedDateTime": "2025-02-04T07:53:46Z",
"issuedDateTime": "2025-02-04T07:53:46Z",
"isPrivateDataViewable": false
}
],
"user": {
"firstName": "Second YQ41JQQM",
"lastName": "Second TlFe8NRz",
"dobStatus": "matched",
"last4Identity": "8436",
"identityType": "ssn",
"userIdentifier": "5c24d7e5-8b8f-4b3c-816e-d56fbcf97fee",
"peerTransferAcceptPreference": "manual",
"status": "active",
"isPrimaryAccountHolder": false,
"kycStateData": {
"ofacStatus": "passed",
"kycStatus": "passed",
"kycPendingGate": "healthy"
}
},
"accountHolderIdentifier": "dabfa22f-0570-4cfa-9868-353daca958cb"
}
],
"termsAcceptances": [
{
"termsIdentifier": "privPlcy",
"termsAcceptanceDateTime": "2025-02-04T07:53:01.857Z",
"termsAcceptanceFlag": false
},
{
"termsIdentifier": "daa",
"termsAcceptanceDateTime": "2025-02-04T07:53:01.857Z",
"termsAcceptanceFlag": true
},
{
"termsIdentifier": "eca",
"termsAcceptanceDateTime": "2025-02-04T07:53:01.857Z",
"termsAcceptanceFlag": true
}
],
"accountCycleDay": 3,
"productClass": "Perso",
"enrollmentSource": "OnlineSales"
},
"responseDetails": [
{
"code": 0,
"subCode": 0,
"description": "Success",
"url": "http://tbd"
}
]
}
Updated 14 days ago
