Accounts
Accounts APIs can be used for account management and account insights related functions.
Overview
The Accounts API allows Partners to:
- List the transactions for a specific account
- Retrieve account details
- Retrieve user’s primary account balances
- List available account statements for a specific period
- Verify user identities through Know Your Customer (KYC) and Green Dot
Accounts API Endpoints
Assigning Custom Account Identifiers
This feature can only be used if it has been agreed upon during onboarding and included in your onboarding contract.
This optional feature enables partners to assign their own account identifiers to their customer’s accounts. Simply call PUT /programs/{programCode}/accounts/{accountIdentifier} and include your partnerAccountIdentifier. The partnerAccountIdentifier facilitates cross-reference purposes, such as settlement and reconciliation reports.
API Call Structure
PUT /programs/{programCode}/accounts/{accountIdentifier}
Opt In/Out Terms or Agreements
This feature allows any terms or agreements that were opted into during enrollment to be opted out of later. Conversely, any terms or agreements that were opted out of during enrollment can be opted into later.
API Call Structure
PUT /programs/{programCode}/accounts/{accountIdentifier}
Request Parameters
Field | Description |
---|---|
termsAcceptances | Terms of acceptance that the user must agree to in order to enroll. |
termsIdentifier | Unique identifier for the daa that was accepted. See Terms Identifiers |
termsAcceptanceFlag | May be true or false |
fraudData | Optional |
Credit Line Decrease (CLD) Eligibility Criteria Change
This feature further determines when an SCC account is eligible for a Credit Line Decrease. And when eligible, this change replaces statement check with funding date, thereby ensuring a statement is generated in 30 days instead of 7.
Conditions | Result |
---|---|
• Customer requests a CLD. • Request date minus initial successful account funding date is <=30 days. | CLD declined |
• Customer requests a CLD. • Request date minus initial successful account funding date is > 30 days and other criteria are met | CLD approved |
Request
GET https://bospart.qa.uw2.gdotawsnp.com/baas/v1/programs/gbr/accounts/07d8ba76-6549-
4903-8434-90a11ae77300/cldEligibilityCheck HTTP/1.1
Accept-Encoding: gzip,deflate
Authorization: Bearer tcanJISPn0GUq4iImRY7Ig==
X-GD-RequestId: bf8b175e-5cfe-46d2-8cf0-fd6aea887e12
Content-Length: 0
Host: bospart.qa.uw2.gdotawsnp.com
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.5.2 (Java/1.8.0_181)
Response – Successful CLD
{
"isEligible":true,
"decreaseAmount":200,
"responseDetails":[
{
"code":0,
"subCode":0,
"description":"Success",
"url":"http://tbd"
}
]
}
Response – Unsuccessful CLD
{
"isEligible":false,
"decreaseAmount":0,
"responseDetails":[
{
"code":3,
"subCode":810,
"description":"Credit line decrease is not allowed since your account was opened less than a month ago.",
"url":"http://tbd"
}
]
}
Search Account
This endpoint allows partners to search through accounts.
API Call Structure
POST /programs/{programCode}/accounts/search
Update Account Status
This endpoint can only be used if the Partner is configured to change statuses.
This endpoint allows Partners to update account statuses, account status reasons, and cures under certain conditions. When a valid request is submitted and completed successfully, the updated status, status reason, and kycPendingGate will be returned in GET /accounts/{accountIdentifier} and GET /enrollments/accounts/{accountIdentifier} responses. An Account Updated Webhook will also be published.
Partners can unlock an account on their own IF the lock was performed by the Partner. To unlock accounts, call this API with the status you would like to set. Any accounts locked by Green Dot will remain locked until Green Dot returns status to healthy.
API Call Structure
PUT /programs/{programCode}/accounts/{accountIdentifier}/status
Valid Parameters and Conditions
Note: PUT /accounts/{accountIdentifier}/status can be used to update account status and account status reason under the following conditions.
Request Parameters Account Status | Request Parameters Account Status Reason | Condition Only allowed if current kycPendingGate (aka: cure) is | Updated kycPendingGate (aka: cure) if request is successful |
---|---|---|---|
locked | potentialFirstPartyFraud | healthy | manual |
locked | confirmedFirstPartyFraud | healthy | manual |
locked | potentialThirdPartyFraud | healthy | manual |
locked | confirmedThirdPartyFraud | healthy | manual |
locked | potentialAccountTakeover | healthy | manual |
locked | confirmedAccountTakeover | healthy | manual |
locked | potentialIdentityTheft | healthy | manual |
locked | confirmedIdentityTheft | healthy | manual |
locked | potentialOtherFraud | healthy | manual |
locked | confirmedOtherFraud | healthy | manual |
Response Codes
Scenario | Code | subCode | Description |
---|---|---|---|
Invalid enum or missing notes. can be Status, Reasons, or Notes. | 600 | 0 | Invalid value. |
A combination of any of the following: • Invalid status • Invalid status response • Missing notes field | 603 | 0 | Invalid combination of values in the request. |
The request was not allowed. | 5 | 420 | The status update was declined by fraud. |
Status changes initiated by Green Dot (i.e. fraud or manual review) will override any partner-initiated status changes.
Partners must also send notes to the Green Dot Care team when updating an account status. When a valid request including the required notes property, is sent to PUT /accounts/{accountIdentifier}/status, the notes will be saved in CRM. Notes longer than 1000 characters will be truncated.
Obtain Account Fee Summary
This API obtains a fee summary for a specific account.
API Call Structure
GET /programs/{programCode}/accounts/{accountIdentifier}/feeSummary
Return Last Calculated Minimum Payment
After a customer schedules a one-time SCC payment and chooses the minimum-amount option, the BaaS GetSccPayment API returns this amount to Gateway so that it can request FundTransfer or CreateAmmRule with the correct amount.
API Call Structure
GET /programs/{programCode}/accounts/{accountIdentifier}/payments
Obtain Account Details
This endpoint retrieves detailed information about a specific account.
API Call Structure
GET /programs/{programCode}/accounts/{accountIdentifier}
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.
Sample Response Parameters
Field | Description |
---|---|
account | Contains detailed account information. |
accountHolders | Contains all account holders associated with a specific account. Note: An account may have one or more account holders. |
user | The user properties of the account holder. |
firstName | First name of the account holder. |
lastName | Last name of the account holder. |
dobStatus | Can be: • matched - If isDOBMatched is true and isDOBVerified is false, then matched is used • notMatched - If isDOBMatched is false and isDOBVerified is false, then notMatched is used Verified - If isDOBVerified is true then verified is used |
Last4Identity | Last 4 digits of the account holder’s social security number. |
identityType | Type of identity being used for the account holder (i.e. ssn). |
userIdentifier | Unique identifier of a user within a program. |
peerTransferAcceptPreference | Value can be manual or automatic. This property is optional and only applies to Partners using the P2P capabilities of the platform. The default value is manual and has no impact to any service other than P2P. Note: If this value is not provided then it will remain manual. |
isPrimaryAccountHolder | Identifies the primary account holder. |
status | Current status of the account user. Note: Always set to active. |
kycStateData | The current OFAC and KYC status of a user. |
ofacStatus | Last result of running an OFAC check against a user (i.e. pending, passed, failed). |
kycStatus | Last result of running a user through a KYC (Know Your Customer) gate (i.e. pending, passed, failed). |
kycPendingGate | Status of kycPendingGate (i.e. healthy). |
accountHolderIdentifier | Unique identifier for an account holder. |
accountIdentifier | Unique identifier of an account within a program. |
accountReferenceNumber | Friendly unique identifier of an account that is safe for sharing between intra and intercompany staff. |
productCode | Unique identifier of a product within a program. |
currency | Alpha-3 ISO Currency Code |
status | The current status of an account. |
statusReasons | String value that returns the reason for the status of an account. statusReasons can be: • verificationNeeded • registrationNotComplete • healthy • closedWithRefund • underReview • bankInitiatedClosed • customerInitiatedSpendDown • lostStolen • negativeBalance • unspecifiedClose • potentialAccountTakeover • potentialFraud • customerReportedIdentityTheft • spendDown • writeOff • returnedMail • customerInitiatedClose • registrationFailed • statusChangedByCsr • accountEscheated • unknown • potentialFirstPartyFraud • confirmedFirstPartyFraud • potentialThirdPartyFraud • confirmedThirdPartyFraud • confirmedAccountTakeover • potentialIdentityTheft • confirmedIdentityTheft • potentialOtherFraud • confirmedOtherFraud |
accountStatusChangeDateTime | The date and time (UTC) of the account status change. |
directDepositInformation | Contains the information required to setup direct deposit and ACH In transfers. |
accountNumber | The bank account that is required for direct deposit. |
routingNumber | The ABA bank routing number of the bank account that is required for direct deposit. |
termsAcceptances | Represents the acceptance of daa by a user. |
termsIdentifier | Unique identifier for the daa that was accepted. Note: termsAcceptanceFlag must be set to true. |
termsAcceptanceDateTime | Optional. Date/time in UTC that the daa was accepted. Note: If not provided, will default to the current date/time. |
termsAcceptanceFlag | Indicates whether the daa was accepted by the user. Required for opt in/out agreements. |
termsIdentifier | Unique identifier for the daa that was accepted. |
termsAcceptanceDateTime | Optional. Date/time in UTC that the daa was accepted. Note: If not provided, will default to the current date/time. |
termsAcceptanceFlag | Indicates whether the daa was accepted by the user. Required for opt in/out agreements. |
accountCycleDay | 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. |
responseDetails, code, subCode, description, url | See Response Details |
Update Account Details
This API updates detailed information about a specific account.
Structure of API Call
PUT /programs/{programCode}/accounts/{accountIdentifier}
Obtain Bank Name
This API allows Partners to retrieve the bank name associated with a specific routing number.
Structure of API Call
GET /programs/{programCode}/bankNames?routingNumber={routingNumber}
API Call Structure Parameters
Field Name | Type | Required (Y/N) | Description |
---|---|---|---|
routingNumber | string | Y | Bank routing number: 9-digit ABA routing number for wire |
programCode | string | Y | Program code |
How it Works
Call GET …/bankNames?routingNumber={routingNumber} and include the routing number for which the bank name is being requested.
Sample Response Body Parameters
Field Name | Type | Description |
---|---|---|
bankName | string | Maximum Characters: 18 |
responseDetails | object | N/A |
Response Codes
Scenario | Code | subCode | Description |
---|---|---|---|
Success | 0 | 0 | Success |
Incorrect routing number | 3 | 760 | routingNumber not found |
Request validation fails | 101 | 0 | Invalid parameter routingNumber |
Close Account
This endpoint provides the ability to close accounts without the assistance of the Green Dot Care team.
Structure of API Call
PUT /programs/{programCode}/accounts/{accountIdentifier}/close
How it Works
- To set an account to restricted customer initiated spend down:
- Submit a request to close the account by calling PUT /programs/{programCode}/accounts/{accountIdentifier}/close
- Once the request is processed by the system, the partner will receive a response containing the following account status information:
- The account status will be changed to restricted
- The account status reason will be customerInitiatedSpendDown
- There will not be a kycPendingGate (cure) (i.e. kycPendingGate: none)
- All funds currently in the spend purses will be moved back to the primary purse automatically.
- Note: For an account to be closed, it must be set to a restricted customer initiated spend down state.
- The current status of the account must be normal.
- An account with a negative balance cannot be closed using the API.
Response Codes
HTTP Status Code | Code | subCode | Description |
---|---|---|---|
200 | 5 | 100 | Closing an account is not allowed unless account status is normal |
200 | 5 | 360 | An account with a negative balance cannot be closed using the API |
Closed Accounts
APIs will be disabled for closed/purged accounts, so they can be placed into a closed terminal state.
How it Works
- The accountStatus of an account will be set to closed if it meets the following conditions:
- The current status is restricted, the statusReason is customerInitiatedSpendDown, and the balance has been $0 for 60 days.
- The current status is restricted, the statusReason is spendDown, and the balance has been $0 for 210 days.
- All state changing API endpoints will be blocked for a closed account.
Sample Response:
{
"responseDetails":[
{
"code":3,
"subCode":105,
"description":"Account is closed.",
"url":"http://tbd"
}
]
}
Response Codes
If an account is closed and any of the following endpoints are called, the following response details will be returned.
Endpoint | Code | subCode | Description |
---|---|---|---|
POST /transfers MRDC, achOut, achPull, Purse to Purse, Disbursements, P2P POST /transfers/assessment P2P o IFT, achOut | 3 | 105 | Source account is closed or Target account is closed. |
PUT /transfers/{transferIdentifier} PUT /transfers/mrdc POST /accounts/{accountIdentifier}/adjustments POST /billpayPayees PUT /billpayPayees/{payeeIdentifier} DELETE /billpayPayees/{payeeIdentifier} POST /billpayPayments DELETE /billpayPayments/{paymentIdentifier} PUT/billPayPayments/{paymentIdentifier} | 3 | 105 | Account is Closed. |
POST /kycGates/idv | 2 | 105 | Account is Closed. |
PUT /accounts/{accountIdentifier} PUT /accounts/{accountIdentifier}/users/{userIdentifier} PUT /accounts/{accountIdentifier}/paymentInstruments/{p aymentInstrumentIdentifier} POST /accounts/{accountIdentifier}/activateCard DELETE /purses/{purseIdentifier} | 4 | 105 | Account is Closed. |
PUT /accounts/{accountIdentifier}/close | 5 | 100 | Closing an account is not allowed unless Account Status is Normal. |
POST /accounts/{accountIdentifier}/purses | 5 | 100 | An account must be in a normal status to add a purse. |
PUT /accounts/{accountIdentifier}/paymentInstruments/{p aymentInstrumentIdentifier}/lifecycleEvent | 4 | 105 | Replacement request was not allowed due to closed account status. |
PUT /accounts/{accountIdentifier}/paymentInstruments/{p aymentInstrumentIdentifier}/lifecycleEvent | 4 | 313 | Cannot Pause card. |
PUT /accounts/{accountIdentifier}/purses/{purseIdentifier} | 5 | 100 | An account must be in a normal status to update a purse. |
Obtain List of Fund Fulfillment MRDC Transfers
This endpoint accesses a list of MRDC transfers based on specific dates.
Structure of API Call
GET /programs/{programCode}/accounts/{accountIdentifier}/fundfulfillment/{transferIdentifier}/mrdc[?startDate][&endDate][&offset][&limit]
Obtain Fund Fulfillment MRDC Transfer
This endpoint accesses a specific MRDC transfer.
Structure of API Call
GET /programs/{programCode}/accounts/{accountIdentifier}/fundfulfillment/{transferIdentifier}/mrdc
Wire Out Transactions
This feature must be explicitly requested and configured on a per-partner basis. Contact your Green Dot Account Liaison for assistance.
This endpoint allows partners to wire out transactions and test in PIE (Partner Integration Environment).
Structure of API Call
POST /programs/{programCode}/accounts/{accountIdentifier}/wires
Request Body Parameters
Field Name | Type | Required (Y/N) | Description |
---|---|---|---|
wireIdentifier | guid | Y | Unique identifier for the wire transaction. |
amount | decimal | Y | The amount of the wire transaction excluding fees. Minimum Amount: 0.01 |
currency | enum | Y | USD |
obi | string | N | Originator to Beneficiary Information: used to convey information to the beneficiary regarding the transaction. Also known as OBI. Maximum Characters: 140 |
memo | string | N | Reason for the wire transaction. Maximum Characters: 100 |
encryptedBeneficiaryData | encrypted object | Y | Beneficiary information Refer below to encryptedBeneficiaryData Object Description. |
intermediaryBank | object | N | Intermediary Bank information: routingNumber: Optional, Intermediary bank routing number, 9-digit ABA routing number bankName: Optional, Maximum Characters: 18 |
encryptedBeneficiaryData Parameters
Field | Description |
---|---|
version | Version of encryption algorithm used. |
ephemeralPublicKey | Base64 encoded ephemeral public key. Needed for key agreement. |
publicKeyHash | Base64 encoded SHA-256 hash of the X509 encoded public key bytes used during encryption. |
data | Base64 encrypted data of an object or property. |
Refer to Crypto Primer for Banking as a Service (BaaS) for encryption details.
Sample Decrypted Data Parameters
Field Name | Type | Required (Y/N) | Description |
---|---|---|---|
firstName | string | Y | Beneficiary’s first name. Must be 1 - 35 characters long. |
lastName | string | Y | Beneficiary’s first name. Must be 1 - 35 characters long. |
beneficiaryBank | object | Y | Beneficiary’s bank information: routingNumber: o Beneficiary’s routing number o 9-digit ABA routing number bankName: o Beneficiary’s Bank Name o Maximum Characters - 18 |
beneficiaryAccountNumber | string | Y | Beneficiary’s account number |
city | string | Y | City where Beneficiary lives. Maximum Characters: 25 |
state | string | Y | State where Beneficiary lives. Must be a 2-letter state code. |
addressLine1 | string | Y | Street address where beneficiary lives, Must be 2 - 40 characters. |
addressLine2 | string | N | Optional address where beneficiary lives. Maximum Characters: 40 |
zipCode | string | Y | 5 digit US postal code |
Response Codes
Scenario | Code | subCode | Description |
---|---|---|---|
Success | 0 | 0 | Success |
Insufficient Funds | 3 | 103 | Insufficient Funds |
Invalid Account Status | 3 | 105 | Invalid Account Status |
Agreement not signed | 3 | 55 | Agreement must be signed |
Request validation failed | 101 | 0 | Invalid parameter xxxxx |
Decryption error | 5 | 0 | An encrypted data block on the payload was not decrypted successfully |
Incorrect routing number for Intermediary | 3 | 761 | Intermediary bank routingNumber not found |
Incorrect routing number for beneficiary | 3 | 762 | Beneficiary bank routingNumber not found |
Intermediary Bank Name routing number does not match routing number provided | 3 | 763 | Intermediary bank routingNumber and Routing Number not matched |
Beneficiary Bank Name routing number does not match routing number provided | 3 | 764 | Beneficiary bank routingNumber and Routing Number not matched |
Only business accounts can wire out. | 3 | 765 | Individual Account Is Not Allowed |
Update User Identity
This API updates the identity for a specific user.
Structure of API Call
POST /programs/{programCode}/accounts/{accountIdentifier}/users/{userIdentifier}/identity
Obtain MRDC Transfer
This API retrieves the information for a specific MRDC transfer.
Structure of API Call
GET /programs/{programCode}/accounts/{accountIdentifier}/transfers/{transferIdentifier}/mrdc
Set Feature Eligibility
This API establishes the eligibility of a specific feature for a specific account.
Structure of API Call
PUT /programs/{programCode}/accounts/{accountIdentifier}/featureeligibility/{featureId}
Obtain All Feature Eligibility
This API obtains feature eligibility details.
Structure of API Call
GET /programs/{programCode}/accounts/{accountIdentifier}/featureeligibility
Create Customer Profile (external account)
This API creates a customer profile for an external account.
Structure of API Call
POST /programs/{programCode}/externalAccounts
Update Customer Profile (external account)
This API updates a customer profile for an external account.
Structure of API Call
PUT /programs/{programCode}/externalAccounts/customers/{customerToken}
Link Customer Profile with Card (external account)
This API links a customer profile with a specific card for an external account.
Structure of API Call
POST /programs/{programCode}/externalAccounts/customers/{customerToken}/linkCard
Obtain Transfer from GFT Service (external account)
This API obtains a transfer from the GFT service for an external account.
Structure of API Call
GET /programs/{programCode}/externalAccounts/{externalAcctID}/transfers/{transferID}
Return List Link (external account)
This API returns a list link for an external account.
Structure of API Call
POST /programs/{programCode}/account/{accountIdentifier}/externalbankaccount
ACH Return Codes
ACH Return Code | Description |
---|---|
1 | ACH Transaction exceed load limit |
2 | ACH Account was closed |
3 | ACH Transaction has invalid ACHTranCode |
4 | ACH Customer Account Not Found |
5 | ACH Direct Deposit Not Allowed on This Account |
6 | ACH Card Not Activated |
9 | ACH Transaction was Temp Card Without Perso |
10 | ACH Transaction was NPNR |
11 | ACH Transaction has CRV blocked |
12 | ACH Transaction was rejected by card processor |
13 | ACH Transaction debit funding response insufficient funds |
14 | ACH Debit funding response reject (General) |
15 | ACH Credit funding response reject (General) |
16 | ACH Debit Transaction was rejected per the Durbin Amendment |
17 | TaxRefundReject-IRS#800-829-1954 |
18 | TaxRefundReject-IRS#800-829-1954 |
19 | Tax Refund Reject: Non-Tax Season |
20 | Tax Refund Reject: Payee Deceased |
21 | ACH transaction is sent from prohibited sender |
22 | Invalid Routing Number |
23 | TaxRefundReject-IRS#800-829-1954 |
24 | ACH Transaction is voided and exported by rule |
25 | Invalid CardExternalId |
26 | ACH transaction exceeded the daily debit limit |
27 | AccountNow ACH Transaction is funding via FIS |
28 | ACH Transaction rejected due customer name/ssn mismatch |
29 | ACH Transaction rejected due customer name/ssn mismatch |
30 | ACH Transaction rejected during non-tax season |
31 | ACH Transaction rejected due to credit rating |
32 | Account Locked |
33 | Spend Down |
34 | Write Off |
35 | Changed by CSR |
Updated 8 months ago